rubinius-processor 1.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6df08eadd456b4980806e6a9172640257787b02a
4
+ data.tar.gz: 9e5841c47d2a0c4c025e6962df45403f7da430b6
5
+ SHA512:
6
+ metadata.gz: 7fb6833424b9206f12d8d4f887cd6440d5b99cd33f4d7598097739593c689efff6e227c39c2e733f3ceb367661a06311c82a34e78df971fc4fad7d6bdf54edeb
7
+ data.tar.gz: 01efcac3415b6937c51316f1a02f4fee868161839e46fff42367e66374be54940d67037c2e3808e3d69a293c0fff85569998ba4f6cf68447ecaaa8e2c678bcea
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ .rbx
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rubinius-processor.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,25 @@
1
+ Copyright (c) 2013, Brian Shirai
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice, this
8
+ list of conditions and the following disclaimer.
9
+ 2. Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ 3. Neither the name of the library nor the names of its contributors may be
13
+ used to endorse or promote products derived from this software without
14
+ specific prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY DIRECT,
20
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23
+ OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
25
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Rubinius::Processor
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'rubinius-processor'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install rubinius-processor
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,657 @@
1
+ module Rubinius::ToolSet.current::TS
2
+ # TODO: This will change to:
3
+ # class Processor
4
+ class Melbourne
5
+ def process_parse_error(message, column, line, source)
6
+ msg = "#{message}: #{@name}:#{line}:#{column}"
7
+ @syntax_errors << SyntaxError.from(msg, column, line, source, @name)
8
+ end
9
+
10
+ def process_dangling_node
11
+ puts "Processing called but node was NULL"
12
+ # TODO: output info about the current AST node
13
+ end
14
+
15
+ # This method is analogous to #method_missing. It is called
16
+ # if there is no processing method defined for a node.
17
+ def process_missing_node(line, node_name, node_type)
18
+ puts "Unhandled node #{node_name} (#{node_type})"
19
+ end
20
+
21
+ # TODO: remove when all processors are defined
22
+ def method_missing(sym, *args)
23
+ puts " *** missing #{sym} #{args.map { |x| x.inspect}.join(", ")}"
24
+ end
25
+
26
+
27
+ # Processing methods
28
+
29
+ def process_alias(line, to, from)
30
+ AST::Alias.new line, to, from
31
+ end
32
+
33
+ def process_and(line, left, right)
34
+ AST::And.new line, left, right
35
+ end
36
+
37
+ def process_args(line, args, defaults, splat)
38
+ AST::FormalArguments.new line, args, defaults, splat
39
+ end
40
+
41
+ def process_argscat(line, array, rest)
42
+ AST::ConcatArgs.new line, array, rest
43
+ end
44
+
45
+ def process_argspush(line, arguments, value)
46
+ AST::PushArgs.new line, arguments, value
47
+ end
48
+
49
+ def process_array(line, array)
50
+ AST::ArrayLiteral.new line, array
51
+ end
52
+
53
+ def process_attrasgn(line, receiver, name, arguments)
54
+ if name == :[]=
55
+ AST::ElementAssignment.new line, receiver, arguments
56
+ else
57
+ AST::AttributeAssignment.new line, receiver, name, arguments
58
+ end
59
+ end
60
+
61
+ def process_back_ref(line, ref)
62
+ AST::BackRef.new line, ref
63
+ end
64
+
65
+ def process_begin(line, body)
66
+ AST::Begin.new line, body
67
+ end
68
+
69
+ def process_block(line, array)
70
+ AST::Block.new line, array
71
+ end
72
+
73
+ def process_block_arg(line, name)
74
+ AST::BlockArgument.new line, name
75
+ end
76
+
77
+ def process_block_pass(line, method_send, body)
78
+ node = AST::BlockPass.new line, body
79
+ if method_send
80
+ method_send.block = node
81
+ method_send
82
+ else
83
+ node
84
+ end
85
+ end
86
+
87
+ def process_break(line, value)
88
+ AST::Break.new line, value
89
+ end
90
+
91
+ def process_call(line, receiver, name, arguments)
92
+ if arguments.kind_of? AST::BlockPass
93
+ block = arguments
94
+ arguments = block.arguments
95
+ block.arguments = nil
96
+ else
97
+ block = nil
98
+ end
99
+
100
+ if node = process_transforms(line, receiver, name, arguments)
101
+ node.block = block if block
102
+ return node
103
+ end
104
+
105
+ if arguments
106
+ node = AST::SendWithArguments.new line, receiver, name, arguments
107
+ else
108
+ node = AST::Send.new line, receiver, name
109
+ end
110
+
111
+ node.block = block
112
+ node
113
+ end
114
+
115
+ def process_case(line, receiver, whens, else_body)
116
+ if receiver
117
+ AST::ReceiverCase.new line, receiver, whens, else_body
118
+ else
119
+ AST::Case.new line, whens, else_body
120
+ end
121
+ end
122
+
123
+ def process_cdecl(line, expr, value)
124
+ AST::ConstantAssignment.new line, expr, value
125
+ end
126
+
127
+ def process_class(line, name, superclass, body)
128
+ AST::Class.new line, name, superclass, body
129
+ end
130
+
131
+ def process_colon2(line, outer, name)
132
+ if outer
133
+ if outer.kind_of? AST::ConstantAccess and
134
+ outer.name == :Rubinius
135
+ case name
136
+ when :Type
137
+ AST::TypeConstant.new line
138
+ when :Mirror
139
+ AST::MirrorConstant.new line
140
+ else
141
+ AST::ScopedConstant.new line, outer, name
142
+ end
143
+ else
144
+ AST::ScopedConstant.new line, outer, name
145
+ end
146
+ else
147
+ AST::ConstantAccess.new line, name
148
+ end
149
+ end
150
+
151
+ def process_colon3(line, name)
152
+ AST::ToplevelConstant.new line, name
153
+ end
154
+
155
+ def process_const(line, name)
156
+ AST::ConstantAccess.new line, name
157
+ end
158
+
159
+ def process_cvar(line, name)
160
+ AST::ClassVariableAccess.new line, name
161
+ end
162
+
163
+ def process_cvasgn(line, name, value)
164
+ AST::ClassVariableAssignment.new line, name, value
165
+ end
166
+
167
+ def process_cvdecl(line, name, value)
168
+ AST::ClassVariableDeclaration.new line, name, value
169
+ end
170
+
171
+ def process_defined(line, expr)
172
+ AST::Defined.new line, expr
173
+ end
174
+
175
+ def process_defn(line, name, body)
176
+ AST::Define.new line, name, body
177
+ end
178
+
179
+ def process_defs(line, receiver, name, body)
180
+ AST::DefineSingleton.new line, receiver, name, body
181
+ end
182
+
183
+ def process_dot2(line, start, finish)
184
+ AST::Range.new line, start, finish
185
+ end
186
+
187
+ def process_dot3(line, start, finish)
188
+ AST::RangeExclude.new line, start, finish
189
+ end
190
+
191
+ def process_dregx(line, str, array, flags)
192
+ AST::DynamicRegex.new line, str, array, flags
193
+ end
194
+
195
+ def process_dregx_once(line, str, array, flags)
196
+ AST::DynamicOnceRegex.new line, str, array, flags
197
+ end
198
+
199
+ def process_dstr(line, str, array)
200
+ AST::DynamicString.new line, str, array
201
+ end
202
+
203
+ def process_dsym(line, str, array)
204
+ AST::DynamicSymbol.new line, str, array
205
+ end
206
+
207
+ def process_dxstr(line, str, array)
208
+ AST::DynamicExecuteString.new line, str, array
209
+ end
210
+
211
+ def process_ensure(line, body, ensr)
212
+ AST::Ensure.new line, body, ensr
213
+ end
214
+
215
+ def process_evstr(line, value)
216
+ if value
217
+ AST::ToString.new line, value
218
+ else
219
+ AST::StringLiteral.new line, ""
220
+ end
221
+ end
222
+
223
+ def process_false(line)
224
+ AST::FalseLiteral.new line
225
+ end
226
+
227
+ def process_fcall(line, name, arguments)
228
+ receiver = AST::Self.new line
229
+
230
+ if arguments.kind_of? AST::BlockPass
231
+ block = arguments
232
+ arguments = block.arguments
233
+ block.arguments = nil
234
+ else
235
+ block = nil
236
+ end
237
+
238
+ if node = process_transforms(line, receiver, name, arguments, true)
239
+ node.block = block if block
240
+ return node
241
+ end
242
+
243
+ if arguments
244
+ node = AST::SendWithArguments.new line, receiver, name, arguments, true
245
+ else
246
+ node = AST::Send.new line, receiver, name, true
247
+ end
248
+
249
+ node.block = block
250
+ node
251
+ end
252
+
253
+ def process_file(line)
254
+ AST::File.new line
255
+ end
256
+
257
+ def process_fixnum(line, value)
258
+ AST::FixnumLiteral.new line, value
259
+ end
260
+
261
+ def process_flip2(line, start, finish)
262
+ AST::Flip2.new line, start, finish
263
+ end
264
+
265
+ def process_flip3(line, start, finish)
266
+ AST::Flip3.new line, start, finish
267
+ end
268
+
269
+ def process_float(line, str)
270
+ AST::FloatLiteral.new line, str
271
+ end
272
+
273
+ def process_for(line, iter, arguments, body)
274
+ method_send = AST::Send.new line, iter, :each
275
+ method_send.block = AST::For.new line, arguments, body
276
+ method_send
277
+ end
278
+
279
+ def process_gasgn(line, name, expr)
280
+ AST::GlobalVariableAssignment.new line, name, expr
281
+ end
282
+
283
+ def process_gvar(line, name)
284
+ AST::GlobalVariableAccess.for_name line, name
285
+ end
286
+
287
+ def process_hash(line, array)
288
+ AST::HashLiteral.new line, array
289
+ end
290
+
291
+ def process_iasgn(line, name, value)
292
+ AST::InstanceVariableAssignment.new line, name, value
293
+ end
294
+
295
+ def process_if(line, cond, body, else_body)
296
+ AST::If.new line, cond, body, else_body
297
+ end
298
+
299
+ def process_iter(line, method_send, arguments, body)
300
+ method_send.block = AST::Iter.new line, arguments, body
301
+ method_send
302
+ end
303
+
304
+ def process_ivar(line, name)
305
+ AST::InstanceVariableAccess.new line, name
306
+ end
307
+
308
+ def process_lasgn(line, name, value)
309
+ AST::LocalVariableAssignment.new line, name, value
310
+ end
311
+
312
+ def process_lit(line, sym)
313
+ AST::SymbolLiteral.new line, sym
314
+ end
315
+
316
+ def process_lvar(line, name)
317
+ AST::LocalVariableAccess.new line, name
318
+ end
319
+
320
+ def process_masgn(line, left, right, splat)
321
+ AST::MultipleAssignment.new line, left, right, splat
322
+ end
323
+
324
+ def process_match(line, pattern, flags)
325
+ AST::Match.new line, pattern, flags
326
+ end
327
+
328
+ def process_match2(line, pattern, value)
329
+ AST::Match2.new line, pattern, value
330
+ end
331
+
332
+ def process_match3(line, pattern, value)
333
+ AST::Match3.new line, pattern, value
334
+ end
335
+
336
+ def process_module(line, name, body)
337
+ AST::Module.new line, name, body
338
+ end
339
+
340
+ def process_negate(line, value)
341
+ AST::Negate.new line, value
342
+ end
343
+
344
+ def process_next(line, value)
345
+ AST::Next.new line, value
346
+ end
347
+
348
+ def process_nil(line)
349
+ AST::NilLiteral.new line
350
+ end
351
+
352
+ def process_not(line, value)
353
+ AST::Not.new line, value
354
+ end
355
+
356
+ def process_nth_ref(line, ref)
357
+ AST::NthRef.new line, ref
358
+ end
359
+
360
+ # TODO: Fix the way 1.8 parser handles this
361
+ def process_number(line, base, str)
362
+ value = str.to_i base
363
+ case value
364
+ when Fixnum
365
+ AST::FixnumLiteral.new line, value
366
+ when Bignum
367
+ AST::NumberLiteral.new line, value
368
+ end
369
+ end
370
+
371
+ def process_op_asgn1(line, receiver, index, op, value)
372
+ AST::OpAssign1.new line, receiver, index, op, value
373
+ end
374
+
375
+ def process_op_asgn2(line, receiver, name, op, value)
376
+ AST::OpAssign2.new line, receiver, name, op, value
377
+ end
378
+
379
+ def process_op_asgn_and(line, var, value)
380
+ AST::OpAssignAnd.new line, var, value
381
+ end
382
+
383
+ def process_op_asgn_or(line, var, value)
384
+ AST::OpAssignOr.new line, var, value
385
+ end
386
+
387
+ def process_or(line, left, right)
388
+ AST::Or.new line, left, right
389
+ end
390
+
391
+ def process_postexe(line)
392
+ AST::Send.new line, AST::Self.new(line), :at_exit, true
393
+ end
394
+
395
+ def process_preexe(line)
396
+ node = AST::PreExe.new line
397
+ add_pre_exe node
398
+ node
399
+ end
400
+
401
+ def process_redo(line)
402
+ AST::Redo.new line
403
+ end
404
+
405
+ def process_regex(line, str, flags)
406
+ AST::RegexLiteral.new line, str, flags
407
+ end
408
+
409
+ def process_resbody(line, conditions, body, nxt)
410
+ AST::RescueCondition.new line, conditions, body, nxt
411
+ end
412
+
413
+ def process_rescue(line, body, rescue_body, else_body)
414
+ AST::Rescue.new line, body, rescue_body, else_body
415
+ end
416
+
417
+ def process_retry(line)
418
+ AST::Retry.new line
419
+ end
420
+
421
+ def process_return(line, value)
422
+ AST::Return.new line, value
423
+ end
424
+
425
+ def process_sclass(line, receiver, body)
426
+ AST::SClass.new line, receiver, body
427
+ end
428
+
429
+ def process_scope(line, body)
430
+ if body.kind_of? AST::Block
431
+ body
432
+ elsif body
433
+ AST::Block.new line, [body]
434
+ end
435
+ end
436
+
437
+ def process_self(line)
438
+ AST::Self.new line
439
+ end
440
+
441
+ def process_splat(line, expr)
442
+ AST::SplatValue.new line, expr
443
+ end
444
+
445
+ def process_str(line, str)
446
+ AST::StringLiteral.new line, str
447
+ end
448
+
449
+ def process_super(line, arguments)
450
+ AST::Super.new line, arguments
451
+ end
452
+
453
+ def process_svalue(line, expr)
454
+ AST::SValue.new line, expr
455
+ end
456
+
457
+ def process_to_ary(line, expr)
458
+ AST::ToArray.new line, expr
459
+ end
460
+
461
+ def process_true(line)
462
+ AST::TrueLiteral.new line
463
+ end
464
+
465
+ def process_undef(line, sym)
466
+ AST::Undef.new line, sym
467
+ end
468
+
469
+ def process_until(line, cond, body, check_first)
470
+ AST::Until.new line, cond, body, check_first
471
+ end
472
+
473
+ def process_vcall(line, name)
474
+ receiver = AST::Self.new line
475
+
476
+ if node = process_transforms(line, receiver, name, nil, true)
477
+ return node
478
+ end
479
+
480
+ AST::Send.new line, receiver, name, true, true
481
+ end
482
+
483
+ def process_valias(line, to, from)
484
+ AST::VAlias.new line, to, from
485
+ end
486
+
487
+ def process_values(line, first, rest)
488
+ rest.body.unshift first
489
+ rest
490
+ end
491
+
492
+ def process_when(line, conditions, body)
493
+ AST::When.new line, conditions, body
494
+ end
495
+
496
+ def process_while(line, cond, body, check_first)
497
+ AST::While.new line, cond, body, check_first
498
+ end
499
+
500
+ def process_xstr(line, str)
501
+ AST::ExecuteString.new line, str
502
+ end
503
+
504
+ def process_yield(line, arguments, unwrap)
505
+ AST::Yield.new line, arguments, unwrap
506
+ end
507
+
508
+ def process_zarray(line)
509
+ AST::EmptyArray.new line
510
+ end
511
+
512
+ def process_zsuper(line)
513
+ AST::ZSuper.new line
514
+ end
515
+ end
516
+
517
+ class Melbourne19 < Melbourne
518
+ def process_args(line, required, optional, splat, post, block)
519
+ AST::FormalArguments19.new line, required, optional, splat, post, block
520
+ end
521
+
522
+ def process_block_pass(line, arguments, body)
523
+ AST::BlockPass19.new line, arguments, body
524
+ end
525
+
526
+ def process_encoding(line, name)
527
+ AST::Encoding.new line, name
528
+ end
529
+
530
+ def process_postarg(line, into, rest)
531
+ AST::PostArg.new line, into, rest
532
+ end
533
+
534
+ def process_iter(line, method_send, scope)
535
+ ary = scope && scope.array || []
536
+ arguments = nil
537
+
538
+ if ary.first.kind_of? AST::FormalArguments
539
+ arguments = scope.array.shift
540
+ end
541
+
542
+ unless arguments
543
+ arguments = AST::FormalArguments19.new line, nil, nil, nil, nil, nil
544
+ end
545
+
546
+ case ary.size
547
+ when 0
548
+ body = nil
549
+ when 1
550
+ if scope.locals
551
+ body = scope
552
+ else
553
+ body = scope.array.shift
554
+ end
555
+ else
556
+ body = scope
557
+ end
558
+
559
+ method_send.block = AST::Iter19.new line, arguments, body
560
+ method_send
561
+ end
562
+
563
+ def process_for(line, iter, arguments, body)
564
+ send = AST::Send.new line, iter, :each
565
+ send.block = AST::For19.new line, arguments, body
566
+ send
567
+ end
568
+
569
+ def process_lambda(line, scope)
570
+ arguments = scope.array.shift
571
+ if scope.array.size == 1
572
+ body = scope.array.shift
573
+ else
574
+ body = scope
575
+ end
576
+
577
+ receiver = AST::Self.new line
578
+ method_send = AST::Send.new line, receiver, :lambda, true
579
+
580
+ method_send.block = AST::Iter19.new line, arguments, body
581
+ method_send
582
+ end
583
+
584
+ def process_number(line, value)
585
+ case value
586
+ when Fixnum
587
+ AST::FixnumLiteral.new line, value
588
+ when Bignum
589
+ AST::NumberLiteral.new line, value
590
+ end
591
+ end
592
+
593
+ def process_op_asgn_or(line, var, value)
594
+ AST::OpAssignOr19.new line, var, value
595
+ end
596
+
597
+ def process_opt_arg(line, arguments)
598
+ AST::Block.new line, arguments
599
+ end
600
+
601
+ def process_postexe(line, body)
602
+ node = AST::Send.new line, AST::Self.new(line), :at_exit, true
603
+ node.block = AST::Iter.new line, nil, body
604
+ node
605
+ end
606
+
607
+ def process_preexe(line, body)
608
+ node = AST::PreExe19.new line
609
+ node.block = AST::Iter19.new line, nil, body
610
+ add_pre_exe node
611
+ node
612
+ end
613
+
614
+ def process_scope(line, arguments, body, locals)
615
+ case body
616
+ when AST::Begin
617
+ if body.rescue.kind_of? AST::NilLiteral
618
+ return nil unless arguments
619
+ end
620
+ body = AST::Block.new line, [body.rescue]
621
+ when AST::Block
622
+ ary = body.array
623
+ if ary.size > 1 and
624
+ ary.first.kind_of?(AST::Begin) and
625
+ ary.first.rescue.kind_of?(AST::NilLiteral)
626
+ ary.shift
627
+ end
628
+ when nil
629
+ # Nothing
630
+ else
631
+ body = AST::Block.new line, [body]
632
+ end
633
+
634
+ if arguments and body
635
+ body.array.unshift arguments
636
+ end
637
+
638
+ body.locals = locals if locals
639
+
640
+ body
641
+ end
642
+
643
+ def process_super(line, arguments)
644
+ if arguments.kind_of? AST::BlockPass
645
+ block = arguments
646
+ arguments = block.arguments
647
+ block.arguments = nil
648
+ else
649
+ block = nil
650
+ end
651
+
652
+ node = AST::Super.new line, arguments
653
+ node.block = block
654
+ node
655
+ end
656
+ end
657
+ end
@@ -0,0 +1,5 @@
1
+ module Rubinius::ToolSet.current::TS
2
+ class Processor
3
+ VERSION = "1.0.1"
4
+ end
5
+ end
@@ -0,0 +1,2 @@
1
+ require "rubinius/processor/version"
2
+ require "rubinius/processor/processor"
@@ -0,0 +1,22 @@
1
+ # coding: utf-8
2
+ require 'rubinius/toolset'
3
+ require './lib/rubinius/processor/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "rubinius-processor"
7
+ spec.version = Rubinius::ToolSet.current::TS::Processor::VERSION
8
+ spec.authors = ["Brian Shirai"]
9
+ spec.email = ["brixen@gmail.com"]
10
+ spec.description = %q{Converts Melbourne parse tree into an AST.}
11
+ spec.summary = %q{Converts Melbourne parse tree into an AST.}
12
+ spec.homepage = "https://github.com/rubinius/rubinius-processor"
13
+ spec.license = "BSD"
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.3"
21
+ spec.add_development_dependency "rake", "~> 10.0"
22
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubinius-processor
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Brian Shirai
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: Converts Melbourne parse tree into an AST.
42
+ email:
43
+ - brixen@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - LICENSE
51
+ - README.md
52
+ - Rakefile
53
+ - lib/rubinius/processor.rb
54
+ - lib/rubinius/processor/processor.rb
55
+ - lib/rubinius/processor/version.rb
56
+ - rubinius-processor.gemspec
57
+ homepage: https://github.com/rubinius/rubinius-processor
58
+ licenses:
59
+ - BSD
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 2.0.7
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: Converts Melbourne parse tree into an AST.
81
+ test_files: []