machete 0.2.1 → 0.3.0

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.
@@ -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