cloudhead-less 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. data/Rakefile +2 -0
  2. data/VERSION +1 -1
  3. data/bin/lessc +8 -2
  4. data/less.gemspec +8 -92
  5. data/lib/ext.rb +8 -7
  6. data/lib/less/command.rb +12 -15
  7. data/lib/less/engine/grammar/less.tt +7 -3
  8. data/lib/less/engine.rb +3 -2
  9. data/lib/less.rb +2 -2
  10. data/spec/css/css-3.css +1 -0
  11. data/spec/less/css-3.less +4 -0
  12. data/spec/less/import.less +1 -0
  13. metadata +23 -94
  14. data/lib/vendor/treetop/.gitignore +0 -7
  15. data/lib/vendor/treetop/LICENSE +0 -19
  16. data/lib/vendor/treetop/README +0 -164
  17. data/lib/vendor/treetop/Rakefile +0 -19
  18. data/lib/vendor/treetop/benchmark/seqpar.gnuplot +0 -15
  19. data/lib/vendor/treetop/benchmark/seqpar.treetop +0 -16
  20. data/lib/vendor/treetop/benchmark/seqpar_benchmark.rb +0 -107
  21. data/lib/vendor/treetop/bin/tt +0 -28
  22. data/lib/vendor/treetop/lib/treetop/bootstrap_gen_1_metagrammar.rb +0 -45
  23. data/lib/vendor/treetop/lib/treetop/compiler/grammar_compiler.rb +0 -42
  24. data/lib/vendor/treetop/lib/treetop/compiler/lexical_address_space.rb +0 -17
  25. data/lib/vendor/treetop/lib/treetop/compiler/metagrammar.rb +0 -3097
  26. data/lib/vendor/treetop/lib/treetop/compiler/metagrammar.treetop +0 -408
  27. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/anything_symbol.rb +0 -18
  28. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/atomic_expression.rb +0 -14
  29. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb +0 -24
  30. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/choice.rb +0 -31
  31. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/declaration_sequence.rb +0 -24
  32. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/grammar.rb +0 -28
  33. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/inline_module.rb +0 -27
  34. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/nonterminal.rb +0 -13
  35. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/optional.rb +0 -19
  36. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parenthesized_expression.rb +0 -9
  37. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb +0 -138
  38. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_rule.rb +0 -55
  39. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/predicate.rb +0 -45
  40. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/repetition.rb +0 -55
  41. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/sequence.rb +0 -68
  42. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/terminal.rb +0 -20
  43. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/transient_prefix.rb +0 -9
  44. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/treetop_file.rb +0 -9
  45. data/lib/vendor/treetop/lib/treetop/compiler/node_classes.rb +0 -19
  46. data/lib/vendor/treetop/lib/treetop/compiler/ruby_builder.rb +0 -113
  47. data/lib/vendor/treetop/lib/treetop/compiler.rb +0 -6
  48. data/lib/vendor/treetop/lib/treetop/ruby_extensions/string.rb +0 -42
  49. data/lib/vendor/treetop/lib/treetop/ruby_extensions.rb +0 -2
  50. data/lib/vendor/treetop/lib/treetop/runtime/compiled_parser.rb +0 -105
  51. data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/head_node.rb +0 -15
  52. data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +0 -200
  53. data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/node.rb +0 -164
  54. data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list.rb +0 -4
  55. data/lib/vendor/treetop/lib/treetop/runtime/syntax_node.rb +0 -72
  56. data/lib/vendor/treetop/lib/treetop/runtime/terminal_parse_failure.rb +0 -16
  57. data/lib/vendor/treetop/lib/treetop/runtime/terminal_syntax_node.rb +0 -17
  58. data/lib/vendor/treetop/lib/treetop/runtime.rb +0 -5
  59. data/lib/vendor/treetop/lib/treetop/version.rb +0 -9
  60. data/lib/vendor/treetop/lib/treetop.rb +0 -8
  61. data/lib/vendor/treetop/spec/compiler/and_predicate_spec.rb +0 -36
  62. data/lib/vendor/treetop/spec/compiler/anything_symbol_spec.rb +0 -44
  63. data/lib/vendor/treetop/spec/compiler/character_class_spec.rb +0 -182
  64. data/lib/vendor/treetop/spec/compiler/choice_spec.rb +0 -80
  65. data/lib/vendor/treetop/spec/compiler/circular_compilation_spec.rb +0 -28
  66. data/lib/vendor/treetop/spec/compiler/failure_propagation_functional_spec.rb +0 -21
  67. data/lib/vendor/treetop/spec/compiler/grammar_compiler_spec.rb +0 -84
  68. data/lib/vendor/treetop/spec/compiler/grammar_spec.rb +0 -41
  69. data/lib/vendor/treetop/spec/compiler/nonterminal_symbol_spec.rb +0 -40
  70. data/lib/vendor/treetop/spec/compiler/not_predicate_spec.rb +0 -38
  71. data/lib/vendor/treetop/spec/compiler/one_or_more_spec.rb +0 -35
  72. data/lib/vendor/treetop/spec/compiler/optional_spec.rb +0 -37
  73. data/lib/vendor/treetop/spec/compiler/parenthesized_expression_spec.rb +0 -19
  74. data/lib/vendor/treetop/spec/compiler/parsing_rule_spec.rb +0 -32
  75. data/lib/vendor/treetop/spec/compiler/sequence_spec.rb +0 -115
  76. data/lib/vendor/treetop/spec/compiler/terminal_spec.rb +0 -81
  77. data/lib/vendor/treetop/spec/compiler/terminal_symbol_spec.rb +0 -37
  78. data/lib/vendor/treetop/spec/compiler/test_grammar.treetop +0 -7
  79. data/lib/vendor/treetop/spec/compiler/test_grammar.tt +0 -7
  80. data/lib/vendor/treetop/spec/compiler/test_grammar_do.treetop +0 -7
  81. data/lib/vendor/treetop/spec/compiler/zero_or_more_spec.rb +0 -56
  82. data/lib/vendor/treetop/spec/composition/a.treetop +0 -11
  83. data/lib/vendor/treetop/spec/composition/b.treetop +0 -11
  84. data/lib/vendor/treetop/spec/composition/c.treetop +0 -10
  85. data/lib/vendor/treetop/spec/composition/d.treetop +0 -10
  86. data/lib/vendor/treetop/spec/composition/f.treetop +0 -17
  87. data/lib/vendor/treetop/spec/composition/grammar_composition_spec.rb +0 -40
  88. data/lib/vendor/treetop/spec/composition/subfolder/e_includes_c.treetop +0 -15
  89. data/lib/vendor/treetop/spec/ruby_extensions/string_spec.rb +0 -32
  90. data/lib/vendor/treetop/spec/runtime/compiled_parser_spec.rb +0 -101
  91. data/lib/vendor/treetop/spec/runtime/interval_skip_list/delete_spec.rb +0 -147
  92. data/lib/vendor/treetop/spec/runtime/interval_skip_list/expire_range_spec.rb +0 -349
  93. data/lib/vendor/treetop/spec/runtime/interval_skip_list/insert_and_delete_node.rb +0 -385
  94. data/lib/vendor/treetop/spec/runtime/interval_skip_list/insert_spec.rb +0 -660
  95. data/lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +0 -6175
  96. data/lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +0 -58
  97. data/lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture.rb +0 -23
  98. data/lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +0 -164
  99. data/lib/vendor/treetop/spec/runtime/interval_skip_list/spec_helper.rb +0 -84
  100. data/lib/vendor/treetop/spec/runtime/syntax_node_spec.rb +0 -53
  101. data/lib/vendor/treetop/spec/spec_helper.rb +0 -106
  102. data/lib/vendor/treetop/spec/spec_suite.rb +0 -4
  103. data/lib/vendor/treetop/treetop.gemspec +0 -17
@@ -1,15 +0,0 @@
1
- class IntervalSkipList
2
- class HeadNode
3
- attr_reader :height, :forward, :forward_markers
4
-
5
- def initialize(height)
6
- @height = height
7
- @forward = Array.new(height, nil)
8
- @forward_markers = Array.new(height) {|i| []}
9
- end
10
-
11
- def top_level
12
- height - 1
13
- end
14
- end
15
- end
@@ -1,200 +0,0 @@
1
- class IntervalSkipList
2
- attr_reader :probability
3
-
4
- def initialize
5
- @head = HeadNode.new(max_height)
6
- @ranges = {}
7
- @probability = 0.5
8
- end
9
-
10
- def max_height
11
- 3
12
- end
13
-
14
- def empty?
15
- head.forward[0].nil?
16
- end
17
-
18
- def expire(range, length_change)
19
- expired_markers, first_node_after_range = overlapping(range)
20
- expired_markers.each { |marker| delete(marker) }
21
- first_node_after_range.propagate_length_change(length_change)
22
- end
23
-
24
- def overlapping(range)
25
- markers, first_node = containing_with_node(range.first)
26
-
27
- cur_node = first_node
28
- begin
29
- markers.concat(cur_node.forward_markers.flatten)
30
- cur_node = cur_node.forward[0]
31
- end while cur_node.key < range.last
32
-
33
- return markers.uniq, cur_node
34
- end
35
-
36
- def containing(n)
37
- containing_with_node(n).first
38
- end
39
-
40
- def insert(range, marker)
41
- ranges[marker] = range
42
- first_node = insert_node(range.first)
43
- first_node.endpoint_of.push(marker)
44
- last_node = insert_node(range.last)
45
- last_node.endpoint_of.push(marker)
46
-
47
- cur_node = first_node
48
- cur_level = first_node.top_level
49
- while next_node_at_level_inside_range?(cur_node, cur_level, range)
50
- while can_ascend_from?(cur_node, cur_level) && next_node_at_level_inside_range?(cur_node, cur_level + 1, range)
51
- cur_level += 1
52
- end
53
- cur_node = mark_forward_path_at_level(cur_node, cur_level, marker)
54
- end
55
-
56
- while node_inside_range?(cur_node, range)
57
- while can_descend_from?(cur_level) && next_node_at_level_outside_range?(cur_node, cur_level, range)
58
- cur_level -= 1
59
- end
60
- cur_node = mark_forward_path_at_level(cur_node, cur_level, marker)
61
- end
62
- end
63
-
64
- def delete(marker)
65
- range = ranges[marker]
66
- path_to_first_node = make_path
67
- first_node = find(range.first, path_to_first_node)
68
-
69
- cur_node = first_node
70
- cur_level = first_node.top_level
71
- while next_node_at_level_inside_range?(cur_node, cur_level, range)
72
- while can_ascend_from?(cur_node, cur_level) && next_node_at_level_inside_range?(cur_node, cur_level + 1, range)
73
- cur_level += 1
74
- end
75
- cur_node = unmark_forward_path_at_level(cur_node, cur_level, marker)
76
- end
77
-
78
- while node_inside_range?(cur_node, range)
79
- while can_descend_from?(cur_level) && next_node_at_level_outside_range?(cur_node, cur_level, range)
80
- cur_level -= 1
81
- end
82
- cur_node = unmark_forward_path_at_level(cur_node, cur_level, marker)
83
- end
84
- last_node = cur_node
85
-
86
- first_node.endpoint_of.delete(marker)
87
- if first_node.endpoint_of.empty?
88
- first_node.delete(path_to_first_node)
89
- end
90
-
91
- last_node.endpoint_of.delete(marker)
92
- if last_node.endpoint_of.empty?
93
- path_to_last_node = make_path
94
- find(range.last, path_to_last_node)
95
- last_node.delete(path_to_last_node)
96
- end
97
- end
98
-
99
- protected
100
- attr_reader :head, :ranges
101
-
102
- def insert_node(key)
103
- path = make_path
104
- found_node = find(key, path)
105
- if found_node && found_node.key == key
106
- return found_node
107
- else
108
- return Node.new(key, next_node_height, path)
109
- end
110
- end
111
-
112
- def containing_with_node(n)
113
- containing = []
114
- cur_node = head
115
- (max_height - 1).downto(0) do |cur_level|
116
- while (next_node = cur_node.forward[cur_level]) && next_node.key <= n
117
- cur_node = next_node
118
- if cur_node.key == n
119
- return containing + (cur_node.markers - cur_node.endpoint_of), cur_node
120
- end
121
- end
122
- containing.concat(cur_node.forward_markers[cur_level])
123
- end
124
-
125
- return containing, cur_node
126
- end
127
-
128
- def delete_node(key)
129
- path = make_path
130
- found_node = find(key, path)
131
- found_node.delete(path) if found_node.key == key
132
- end
133
-
134
- def find(key, path)
135
- cur_node = head
136
- (max_height - 1).downto(0) do |cur_level|
137
- while (next_node = cur_node.forward[cur_level]) && next_node.key < key
138
- cur_node = next_node
139
- end
140
- path[cur_level] = cur_node
141
- end
142
- cur_node.forward[0]
143
- end
144
-
145
- def make_path
146
- Array.new(max_height, nil)
147
- end
148
-
149
- def next_node_height
150
- height = 1
151
- while rand < probability && height < max_height
152
- height += 1
153
- end
154
- height
155
- end
156
-
157
- def can_ascend_from?(node, level)
158
- level < node.top_level
159
- end
160
-
161
- def can_descend_from?(level)
162
- level > 0
163
- end
164
-
165
- def node_inside_range?(node, range)
166
- node.key < range.last
167
- end
168
-
169
- def next_node_at_level_inside_range?(node, level, range)
170
- node.forward[level] && node.forward[level].key <= range.last
171
- end
172
-
173
- def next_node_at_level_outside_range?(node, level, range)
174
- (node.forward[level].nil? || node.forward[level].key > range.last)
175
- end
176
-
177
- def mark_forward_path_at_level(node, level, marker)
178
- node.forward_markers[level].push(marker)
179
- next_node = node.forward[level]
180
- next_node.markers.push(marker)
181
- node = next_node
182
- end
183
-
184
- def unmark_forward_path_at_level(node, level, marker)
185
- node.forward_markers[level].delete(marker)
186
- next_node = node.forward[level]
187
- next_node.markers.delete(marker)
188
- node = next_node
189
- end
190
-
191
- def nodes
192
- nodes = []
193
- cur_node = head.forward[0]
194
- until cur_node.nil?
195
- nodes << cur_node
196
- cur_node = cur_node.forward[0]
197
- end
198
- nodes
199
- end
200
- end
@@ -1,164 +0,0 @@
1
- class IntervalSkipList
2
- class Node < HeadNode
3
- attr_accessor :key
4
- attr_reader :markers, :endpoint_of
5
-
6
- def initialize(key, height, path)
7
- super(height)
8
- @key = key
9
- @markers = []
10
- @endpoint_of = []
11
- update_forward_pointers(path)
12
- promote_markers(path)
13
- end
14
-
15
- def all_forward_markers
16
- markers.flatten
17
- end
18
-
19
- def delete(path)
20
- 0.upto(top_level) do |i|
21
- path[i].forward[i] = forward[i]
22
- end
23
- demote_markers(path)
24
- end
25
-
26
- def propagate_length_change(length_change)
27
- cur_node = self
28
- while cur_node do
29
- cur_node.key += length_change
30
- cur_node = cur_node.forward[0]
31
- end
32
- end
33
-
34
- protected
35
-
36
- def update_forward_pointers(path)
37
- 0.upto(top_level) do |i|
38
- forward[i] = path[i].forward[i]
39
- path[i].forward[i] = self
40
- end
41
- end
42
-
43
- def promote_markers(path)
44
- promoted = []
45
- new_promoted = []
46
- 0.upto(top_level) do |i|
47
- incoming_markers = path[i].forward_markers[i]
48
- markers.concat(incoming_markers)
49
-
50
- incoming_markers.each do |marker|
51
- if can_be_promoted_higher?(marker, i)
52
- new_promoted.push(marker)
53
- forward[i].delete_marker_from_path(marker, i, forward[i+1])
54
- else
55
- forward_markers[i].push(marker)
56
- end
57
- end
58
-
59
- promoted.each do |marker|
60
- if can_be_promoted_higher?(marker, i)
61
- new_promoted.push(marker)
62
- forward[i].delete_marker_from_path(marker, i, forward[i+1])
63
- else
64
- forward_markers[i].push(marker)
65
- end
66
- end
67
-
68
- promoted = new_promoted
69
- new_promoted = []
70
- end
71
- end
72
-
73
-
74
- def can_be_promoted_higher?(marker, level)
75
- level < top_level && forward[level + 1] && forward[level + 1].markers.include?(marker)
76
- end
77
-
78
- def delete_marker_from_path(marker, level, terminus)
79
- cur_node = self
80
- until cur_node == terminus
81
- cur_node.forward_markers[level].delete(marker)
82
- cur_node.markers.delete(marker)
83
- cur_node = cur_node.forward[level]
84
- end
85
- end
86
-
87
- def demote_markers(path)
88
- demote_inbound_markers(path)
89
- demote_outbound_markers(path)
90
- end
91
-
92
- def demote_inbound_markers(path)
93
- demoted = []
94
- new_demoted = []
95
-
96
- top_level.downto(0) do |i|
97
- incoming_markers = path[i].forward_markers[i].dup
98
- incoming_markers.each do |marker|
99
- unless forward_node_with_marker_at_or_above_level?(marker, i)
100
- path[i].forward_markers[i].delete(marker)
101
- new_demoted.push(marker)
102
- end
103
- end
104
-
105
- demoted.each do |marker|
106
- path[i + 1].place_marker_on_inbound_path(marker, i, path[i])
107
-
108
- if forward[i].markers.include?(marker)
109
- path[i].forward_markers[i].push(marker)
110
- else
111
- new_demoted.push(marker)
112
- end
113
- end
114
-
115
- demoted = new_demoted
116
- new_demoted = []
117
- end
118
- end
119
-
120
- def demote_outbound_markers(path)
121
- demoted = []
122
- new_demoted = []
123
-
124
- top_level.downto(0) do |i|
125
- forward_markers[i].each do |marker|
126
- new_demoted.push(marker) unless path[i].forward_markers[i].include?(marker)
127
- end
128
-
129
- demoted.each do |marker|
130
- forward[i].place_marker_on_outbound_path(marker, i, forward[i + 1])
131
- new_demoted.push(marker) unless path[i].forward_markers[i].include?(marker)
132
- end
133
-
134
- demoted = new_demoted
135
- new_demoted = []
136
- end
137
- end
138
-
139
- def forward_node_with_marker_at_or_above_level?(marker, level)
140
- level.upto(top_level) do |i|
141
- return true if forward[i].markers.include?(marker)
142
- end
143
- false
144
- end
145
-
146
- def place_marker_on_outbound_path(marker, level, terminus)
147
- cur_node = self
148
- until cur_node == terminus
149
- cur_node.forward_markers[level].push(marker)
150
- cur_node.markers.push(marker)
151
- cur_node = cur_node.forward[level]
152
- end
153
- end
154
-
155
- def place_marker_on_inbound_path(marker, level, terminus)
156
- cur_node = self
157
- until cur_node == terminus
158
- cur_node.forward_markers[level].push(marker)
159
- cur_node = cur_node.forward[level]
160
- cur_node.markers.push(marker)
161
- end
162
- end
163
- end
164
- end
@@ -1,4 +0,0 @@
1
- dir = File.dirname(__FILE__)
2
- require "#{dir}/interval_skip_list/interval_skip_list.rb"
3
- require "#{dir}/interval_skip_list/head_node.rb"
4
- require "#{dir}/interval_skip_list/node.rb"
@@ -1,72 +0,0 @@
1
- module Treetop
2
- module Runtime
3
- class SyntaxNode
4
- attr_reader :input, :interval, :elements
5
- attr_accessor :parent
6
-
7
- def initialize(input, interval, elements = nil)
8
- @input = input
9
- @interval = interval
10
- if @elements = elements
11
- elements.each do |element|
12
- element.parent = self
13
- end
14
- end
15
- end
16
-
17
- def terminal?
18
- @elements.nil?
19
- end
20
-
21
- def nonterminal?
22
- !terminal?
23
- end
24
-
25
- def text_value
26
- input[interval]
27
- end
28
-
29
- def empty?
30
- interval.first == interval.last && interval.exclude_end?
31
- end
32
-
33
- def extension_modules
34
- local_extensions =
35
- class <<self
36
- included_modules-Object.included_modules
37
- end
38
- if local_extensions.size > 0
39
- local_extensions
40
- else
41
- [] # There weren't any; must be a literal node
42
- end
43
- end
44
-
45
- def inspect(indent="")
46
- em = extension_modules
47
- interesting_methods = methods-[em.last ? em.last.methods : nil]-self.class.instance_methods
48
- im = interesting_methods.size > 0 ? " (#{interesting_methods.join(",")})" : ""
49
- tv = text_value
50
- tv = "...#{tv[-20..-1]}" if tv.size > 20
51
-
52
- indent +
53
- self.class.to_s.sub(/.*:/,'') +
54
- em.map{|m| "+"+m.to_s.sub(/.*:/,'')}*"" +
55
- " offset=#{interval.first}" +
56
- ", #{tv.inspect}" +
57
- im +
58
- (elements && elements.size > 0 ?
59
- ":" +
60
- (@elements||[]).map{|e|
61
- begin
62
- "\n"+e.inspect(indent+" ")
63
- rescue # Defend against inspect not taking a parameter
64
- "\n"+indent+" "+e.inspect
65
- end
66
- }.join("") :
67
- ""
68
- )
69
- end
70
- end
71
- end
72
- end
@@ -1,16 +0,0 @@
1
- module Treetop
2
- module Runtime
3
- class TerminalParseFailure
4
- attr_reader :index, :expected_string
5
-
6
- def initialize(index, expected_string)
7
- @index = index
8
- @expected_string = expected_string
9
- end
10
-
11
- def to_s
12
- "String matching #{expected_string} expected."
13
- end
14
- end
15
- end
16
- end
@@ -1,17 +0,0 @@
1
- module Treetop
2
- module Runtime
3
- class TerminalSyntaxNode < SyntaxNode
4
-
5
- def initialize(input, interval)
6
- super(input, interval, [])
7
- end
8
-
9
- def inspect(indent="")
10
- indent+
11
- self.class.to_s.sub(/.*:/,'') +
12
- " offset=#{interval.first}" +
13
- " #{text_value.inspect}"
14
- end
15
- end
16
- end
17
- end
@@ -1,5 +0,0 @@
1
- dir = File.dirname(__FILE__)
2
- require "#{dir}/runtime/compiled_parser"
3
- require "#{dir}/runtime/syntax_node"
4
- require "#{dir}/runtime/terminal_parse_failure"
5
- require "#{dir}/runtime/interval_skip_list"
@@ -1,9 +0,0 @@
1
- module Treetop #:nodoc:
2
- module VERSION #:nodoc:
3
- MAJOR = 1
4
- MINOR = 3
5
- TINY = 0
6
-
7
- STRING = [MAJOR, MINOR, TINY].join('.')
8
- end
9
- end
@@ -1,8 +0,0 @@
1
- require 'rubygems'
2
-
3
- dir = File.dirname(__FILE__)
4
-
5
- TREETOP_ROOT = File.join(dir, 'treetop')
6
- require File.join(TREETOP_ROOT, "ruby_extensions")
7
- require File.join(TREETOP_ROOT, "runtime")
8
- require File.join(TREETOP_ROOT, "compiler")
@@ -1,36 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
2
-
3
- module AndPredicateSpec
4
- describe "An &-predicated terminal symbol" do
5
- testing_expression '&"foo"'
6
-
7
- it "successfully parses input matching the terminal symbol, returning an epsilon syntax node" do
8
- parse('foo', :consume_all_input => false) do |result|
9
- result.should_not be_nil
10
- result.interval.should == (0...0)
11
- end
12
- end
13
- end
14
-
15
- describe "A sequence of a terminal and an and another &-predicated terminal" do
16
- testing_expression '"foo" &"bar"'
17
-
18
- it "matches input matching both terminals, but only consumes the first" do
19
- parse('foobar', :consume_all_input => false) do |result|
20
- result.should_not be_nil
21
- result.text_value.should == 'foo'
22
- end
23
- end
24
-
25
- it "fails to parse input matching only the first terminal, with a terminal failure recorded at index 3" do
26
- parse('foo') do |result|
27
- result.should be_nil
28
- terminal_failures = parser.terminal_failures
29
- terminal_failures.size.should == 1
30
- failure = terminal_failures[0]
31
- failure.index.should == 3
32
- failure.expected_string.should == 'bar'
33
- end
34
- end
35
- end
36
- end
@@ -1,44 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
2
-
3
- module AnythingSymbolSpec
4
- class Foo < Treetop::Runtime::SyntaxNode
5
- end
6
-
7
- describe "an anything symbol followed by a node class declaration and a block" do
8
- testing_expression '. <AnythingSymbolSpec::Foo> { def a_method; end }'
9
-
10
- it "matches any single character in a big range, returning an instance of the declared node class that responds to methods defined in the inline module" do
11
- (33..127).each do |digit|
12
- parse(digit.chr) do |result|
13
- result.should_not be_nil
14
- result.should be_an_instance_of(Foo)
15
- result.should respond_to(:a_method)
16
- result.interval.should == (0...1)
17
- end
18
- end
19
- end
20
-
21
- it "fails to parse epsilon" do
22
- parse('').should be_nil
23
- end
24
- end
25
-
26
- module ModFoo
27
- end
28
-
29
- describe "an anything symbol followed by a module declaration and a block" do
30
- testing_expression '. <AnythingSymbolSpec::ModFoo> { def a_method; end }'
31
-
32
- it "matches any single character in a big range, returning an instance of SyntaxNode extended by the declared module that responds to methods defined in the inline module" do
33
- (33..127).each do |digit|
34
- parse(digit.chr) do |result|
35
- result.should_not be_nil
36
- result.should be_an_instance_of(Treetop::Runtime::SyntaxNode)
37
- result.should be_a_kind_of(ModFoo)
38
- result.should respond_to(:a_method)
39
- result.interval.should == (0...1)
40
- end
41
- end
42
- end
43
- end
44
- end