machete 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,12 +22,16 @@ module Machete
22
22
  @i42 = LiteralMatcher.new(42)
23
23
  @i43 = LiteralMatcher.new(43)
24
24
  @i44 = LiteralMatcher.new(44)
25
+ @i45 = LiteralMatcher.new(45)
25
26
 
26
27
  @foo = NodeMatcher.new(:Foo)
27
28
  @foo_a = NodeMatcher.new(:Foo, :a => @i42)
28
29
  @foo_ab = NodeMatcher.new(:Foo, :a => @i42, :b => @i43)
29
30
 
31
+ @a4243 = ArrayMatcher.new([@i42, @i43])
32
+
30
33
  @ch4243 = ChoiceMatcher.new([@i42, @i43])
34
+ @ch4445 = ChoiceMatcher.new([@i44, @i45])
31
35
  @ch424344 = ChoiceMatcher.new([@i42, @i43, @i44])
32
36
  end
33
37
 
@@ -35,6 +39,10 @@ module Machete
35
39
  NodeMatcher.new(:Foo, { attr => @i42 })
36
40
  end
37
41
 
42
+ def array_matcher_with_quantifier(min, max, step)
43
+ ArrayMatcher.new([Quantifier.new(@ch4243, min, max, step)])
44
+ end
45
+
38
46
  # Canonical expression is "42 | 43".
39
47
  it "parses expression" do
40
48
  '42'.should be_parsed_as(@i42)
@@ -45,7 +53,9 @@ module Machete
45
53
  # Canonical primary is "42".
46
54
  it "parses primary" do
47
55
  'Foo<a = 42>'.should be_parsed_as(@foo_a)
48
- '42'.should be_parsed_as(@i42)
56
+ 'Foo<a = 42>'.should be_parsed_as(@foo_a)
57
+ '[42, 43]'.should be_parsed_as(@a4243)
58
+ 'any'.should be_parsed_as(AnyMatcher.new)
49
59
  end
50
60
 
51
61
  # Canonical node is "Foo".
@@ -63,136 +73,86 @@ module Machete
63
73
  # Canonical attr is "a = 42".
64
74
  it "parses attr" do
65
75
  'Foo<a = 42 | 43>'.should be_parsed_as(NodeMatcher.new(:Foo, :a => @ch4243))
76
+ 'Foo<a ^= "abcd">'.should be_parsed_as(
77
+ NodeMatcher.new(:Foo, :a => StartsWithMatcher.new("abcd"))
78
+ )
79
+ 'Foo<a $= "abcd">'.should be_parsed_as(
80
+ NodeMatcher.new(:Foo, :a => EndsWithMatcher.new("abcd"))
81
+ )
66
82
  end
67
83
 
68
84
  # Canonical method_name is "a".
69
85
  it "parses method_name" do
70
86
  'Foo<a = 42>'.should be_parsed_as(node_matcher_with_attr(:a))
87
+ 'Foo<any = 42>'.should be_parsed_as(node_matcher_with_attr(:any))
88
+ 'Foo<even = 42>'.should be_parsed_as(node_matcher_with_attr(:even))
89
+ 'Foo<odd = 42>'.should be_parsed_as(node_matcher_with_attr(:odd))
90
+ 'Foo<* = 42>'.should be_parsed_as(node_matcher_with_attr(:*))
91
+ 'Foo<+ = 42>'.should be_parsed_as(node_matcher_with_attr(:+))
71
92
  'Foo< < = 42>'.should be_parsed_as(node_matcher_with_attr(:<))
72
93
  'Foo<> = 42>'.should be_parsed_as(node_matcher_with_attr(:>))
94
+ 'Foo<^ = 42>'.should be_parsed_as(node_matcher_with_attr(:^))
73
95
  'Foo<| = 42>'.should be_parsed_as(node_matcher_with_attr(:|))
74
96
  end
75
97
 
76
- # Canonical literal is "42".
77
- it "parses literal" do
78
- ':a'.should be_parsed_as(LiteralMatcher.new(:a))
79
- '42'.should be_parsed_as(@i42)
80
- '"abcd"'.should be_parsed_as(LiteralMatcher.new("abcd"))
98
+ # Canonical array is "[42, 43]".
99
+ it "parses array" do
100
+ '[42, 43]'.should be_parsed_as(@a4243)
81
101
  end
82
102
 
83
- # Canonical METHOD_NAME is "a".
84
- it "parses METHOD_NAME" do
85
- # Regular names
86
- 'Foo<a = 42>'.should be_parsed_as(node_matcher_with_attr(:a))
87
- 'Foo<z = 42>'.should be_parsed_as(node_matcher_with_attr(:z))
88
- 'Foo<_ = 42>'.should be_parsed_as(node_matcher_with_attr(:_))
89
- 'Foo<aa = 42>'.should be_parsed_as(node_matcher_with_attr(:aa))
90
- 'Foo<az = 42>'.should be_parsed_as(node_matcher_with_attr(:az))
91
- 'Foo<aA = 42>'.should be_parsed_as(node_matcher_with_attr(:aA))
92
- 'Foo<aZ = 42>'.should be_parsed_as(node_matcher_with_attr(:aZ))
93
- 'Foo<a0 = 42>'.should be_parsed_as(node_matcher_with_attr(:a0))
94
- 'Foo<a9 = 42>'.should be_parsed_as(node_matcher_with_attr(:a9))
95
- 'Foo<a_ = 42>'.should be_parsed_as(node_matcher_with_attr(:a_))
96
- 'Foo<abcd = 42>'.should be_parsed_as(node_matcher_with_attr(:abcd))
97
- 'Foo<a? = 42>'.should be_parsed_as(node_matcher_with_attr(:a?))
98
- 'Foo<a! = 42>'.should be_parsed_as(node_matcher_with_attr(:a!))
99
- 'Foo<a= = 42>'.should be_parsed_as(node_matcher_with_attr(:a=))
103
+ # Canonical items_opt is "42, 43".
104
+ it "parses items" do
105
+ '[ ]'.should be_parsed_as(ArrayMatcher.new([]))
106
+ '[42, 43]'.should be_parsed_as(@a4243)
107
+ end
100
108
 
101
- # Operators (sorted alphabetically)
102
- 'Foo<% = 42>'.should be_parsed_as(node_matcher_with_attr(:%))
103
- 'Foo<& = 42>'.should be_parsed_as(node_matcher_with_attr(:&))
104
- 'Foo<* = 42>'.should be_parsed_as(node_matcher_with_attr(:*))
105
- 'Foo<** = 42>'.should be_parsed_as(node_matcher_with_attr(:**))
106
- 'Foo<+ = 42>'.should be_parsed_as(node_matcher_with_attr(:+))
107
- 'Foo<+@ = 42>'.should be_parsed_as(node_matcher_with_attr(:+@))
108
- 'Foo<- = 42>'.should be_parsed_as(node_matcher_with_attr(:-))
109
- 'Foo<-@ = 42>'.should be_parsed_as(node_matcher_with_attr(:-@))
110
- 'Foo</ = 42>'.should be_parsed_as(node_matcher_with_attr(:/))
111
- 'Foo< << = 42>'.should be_parsed_as(node_matcher_with_attr(:<<))
112
- 'Foo< <= = 42>'.should be_parsed_as(node_matcher_with_attr(:<=))
113
- 'Foo< <=> = 42>'.should be_parsed_as(node_matcher_with_attr(:<=>))
114
- 'Foo< == = 42>'.should be_parsed_as(node_matcher_with_attr(:==))
115
- 'Foo< === = 42>'.should be_parsed_as(node_matcher_with_attr(:===))
116
- 'Foo< =~ = 42>'.should be_parsed_as(node_matcher_with_attr(:=~))
117
- 'Foo<>= = 42>'.should be_parsed_as(node_matcher_with_attr(:>=))
118
- 'Foo<>> = 42>'.should be_parsed_as(node_matcher_with_attr(:>>))
119
- 'Foo<[] = 42>'.should be_parsed_as(node_matcher_with_attr(:[]))
120
- 'Foo<[]= = 42>'.should be_parsed_as(node_matcher_with_attr(:[]=))
121
- 'Foo<^ = 42>'.should be_parsed_as(node_matcher_with_attr(:^))
122
- 'Foo<` = 42>'.should be_parsed_as(node_matcher_with_attr(:`))
123
- 'Foo<~ = 42>'.should be_parsed_as(node_matcher_with_attr(:~))
109
+ # Canonical items is "42, 43".
110
+ it "parses items" do
111
+ '[42*]'.should be_parsed_as(
112
+ ArrayMatcher.new([Quantifier.new(@i42, 0, nil, 1)])
113
+ )
114
+ '[42*, 43*]'.should be_parsed_as(ArrayMatcher.new([
115
+ Quantifier.new(@i42, 0, nil, 1),
116
+ Quantifier.new(@i43, 0, nil, 1)
117
+ ]))
124
118
  end
125
119
 
126
- # Canonical CLASS_NAME is "A".
127
- it "parses CLASS_NAME" do
128
- 'A'.should be_parsed_as(NodeMatcher.new(:A))
129
- 'Z'.should be_parsed_as(NodeMatcher.new(:Z))
130
- 'Aa'.should be_parsed_as(NodeMatcher.new(:Aa))
131
- 'Az'.should be_parsed_as(NodeMatcher.new(:Az))
132
- 'AA'.should be_parsed_as(NodeMatcher.new(:AA))
133
- 'AZ'.should be_parsed_as(NodeMatcher.new(:AZ))
134
- 'A0'.should be_parsed_as(NodeMatcher.new(:A0))
135
- 'A9'.should be_parsed_as(NodeMatcher.new(:A9))
136
- 'A_'.should be_parsed_as(NodeMatcher.new(:A_))
137
- 'Abcd'.should be_parsed_as(NodeMatcher.new(:Abcd))
120
+ # Canonical item is "42*".
121
+ it "parses item" do
122
+ '[42 | 43]'.should be_parsed_as(ArrayMatcher.new([@ch4243]))
123
+ '[42*]'.should be_parsed_as(
124
+ ArrayMatcher.new([Quantifier.new(@i42, 0, nil, 1)])
125
+ )
138
126
  end
139
127
 
140
- # Canonical SYMBOL is ":a".
141
- it "parses SYMBOL" do
142
- # Class names
143
- ':A'.should be_parsed_as(LiteralMatcher.new(:A))
144
- ':Z'.should be_parsed_as(LiteralMatcher.new(:Z))
145
- ':Aa'.should be_parsed_as(LiteralMatcher.new(:Aa))
146
- ':Az'.should be_parsed_as(LiteralMatcher.new(:Az))
147
- ':AA'.should be_parsed_as(LiteralMatcher.new(:AA))
148
- ':AZ'.should be_parsed_as(LiteralMatcher.new(:AZ))
149
- ':A0'.should be_parsed_as(LiteralMatcher.new(:A0))
150
- ':A9'.should be_parsed_as(LiteralMatcher.new(:A9))
151
- ':A_'.should be_parsed_as(LiteralMatcher.new(:A_))
152
- ':Abcd'.should be_parsed_as(LiteralMatcher.new(:Abcd))
128
+ # Canonical quantifier is "42*".
129
+ it "parses quantifier" do
130
+ '[42 | 43*]'.should be_parsed_as(array_matcher_with_quantifier(0, nil, 1))
131
+ '[42 | 43+]'.should be_parsed_as(array_matcher_with_quantifier(1, nil, 1))
132
+ '[42 | 43?]'.should be_parsed_as(array_matcher_with_quantifier(0, 1, 1))
133
+ '[42 | 43{44}]'.should be_parsed_as(
134
+ array_matcher_with_quantifier(44, 44, 1)
135
+ )
136
+ '[42 | 43{44,}]'.should be_parsed_as(
137
+ array_matcher_with_quantifier(44, nil, 1)
138
+ )
139
+ '[42 | 43{,44}]'.should be_parsed_as(
140
+ array_matcher_with_quantifier(0, 44, 1))
141
+ '[42 | 43{44,45}]'.should be_parsed_as(
142
+ array_matcher_with_quantifier(44, 45, 1)
143
+ )
144
+ end
153
145
 
154
- # Regular method names
146
+ # Canonical literal is "42".
147
+ it "parses literal" do
155
148
  ':a'.should be_parsed_as(LiteralMatcher.new(:a))
156
- ':z'.should be_parsed_as(LiteralMatcher.new(:z))
157
- ':_'.should be_parsed_as(LiteralMatcher.new(:_))
158
- ':aa'.should be_parsed_as(LiteralMatcher.new(:aa))
159
- ':az'.should be_parsed_as(LiteralMatcher.new(:az))
160
- ':aA'.should be_parsed_as(LiteralMatcher.new(:aA))
161
- ':aZ'.should be_parsed_as(LiteralMatcher.new(:aZ))
162
- ':a0'.should be_parsed_as(LiteralMatcher.new(:a0))
163
- ':a9'.should be_parsed_as(LiteralMatcher.new(:a9))
164
- ':a_'.should be_parsed_as(LiteralMatcher.new(:a_))
165
- ':abcd'.should be_parsed_as(LiteralMatcher.new(:abcd))
166
- ':a?'.should be_parsed_as(LiteralMatcher.new(:a?))
167
- ':a!'.should be_parsed_as(LiteralMatcher.new(:a!))
168
- ':a='.should be_parsed_as(LiteralMatcher.new(:a=))
149
+ '42'.should be_parsed_as(@i42)
150
+ '"abcd"'.should be_parsed_as(LiteralMatcher.new("abcd"))
151
+ end
169
152
 
170
- # Operators (sorted alphabetically)
171
- ':%'.should be_parsed_as(LiteralMatcher.new(:%))
172
- ':&'.should be_parsed_as(LiteralMatcher.new(:&))
173
- ':*'.should be_parsed_as(LiteralMatcher.new(:*))
174
- ':**'.should be_parsed_as(LiteralMatcher.new(:**))
175
- ':+'.should be_parsed_as(LiteralMatcher.new(:+))
176
- ':+@'.should be_parsed_as(LiteralMatcher.new(:+@))
177
- ':-'.should be_parsed_as(LiteralMatcher.new(:-))
178
- ':-@'.should be_parsed_as(LiteralMatcher.new(:-@))
179
- ':/'.should be_parsed_as(LiteralMatcher.new(:/))
180
- ':<'.should be_parsed_as(LiteralMatcher.new(:<))
181
- ':<<'.should be_parsed_as(LiteralMatcher.new(:<<))
182
- ':<='.should be_parsed_as(LiteralMatcher.new(:<=))
183
- ':<=>'.should be_parsed_as(LiteralMatcher.new(:<=>))
184
- ':=='.should be_parsed_as(LiteralMatcher.new(:==))
185
- ':==='.should be_parsed_as(LiteralMatcher.new(:===))
186
- ':=~'.should be_parsed_as(LiteralMatcher.new(:=~))
187
- ':>'.should be_parsed_as(LiteralMatcher.new(:>))
188
- ':>='.should be_parsed_as(LiteralMatcher.new(:>=))
189
- ':>>'.should be_parsed_as(LiteralMatcher.new(:>>))
190
- ':[]'.should be_parsed_as(LiteralMatcher.new(:[]))
191
- ':[]='.should be_parsed_as(LiteralMatcher.new(:[]=))
192
- ':^'.should be_parsed_as(LiteralMatcher.new(:^))
193
- ':`'.should be_parsed_as(LiteralMatcher.new(:`))
194
- ':|'.should be_parsed_as(LiteralMatcher.new(:|))
195
- ':~'.should be_parsed_as(LiteralMatcher.new(:~))
153
+ # Canonical any is "any".
154
+ it "parses any" do
155
+ 'any'.should be_parsed_as(AnyMatcher.new)
196
156
  end
197
157
 
198
158
  # Canonical INTEGER is "42".
@@ -310,6 +270,137 @@ module Machete
310
270
  '"abc"'.should be_parsed_as(LiteralMatcher.new("abc"))
311
271
  end
312
272
 
273
+ # Canonical ANY is "any".
274
+ it "parses ANY" do
275
+ 'any'.should be_parsed_as(AnyMatcher.new)
276
+ end
277
+
278
+ # Canonical EVEN is "even".
279
+ it "parses EVEN" do
280
+ '[42{even}]'.should be_parsed_as(
281
+ ArrayMatcher.new([Quantifier.new(@i42, 0, nil, 2)])
282
+ )
283
+ end
284
+
285
+ # Canonical ODD is "odd".
286
+ it "parses ODD" do
287
+ '[42{odd}]'.should be_parsed_as(
288
+ ArrayMatcher.new([Quantifier.new(@i42, 1, nil, 2)])
289
+ )
290
+ end
291
+
292
+ # Canonical METHOD_NAME is "a".
293
+ it "parses METHOD_NAME" do
294
+ # Regular names
295
+ 'Foo<a = 42>'.should be_parsed_as(node_matcher_with_attr(:a))
296
+ 'Foo<z = 42>'.should be_parsed_as(node_matcher_with_attr(:z))
297
+ 'Foo<_ = 42>'.should be_parsed_as(node_matcher_with_attr(:_))
298
+ 'Foo<aa = 42>'.should be_parsed_as(node_matcher_with_attr(:aa))
299
+ 'Foo<az = 42>'.should be_parsed_as(node_matcher_with_attr(:az))
300
+ 'Foo<aA = 42>'.should be_parsed_as(node_matcher_with_attr(:aA))
301
+ 'Foo<aZ = 42>'.should be_parsed_as(node_matcher_with_attr(:aZ))
302
+ 'Foo<a0 = 42>'.should be_parsed_as(node_matcher_with_attr(:a0))
303
+ 'Foo<a9 = 42>'.should be_parsed_as(node_matcher_with_attr(:a9))
304
+ 'Foo<a_ = 42>'.should be_parsed_as(node_matcher_with_attr(:a_))
305
+ 'Foo<abcd = 42>'.should be_parsed_as(node_matcher_with_attr(:abcd))
306
+ 'Foo<a? = 42>'.should be_parsed_as(node_matcher_with_attr(:a?))
307
+ 'Foo<a! = 42>'.should be_parsed_as(node_matcher_with_attr(:a!))
308
+ 'Foo<a= = 42>'.should be_parsed_as(node_matcher_with_attr(:a=))
309
+
310
+ # Operators (sorted alphabetically)
311
+ 'Foo<% = 42>'.should be_parsed_as(node_matcher_with_attr(:%))
312
+ 'Foo<& = 42>'.should be_parsed_as(node_matcher_with_attr(:&))
313
+ 'Foo<** = 42>'.should be_parsed_as(node_matcher_with_attr(:**))
314
+ 'Foo<+@ = 42>'.should be_parsed_as(node_matcher_with_attr(:+@))
315
+ 'Foo<- = 42>'.should be_parsed_as(node_matcher_with_attr(:-))
316
+ 'Foo<-@ = 42>'.should be_parsed_as(node_matcher_with_attr(:-@))
317
+ 'Foo</ = 42>'.should be_parsed_as(node_matcher_with_attr(:/))
318
+ 'Foo< << = 42>'.should be_parsed_as(node_matcher_with_attr(:<<))
319
+ 'Foo< <= = 42>'.should be_parsed_as(node_matcher_with_attr(:<=))
320
+ 'Foo< <=> = 42>'.should be_parsed_as(node_matcher_with_attr(:<=>))
321
+ 'Foo< == = 42>'.should be_parsed_as(node_matcher_with_attr(:==))
322
+ 'Foo< === = 42>'.should be_parsed_as(node_matcher_with_attr(:===))
323
+ 'Foo< =~ = 42>'.should be_parsed_as(node_matcher_with_attr(:=~))
324
+ 'Foo<>= = 42>'.should be_parsed_as(node_matcher_with_attr(:>=))
325
+ 'Foo<>> = 42>'.should be_parsed_as(node_matcher_with_attr(:>>))
326
+ 'Foo<[] = 42>'.should be_parsed_as(node_matcher_with_attr(:[]))
327
+ 'Foo<[]= = 42>'.should be_parsed_as(node_matcher_with_attr(:[]=))
328
+ 'Foo<` = 42>'.should be_parsed_as(node_matcher_with_attr(:`))
329
+ 'Foo<~ = 42>'.should be_parsed_as(node_matcher_with_attr(:~))
330
+ end
331
+
332
+ # Canonical CLASS_NAME is "A".
333
+ it "parses CLASS_NAME" do
334
+ 'A'.should be_parsed_as(NodeMatcher.new(:A))
335
+ 'Z'.should be_parsed_as(NodeMatcher.new(:Z))
336
+ 'Aa'.should be_parsed_as(NodeMatcher.new(:Aa))
337
+ 'Az'.should be_parsed_as(NodeMatcher.new(:Az))
338
+ 'AA'.should be_parsed_as(NodeMatcher.new(:AA))
339
+ 'AZ'.should be_parsed_as(NodeMatcher.new(:AZ))
340
+ 'A0'.should be_parsed_as(NodeMatcher.new(:A0))
341
+ 'A9'.should be_parsed_as(NodeMatcher.new(:A9))
342
+ 'A_'.should be_parsed_as(NodeMatcher.new(:A_))
343
+ 'Abcd'.should be_parsed_as(NodeMatcher.new(:Abcd))
344
+ end
345
+
346
+ # Canonical SYMBOL is ":a".
347
+ it "parses SYMBOL" do
348
+ # Class names
349
+ ':A'.should be_parsed_as(LiteralMatcher.new(:A))
350
+ ':Z'.should be_parsed_as(LiteralMatcher.new(:Z))
351
+ ':Aa'.should be_parsed_as(LiteralMatcher.new(:Aa))
352
+ ':Az'.should be_parsed_as(LiteralMatcher.new(:Az))
353
+ ':AA'.should be_parsed_as(LiteralMatcher.new(:AA))
354
+ ':AZ'.should be_parsed_as(LiteralMatcher.new(:AZ))
355
+ ':A0'.should be_parsed_as(LiteralMatcher.new(:A0))
356
+ ':A9'.should be_parsed_as(LiteralMatcher.new(:A9))
357
+ ':A_'.should be_parsed_as(LiteralMatcher.new(:A_))
358
+ ':Abcd'.should be_parsed_as(LiteralMatcher.new(:Abcd))
359
+
360
+ # Regular method names
361
+ ':a'.should be_parsed_as(LiteralMatcher.new(:a))
362
+ ':z'.should be_parsed_as(LiteralMatcher.new(:z))
363
+ ':_'.should be_parsed_as(LiteralMatcher.new(:_))
364
+ ':aa'.should be_parsed_as(LiteralMatcher.new(:aa))
365
+ ':az'.should be_parsed_as(LiteralMatcher.new(:az))
366
+ ':aA'.should be_parsed_as(LiteralMatcher.new(:aA))
367
+ ':aZ'.should be_parsed_as(LiteralMatcher.new(:aZ))
368
+ ':a0'.should be_parsed_as(LiteralMatcher.new(:a0))
369
+ ':a9'.should be_parsed_as(LiteralMatcher.new(:a9))
370
+ ':a_'.should be_parsed_as(LiteralMatcher.new(:a_))
371
+ ':abcd'.should be_parsed_as(LiteralMatcher.new(:abcd))
372
+ ':a?'.should be_parsed_as(LiteralMatcher.new(:a?))
373
+ ':a!'.should be_parsed_as(LiteralMatcher.new(:a!))
374
+ ':a='.should be_parsed_as(LiteralMatcher.new(:a=))
375
+
376
+ # Operators (sorted alphabetically)
377
+ ':%'.should be_parsed_as(LiteralMatcher.new(:%))
378
+ ':&'.should be_parsed_as(LiteralMatcher.new(:&))
379
+ ':*'.should be_parsed_as(LiteralMatcher.new(:*))
380
+ ':**'.should be_parsed_as(LiteralMatcher.new(:**))
381
+ ':+'.should be_parsed_as(LiteralMatcher.new(:+))
382
+ ':+@'.should be_parsed_as(LiteralMatcher.new(:+@))
383
+ ':-'.should be_parsed_as(LiteralMatcher.new(:-))
384
+ ':-@'.should be_parsed_as(LiteralMatcher.new(:-@))
385
+ ':/'.should be_parsed_as(LiteralMatcher.new(:/))
386
+ ':<'.should be_parsed_as(LiteralMatcher.new(:<))
387
+ ':<<'.should be_parsed_as(LiteralMatcher.new(:<<))
388
+ ':<='.should be_parsed_as(LiteralMatcher.new(:<=))
389
+ ':<=>'.should be_parsed_as(LiteralMatcher.new(:<=>))
390
+ ':=='.should be_parsed_as(LiteralMatcher.new(:==))
391
+ ':==='.should be_parsed_as(LiteralMatcher.new(:===))
392
+ ':=~'.should be_parsed_as(LiteralMatcher.new(:=~))
393
+ ':>'.should be_parsed_as(LiteralMatcher.new(:>))
394
+ ':>='.should be_parsed_as(LiteralMatcher.new(:>=))
395
+ ':>>'.should be_parsed_as(LiteralMatcher.new(:>>))
396
+ ':[]'.should be_parsed_as(LiteralMatcher.new(:[]))
397
+ ':[]='.should be_parsed_as(LiteralMatcher.new(:[]=))
398
+ ':^'.should be_parsed_as(LiteralMatcher.new(:^))
399
+ ':`'.should be_parsed_as(LiteralMatcher.new(:`))
400
+ ':|'.should be_parsed_as(LiteralMatcher.new(:|))
401
+ ':~'.should be_parsed_as(LiteralMatcher.new(:~))
402
+ end
403
+
313
404
  it "skips whitespace before tokens" do
314
405
  '42'.should be_parsed_as(@i42)
315
406
  ' 42'.should be_parsed_as(@i42)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: machete
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 1
10
- version: 0.2.1
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Majda
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-17 00:00:00 +02:00
18
+ date: 2011-09-27 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency