sass 3.1.21 → 3.2.0.alpha.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (180) hide show
  1. data/README.md +5 -4
  2. data/REVISION +1 -1
  3. data/Rakefile +6 -15
  4. data/VERSION +1 -1
  5. data/VERSION_NAME +1 -1
  6. data/lib/sass.rb +0 -1
  7. data/lib/sass/cache_stores/base.rb +1 -3
  8. data/lib/sass/cache_stores/filesystem.rb +0 -3
  9. data/lib/sass/css.rb +49 -145
  10. data/lib/sass/engine.rb +23 -47
  11. data/lib/sass/environment.rb +5 -30
  12. data/lib/sass/exec.rb +7 -30
  13. data/lib/sass/importers/base.rb +1 -2
  14. data/lib/sass/importers/filesystem.rb +13 -18
  15. data/lib/sass/less.rb +1 -1
  16. data/lib/sass/plugin.rb +8 -4
  17. data/lib/sass/plugin/compiler.rb +67 -93
  18. data/lib/sass/plugin/configuration.rb +2 -0
  19. data/lib/sass/plugin/staleness_checker.rb +4 -14
  20. data/lib/sass/repl.rb +3 -2
  21. data/lib/sass/script.rb +1 -0
  22. data/lib/sass/script/color.rb +9 -4
  23. data/lib/sass/script/funcall.rb +3 -16
  24. data/lib/sass/script/functions.rb +55 -98
  25. data/lib/sass/script/interpolation.rb +0 -9
  26. data/lib/sass/script/lexer.rb +4 -2
  27. data/lib/sass/script/list.rb +0 -8
  28. data/lib/sass/script/literal.rb +20 -5
  29. data/lib/sass/script/node.rb +0 -8
  30. data/lib/sass/script/number.rb +11 -35
  31. data/lib/sass/script/operation.rb +0 -16
  32. data/lib/sass/script/parser.rb +5 -12
  33. data/lib/sass/script/string_interpolation.rb +0 -9
  34. data/lib/sass/script/unary_operation.rb +0 -7
  35. data/lib/sass/script/variable.rb +1 -5
  36. data/lib/sass/scss/parser.rb +54 -191
  37. data/lib/sass/scss/rx.rb +3 -15
  38. data/lib/sass/scss/static_parser.rb +3 -3
  39. data/lib/sass/selector.rb +3 -15
  40. data/lib/sass/selector/abstract_sequence.rb +2 -11
  41. data/lib/sass/selector/comma_sequence.rb +3 -8
  42. data/lib/sass/selector/sequence.rb +11 -74
  43. data/lib/sass/selector/simple.rb +1 -7
  44. data/lib/sass/selector/simple_sequence.rb +8 -28
  45. data/lib/sass/shared.rb +5 -3
  46. data/lib/sass/tree/comment_node.rb +12 -25
  47. data/lib/sass/tree/debug_node.rb +1 -1
  48. data/lib/sass/tree/directive_node.rb +0 -5
  49. data/lib/sass/tree/each_node.rb +1 -1
  50. data/lib/sass/tree/extend_node.rb +1 -1
  51. data/lib/sass/tree/for_node.rb +2 -2
  52. data/lib/sass/tree/function_node.rb +1 -1
  53. data/lib/sass/tree/if_node.rb +14 -1
  54. data/lib/sass/tree/media_node.rb +4 -4
  55. data/lib/sass/tree/mixin_def_node.rb +1 -1
  56. data/lib/sass/tree/mixin_node.rb +2 -2
  57. data/lib/sass/tree/node.rb +26 -10
  58. data/lib/sass/tree/return_node.rb +1 -1
  59. data/lib/sass/tree/root_node.rb +1 -1
  60. data/lib/sass/tree/rule_node.rb +11 -9
  61. data/lib/sass/tree/variable_node.rb +1 -1
  62. data/lib/sass/tree/visitors/base.rb +1 -1
  63. data/lib/sass/tree/visitors/check_nesting.rb +36 -29
  64. data/lib/sass/tree/visitors/convert.rb +9 -16
  65. data/lib/sass/tree/visitors/cssize.rb +9 -40
  66. data/lib/sass/tree/visitors/perform.rb +23 -79
  67. data/lib/sass/tree/visitors/to_css.rb +21 -23
  68. data/lib/sass/tree/warn_node.rb +1 -1
  69. data/lib/sass/tree/while_node.rb +1 -1
  70. data/lib/sass/util.rb +9 -147
  71. data/lib/sass/version.rb +0 -14
  72. data/test/sass/cache_test.rb +0 -15
  73. data/test/sass/conversion_test.rb +8 -50
  74. data/test/sass/css2sass_test.rb +0 -33
  75. data/test/sass/engine_test.rb +32 -283
  76. data/test/sass/extend_test.rb +0 -315
  77. data/test/sass/functions_test.rb +23 -60
  78. data/test/sass/importer_test.rb +0 -110
  79. data/test/sass/more_results/more_import.css +2 -2
  80. data/test/sass/plugin_test.rb +13 -40
  81. data/test/sass/results/import.css +2 -2
  82. data/test/sass/results/import_charset.css +0 -1
  83. data/test/sass/results/import_charset_1_8.css +0 -1
  84. data/test/sass/results/import_charset_ibm866.css +0 -1
  85. data/test/sass/results/scss_import.css +2 -2
  86. data/test/sass/results/units.css +1 -1
  87. data/test/sass/script_conversion_test.rb +0 -2
  88. data/test/sass/script_test.rb +4 -28
  89. data/test/sass/scss/css_test.rb +1 -79
  90. data/test/sass/scss/scss_test.rb +16 -96
  91. data/test/sass/templates/import_charset.sass +0 -2
  92. data/test/sass/templates/import_charset_1_8.sass +0 -2
  93. data/test/sass/templates/import_charset_ibm866.sass +0 -2
  94. data/test/sass/test_helper.rb +1 -1
  95. data/test/sass/util_test.rb +0 -28
  96. data/test/test_helper.rb +0 -2
  97. data/vendor/{listen → fssm}/LICENSE +1 -1
  98. data/vendor/fssm/README.markdown +55 -0
  99. data/vendor/fssm/Rakefile +59 -0
  100. data/vendor/fssm/VERSION.yml +5 -0
  101. data/vendor/fssm/example.rb +9 -0
  102. data/vendor/fssm/fssm.gemspec +77 -0
  103. data/vendor/fssm/lib/fssm.rb +33 -0
  104. data/vendor/fssm/lib/fssm/backends/fsevents.rb +36 -0
  105. data/vendor/fssm/lib/fssm/backends/inotify.rb +26 -0
  106. data/vendor/fssm/lib/fssm/backends/polling.rb +25 -0
  107. data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +131 -0
  108. data/vendor/fssm/lib/fssm/monitor.rb +26 -0
  109. data/vendor/fssm/lib/fssm/path.rb +91 -0
  110. data/vendor/fssm/lib/fssm/pathname.rb +502 -0
  111. data/vendor/fssm/lib/fssm/state/directory.rb +57 -0
  112. data/vendor/fssm/lib/fssm/state/file.rb +24 -0
  113. data/vendor/fssm/lib/fssm/support.rb +63 -0
  114. data/vendor/fssm/lib/fssm/tree.rb +176 -0
  115. data/vendor/fssm/profile/prof-cache.rb +40 -0
  116. data/vendor/fssm/profile/prof-fssm-pathname.html +1231 -0
  117. data/vendor/fssm/profile/prof-pathname.rb +68 -0
  118. data/vendor/fssm/profile/prof-plain-pathname.html +988 -0
  119. data/vendor/fssm/profile/prof.html +2379 -0
  120. data/vendor/fssm/spec/path_spec.rb +75 -0
  121. data/vendor/fssm/spec/root/duck/quack.txt +0 -0
  122. data/vendor/fssm/spec/root/file.css +0 -0
  123. data/vendor/fssm/spec/root/file.rb +0 -0
  124. data/vendor/fssm/spec/root/file.yml +0 -0
  125. data/vendor/fssm/spec/root/moo/cow.txt +0 -0
  126. data/vendor/fssm/spec/spec_helper.rb +14 -0
  127. metadata +246 -281
  128. data/VERSION_DATE +0 -1
  129. data/lib/sass/logger.rb +0 -15
  130. data/lib/sass/logger/base.rb +0 -32
  131. data/lib/sass/logger/log_level.rb +0 -49
  132. data/lib/sass/tree/visitors/deep_copy.rb +0 -87
  133. data/lib/sass/tree/visitors/extend.rb +0 -42
  134. data/lib/sass/tree/visitors/set_options.rb +0 -97
  135. data/lib/sass/util/multibyte_string_scanner.rb +0 -134
  136. data/test/Gemfile +0 -4
  137. data/test/Gemfile.lock +0 -19
  138. data/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
  139. data/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
  140. data/test/sass/logger_test.rb +0 -58
  141. data/test/sass/templates/_double_import_loop2.sass +0 -1
  142. data/test/sass/templates/bork5.sass +0 -3
  143. data/test/sass/templates/double_import_loop1.sass +0 -1
  144. data/test/sass/templates/nested_bork5.sass +0 -2
  145. data/test/sass/templates/single_import_loop.sass +0 -1
  146. data/test/sass/util/multibyte_string_scanner_test.rb +0 -147
  147. data/vendor/listen/CHANGELOG.md +0 -147
  148. data/vendor/listen/Gemfile +0 -23
  149. data/vendor/listen/Guardfile +0 -8
  150. data/vendor/listen/README.md +0 -312
  151. data/vendor/listen/Rakefile +0 -47
  152. data/vendor/listen/Vagrantfile +0 -96
  153. data/vendor/listen/lib/listen.rb +0 -38
  154. data/vendor/listen/lib/listen/adapter.rb +0 -167
  155. data/vendor/listen/lib/listen/adapters/darwin.rb +0 -84
  156. data/vendor/listen/lib/listen/adapters/linux.rb +0 -110
  157. data/vendor/listen/lib/listen/adapters/polling.rb +0 -66
  158. data/vendor/listen/lib/listen/adapters/windows.rb +0 -81
  159. data/vendor/listen/lib/listen/directory_record.rb +0 -318
  160. data/vendor/listen/lib/listen/listener.rb +0 -203
  161. data/vendor/listen/lib/listen/multi_listener.rb +0 -121
  162. data/vendor/listen/lib/listen/turnstile.rb +0 -28
  163. data/vendor/listen/lib/listen/version.rb +0 -3
  164. data/vendor/listen/listen.gemspec +0 -26
  165. data/vendor/listen/spec/listen/adapter_spec.rb +0 -142
  166. data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -31
  167. data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -41
  168. data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
  169. data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -24
  170. data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1138
  171. data/vendor/listen/spec/listen/listener_spec.rb +0 -155
  172. data/vendor/listen/spec/listen/multi_listener_spec.rb +0 -156
  173. data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
  174. data/vendor/listen/spec/listen_spec.rb +0 -73
  175. data/vendor/listen/spec/spec_helper.rb +0 -18
  176. data/vendor/listen/spec/support/adapter_helper.rb +0 -716
  177. data/vendor/listen/spec/support/directory_record_helper.rb +0 -55
  178. data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
  179. data/vendor/listen/spec/support/listeners_helper.rb +0 -144
  180. data/vendor/listen/spec/support/platform_helper.rb +0 -11
@@ -1 +0,0 @@
1
- 11 August 2012 00:38:15 UTC
@@ -1,15 +0,0 @@
1
- module Sass::Logger
2
-
3
- end
4
-
5
- require "sass/logger/log_level"
6
- require "sass/logger/base"
7
-
8
- module Sass
9
-
10
- class << self
11
- attr_accessor :logger
12
- end
13
-
14
- self.logger = Sass::Logger::Base.new
15
- end
@@ -1,32 +0,0 @@
1
- require 'sass/logger/log_level'
2
-
3
- class Sass::Logger::Base
4
-
5
- include Sass::Logger::LogLevel
6
-
7
- attr_accessor :log_level
8
- attr_accessor :disabled
9
-
10
- log_level :trace
11
- log_level :debug
12
- log_level :info
13
- log_level :warn
14
- log_level :error
15
-
16
- def initialize(log_level = :debug)
17
- self.log_level = log_level
18
- end
19
-
20
- def logging_level?(level)
21
- !disabled && self.class.log_level?(level, log_level)
22
- end
23
-
24
- def log(level, message)
25
- self._log(level, message) if logging_level?(level)
26
- end
27
-
28
- def _log(level, message)
29
- Kernel::warn(message)
30
- end
31
-
32
- end
@@ -1,49 +0,0 @@
1
- module Sass
2
- module Logger
3
- module LogLevel
4
-
5
- def self.included(base)
6
- base.extend(ClassMethods)
7
- end
8
-
9
- module ClassMethods
10
- def inherited(subclass)
11
- subclass.log_levels = subclass.superclass.log_levels.dup
12
- end
13
-
14
- def log_levels
15
- @log_levels ||= {}
16
- end
17
-
18
- def log_levels=(levels)
19
- @log_levels = levels
20
- end
21
-
22
- def log_level?(level, min_level)
23
- log_levels[level] >= log_levels[min_level]
24
- end
25
-
26
- def log_level(name, options = {})
27
- if options[:prepend]
28
- level = log_levels.values.min
29
- level = level.nil? ? 0 : level - 1
30
- else
31
- level = log_levels.values.max
32
- level = level.nil? ? 0 : level + 1
33
- end
34
- log_levels.update(name => level)
35
- define_logger(name)
36
- end
37
-
38
- def define_logger(name, options = {})
39
- class_eval %Q{
40
- def #{name}(message)
41
- #{options.fetch(:to, :log)}(#{name.inspect}, message)
42
- end
43
- }
44
- end
45
- end
46
-
47
- end
48
- end
49
- end
@@ -1,87 +0,0 @@
1
- # A visitor for copying the full structure of a Sass tree.
2
- class Sass::Tree::Visitors::DeepCopy < Sass::Tree::Visitors::Base
3
- protected
4
-
5
- def visit(node)
6
- super(node.dup)
7
- end
8
-
9
- def visit_children(parent)
10
- parent.children = parent.children.map {|c| visit(c)}
11
- parent
12
- end
13
-
14
- def visit_debug(node)
15
- node.expr = node.expr.deep_copy
16
- yield
17
- end
18
-
19
- def visit_each(node)
20
- node.list = node.list.deep_copy
21
- yield
22
- end
23
-
24
- def visit_extend(node)
25
- node.selector = node.selector.map {|c| c.is_a?(Sass::Script::Node) ? c.deep_copy : c}
26
- yield
27
- end
28
-
29
- def visit_for(node)
30
- node.from = node.from.deep_copy
31
- node.to = node.to.deep_copy
32
- yield
33
- end
34
-
35
- def visit_function(node)
36
- node.args = node.args.map {|k, v| [k.deep_copy, v && v.deep_copy]}
37
- yield
38
- end
39
-
40
- def visit_if(node)
41
- node.expr = node.expr.deep_copy if node.expr
42
- node.else = visit(node.else) if node.else
43
- yield
44
- end
45
-
46
- def visit_mixindef(node)
47
- node.args = node.args.map {|k, v| [k.deep_copy, v && v.deep_copy]}
48
- yield
49
- end
50
-
51
- def visit_mixin(node)
52
- node.args = node.args.map {|a| a.deep_copy}
53
- node.keywords = Hash[node.keywords.map {|k, v| [k, v.deep_copy]}]
54
- yield
55
- end
56
-
57
- def visit_prop(node)
58
- node.name = node.name.map {|c| c.is_a?(Sass::Script::Node) ? c.deep_copy : c}
59
- node.value = node.value.deep_copy
60
- yield
61
- end
62
-
63
- def visit_return(node)
64
- node.expr = node.expr.deep_copy
65
- yield
66
- end
67
-
68
- def visit_rule(node)
69
- node.rule = node.rule.map {|c| c.is_a?(Sass::Script::Node) ? c.deep_copy : c}
70
- yield
71
- end
72
-
73
- def visit_variable(node)
74
- node.expr = node.expr.deep_copy
75
- yield
76
- end
77
-
78
- def visit_warn(node)
79
- node.expr = node.expr.deep_copy
80
- yield
81
- end
82
-
83
- def visit_while(node)
84
- node.expr = node.expr.deep_copy
85
- yield
86
- end
87
- end
@@ -1,42 +0,0 @@
1
- # A visitor for performing selector inheritance on a static CSS tree.
2
- #
3
- # Destructively modifies the tree.
4
- class Sass::Tree::Visitors::Extend < Sass::Tree::Visitors::Base
5
- # @param root [Tree::Node] The root node of the tree to visit.
6
- # @param extends [Sass::Util::SubsetMap{Selector::Simple =>
7
- # Sass::Tree::Visitors::Cssize::Extend}]
8
- # The extensions to perform on this tree.
9
- # @return [Object] The return value of \{#visit} for the root node.
10
- def self.visit(root, extends)
11
- return if extends.empty?
12
- new(extends).send(:visit, root)
13
- end
14
-
15
- protected
16
-
17
- def initialize(extends)
18
- @parent_directives = []
19
- @extends = extends
20
- end
21
-
22
- # If an exception is raised, this adds proper metadata to the backtrace.
23
- def visit(node)
24
- super(node)
25
- rescue Sass::SyntaxError => e
26
- e.modify_backtrace(:filename => node.filename, :line => node.line)
27
- raise e
28
- end
29
-
30
- # Keeps track of the current parent directives.
31
- def visit_children(parent)
32
- @parent_directives.push parent if parent.is_a?(Sass::Tree::DirectiveNode)
33
- super
34
- ensure
35
- @parent_directives.pop if parent.is_a?(Sass::Tree::DirectiveNode)
36
- end
37
-
38
- # Applies the extend to a single rule's selector.
39
- def visit_rule(node)
40
- node.resolved_rules = node.resolved_rules.do_extend(@extends, @parent_directives)
41
- end
42
- end
@@ -1,97 +0,0 @@
1
- # A visitor for setting options on the Sass tree
2
- class Sass::Tree::Visitors::SetOptions < Sass::Tree::Visitors::Base
3
- # @param root [Tree::Node] The root node of the tree to visit.
4
- # @param options [{Symbol => Object}] The options has to set.
5
- def self.visit(root, options); new(options).send(:visit, root); end
6
-
7
- protected
8
-
9
- def initialize(options)
10
- @options = options
11
- end
12
-
13
- def visit(node)
14
- node.instance_variable_set('@options', @options)
15
- super
16
- end
17
-
18
- def visit_debug(node)
19
- node.expr.options = @options
20
- yield
21
- end
22
-
23
- def visit_each(node)
24
- node.list.options = @options
25
- yield
26
- end
27
-
28
- def visit_extend(node)
29
- node.selector.each {|c| c.options = @options if c.is_a?(Sass::Script::Node)}
30
- yield
31
- end
32
-
33
- def visit_for(node)
34
- node.from.options = @options
35
- node.to.options = @options
36
- yield
37
- end
38
-
39
- def visit_function(node)
40
- node.args.each do |k, v|
41
- k.options = @options
42
- v.options = @options if v
43
- end
44
- yield
45
- end
46
-
47
- def visit_if(node)
48
- node.expr.options = @options if node.expr
49
- visit(node.else) if node.else
50
- yield
51
- end
52
-
53
- def visit_mixindef(node)
54
- node.args.each do |k, v|
55
- k.options = @options
56
- v.options = @options if v
57
- end
58
- yield
59
- end
60
-
61
- def visit_mixin(node)
62
- node.args.each {|a| a.options = @options}
63
- node.keywords.each {|k, v| v.options = @options}
64
- yield
65
- end
66
-
67
- def visit_prop(node)
68
- node.name.each {|c| c.options = @options if c.is_a?(Sass::Script::Node)}
69
- node.value.options = @options
70
- yield
71
- end
72
-
73
- def visit_return(node)
74
- node.expr.options = @options
75
- yield
76
- end
77
-
78
- def visit_rule(node)
79
- node.rule.each {|c| c.options = @options if c.is_a?(Sass::Script::Node)}
80
- yield
81
- end
82
-
83
- def visit_variable(node)
84
- node.expr.options = @options
85
- yield
86
- end
87
-
88
- def visit_warn(node)
89
- node.expr.options = @options
90
- yield
91
- end
92
-
93
- def visit_while(node)
94
- node.expr.options = @options
95
- yield
96
- end
97
- end
@@ -1,134 +0,0 @@
1
- require 'strscan'
2
-
3
- if Sass::Util.ruby1_8?
4
- Sass::Util::MultibyteStringScanner = StringScanner
5
- else
6
- # A wrapper of the native StringScanner class that works correctly with
7
- # multibyte character encodings. The native class deals only in bytes, not
8
- # characters, for methods like [#pos] and [#matched_size]. This class deals
9
- # only in characters, instead.
10
- class Sass::Util::MultibyteStringScanner < StringScanner
11
- def self.new(str)
12
- return StringScanner.new(str) if str.ascii_only?
13
- super
14
- end
15
-
16
- def initialize(str)
17
- super
18
- @mb_pos = 0
19
- @mb_matched_size = nil
20
- @mb_last_pos = nil
21
- end
22
-
23
- alias_method :byte_pos, :pos
24
- alias_method :byte_matched_size, :matched_size
25
-
26
- def check(pattern); _match super; end
27
- def check_until(pattern); _matched super; end
28
- def getch; _forward _match super; end
29
- def match?(pattern); _size check(pattern); end
30
- def matched_size; @mb_matched_size; end
31
- def peek(len); string[@mb_pos, len]; end
32
- alias_method :peep, :peek
33
- def pos; @mb_pos; end
34
- alias_method :pointer, :pos
35
- def rest_size; rest.size; end
36
- def scan(pattern); _forward _match super; end
37
- def scan_until(pattern); _forward _matched super; end
38
- def skip(pattern); _size scan(pattern); end
39
- def skip_until(pattern); _matched _size scan_until(pattern); end
40
-
41
- def get_byte
42
- raise "MultibyteStringScanner doesn't support #get_byte."
43
- end
44
-
45
- def getbyte
46
- raise "MultibyteStringScanner doesn't support #getbyte."
47
- end
48
-
49
- def pos=(n)
50
- @mb_last_pos = nil
51
-
52
- # We set position kind of a lot during parsing, so we want it to be as
53
- # efficient as possible. This is complicated by the fact that UTF-8 is a
54
- # variable-length encoding, so it's difficult to find the byte length that
55
- # corresponds to a given character length.
56
- #
57
- # Our heuristic here is to try to count the fewest possible characters. So
58
- # if the new position is close to the current one, just count the
59
- # characters between the two; if the new position is closer to the
60
- # beginning of the string, just count the characters from there.
61
- if @mb_pos - n < @mb_pos / 2
62
- # New position is close to old position
63
- byte_delta = @mb_pos > n ? -string[n...@mb_pos].bytesize : string[@mb_pos...n].bytesize
64
- super(byte_pos + byte_delta)
65
- else
66
- # New position is close to BOS
67
- super(string[0...n].bytesize)
68
- end
69
- @mb_pos = n
70
- end
71
-
72
- def reset
73
- @mb_pos = 0
74
- @mb_matched_size = nil
75
- @mb_last_pos = nil
76
- super
77
- end
78
-
79
- def scan_full(pattern, advance_pointer_p, return_string_p)
80
- res = _match super(pattern, advance_pointer_p, true)
81
- _forward res if advance_pointer_p
82
- return res if return_string_p
83
- end
84
-
85
- def search_full(pattern, advance_pointer_p, return_string_p)
86
- res = super(pattern, advance_pointer_p, true)
87
- _forward res if advance_pointer_p
88
- _matched((res if return_string_p))
89
- end
90
-
91
- def string=(str)
92
- @mb_pos = 0
93
- @mb_matched_size = nil
94
- @mb_last_pos = nil
95
- super
96
- end
97
-
98
- def terminate
99
- @mb_pos = string.size
100
- @mb_matched_size = nil
101
- @mb_last_pos = nil
102
- super
103
- end
104
- alias_method :clear, :terminate
105
-
106
- def unscan
107
- super
108
- @mb_pos = @mb_last_pos
109
- @mb_last_pos = @mb_matched_size = nil
110
- end
111
-
112
- private
113
-
114
- def _size(str)
115
- str && str.size
116
- end
117
-
118
- def _match(str)
119
- @mb_matched_size = str && str.size
120
- str
121
- end
122
-
123
- def _matched(res)
124
- _match matched
125
- res
126
- end
127
-
128
- def _forward(str)
129
- @mb_last_pos = @mb_pos
130
- @mb_pos += str.size if str
131
- str
132
- end
133
- end
134
- end