unparser 0.1.13 → 0.1.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -7
- data/.travis.yml +5 -2
- data/Changelog.md +4 -0
- data/config/flay.yml +1 -1
- data/config/flog.yml +1 -1
- data/config/reek.yml +1 -1
- data/lib/unparser.rb +1 -0
- data/lib/unparser/dsl.rb +71 -0
- data/lib/unparser/emitter.rb +12 -62
- data/lib/unparser/emitter/case.rb +6 -5
- data/lib/unparser/emitter/literal/dynamic_body.rb +1 -3
- data/lib/unparser/emitter/literal/regexp.rb +1 -3
- data/lib/unparser/emitter/rescue.rb +1 -11
- data/lib/unparser/emitter/root.rb +0 -1
- data/lib/unparser/emitter/send.rb +7 -29
- data/lib/unparser/emitter/send/index.rb +14 -15
- data/spec/integration/unparser/corpus_spec.rb +5 -2
- data/spec/unit/unparser_spec.rb +11 -9
- data/unparser.gemspec +2 -2
- metadata +94 -73
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6fbc42b2270dfea79002ff8d2bf543618237f65e
|
4
|
+
data.tar.gz: 992ce6239c5de55bf3cb5f3b182a2e6d8368ae06
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 90e80a39138d2cf49d9be5e303f9255be55ff8200ddb1dcb5181951ddce109816749e8cd72388a5a935b966ab6d67a23175eb714fa5038dde99cb846a547a6f4
|
7
|
+
data.tar.gz: f51ab9def69f2641e819f1c57741d808f61f25cfc2738257ea846daff6a1a4562683e9972d8fde4f58b023fdc0e1edf1a03fe996157c89bc9efe5a2aa940f75f
|
data/.travis.yml
CHANGED
@@ -4,10 +4,13 @@ rvm:
|
|
4
4
|
- 1.9.3
|
5
5
|
- 2.0.0
|
6
6
|
- 2.1.2
|
7
|
-
- jruby-19mode
|
8
|
-
- jruby-20mode
|
9
7
|
- rbx-2
|
10
8
|
matrix:
|
9
|
+
include:
|
10
|
+
- rvm: jruby
|
11
|
+
env: JRUBY_OPTS="$JRUBY_OPTS --debug --1.9" # for simplecov
|
12
|
+
- rvm: jruby
|
13
|
+
env: JRUBY_OPTS="$JRUBY_OPTS --debug --2.0" # for simplecov
|
11
14
|
allow_failures:
|
12
15
|
- rvm: rbx-2
|
13
16
|
notifications:
|
data/Changelog.md
CHANGED
data/config/flay.yml
CHANGED
data/config/flog.yml
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
---
|
2
|
-
threshold:
|
2
|
+
threshold: 21.3
|
data/config/reek.yml
CHANGED
@@ -17,7 +17,7 @@ TooManyInstanceVariables:
|
|
17
17
|
TooManyMethods:
|
18
18
|
exclude:
|
19
19
|
- Unparser::Emitter # TODO: 13 methods, mostly helpers for deduplicate sublcasses
|
20
|
-
- Unparser::Buffer #
|
20
|
+
- Unparser::Buffer # 11 methods
|
21
21
|
- Unparser::CLI::Source # 11 methods
|
22
22
|
enabled: true
|
23
23
|
max_methods: 10
|
data/lib/unparser.rb
CHANGED
data/lib/unparser/dsl.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
module Unparser
|
2
|
+
# DSL to help defining emitters
|
3
|
+
module DSL
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
# Define remaining children
|
8
|
+
#
|
9
|
+
# @param [Enumerable<Symbol>] names
|
10
|
+
#
|
11
|
+
# @return [undefined]
|
12
|
+
#
|
13
|
+
# @api private
|
14
|
+
#
|
15
|
+
def define_remaining_children(names)
|
16
|
+
range = names.length .. -1
|
17
|
+
define_method(:remaining_children) do
|
18
|
+
children[range]
|
19
|
+
end
|
20
|
+
private :remaining_children
|
21
|
+
end
|
22
|
+
|
23
|
+
# Define named child
|
24
|
+
#
|
25
|
+
# @param [Symbol] name
|
26
|
+
# @param [Fixnum] index
|
27
|
+
#
|
28
|
+
# @return [undefined]
|
29
|
+
#
|
30
|
+
# @api private
|
31
|
+
#
|
32
|
+
def define_child(name, index)
|
33
|
+
define_method(name) do
|
34
|
+
children.at(index)
|
35
|
+
end
|
36
|
+
private name
|
37
|
+
end
|
38
|
+
|
39
|
+
# Define a group of children
|
40
|
+
#
|
41
|
+
# @param [Symbol] name
|
42
|
+
# @param [Range] range
|
43
|
+
#
|
44
|
+
# @return [undefined]
|
45
|
+
#
|
46
|
+
# @pai private
|
47
|
+
#
|
48
|
+
def define_group(name, range)
|
49
|
+
define_method(name) do
|
50
|
+
children[range]
|
51
|
+
end
|
52
|
+
private(name)
|
53
|
+
memoize(name)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Create name helpers
|
57
|
+
#
|
58
|
+
# @return [undefined]
|
59
|
+
#
|
60
|
+
# @api private
|
61
|
+
#
|
62
|
+
def children(*names)
|
63
|
+
define_remaining_children(names)
|
64
|
+
|
65
|
+
names.each_with_index do |name, index|
|
66
|
+
define_child(name, index)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end # DSL
|
71
|
+
end # Unparser
|
data/lib/unparser/emitter.rb
CHANGED
@@ -6,6 +6,16 @@ module Unparser
|
|
6
6
|
class Emitter
|
7
7
|
include Adamantium::Flat, AbstractType, Constants, NodeHelpers
|
8
8
|
include Concord.new(:node, :parent)
|
9
|
+
extend DSL
|
10
|
+
|
11
|
+
# Registry for node emitters
|
12
|
+
REGISTRY = {}
|
13
|
+
|
14
|
+
NOINDENT = [:rescue, :ensure].to_set.freeze
|
15
|
+
|
16
|
+
DEFAULT_DELIMITER = ', '.freeze
|
17
|
+
|
18
|
+
CURLY_BRACKETS = IceNine.deep_freeze(%w({ }))
|
9
19
|
|
10
20
|
module LocalVariableRoot
|
11
21
|
|
@@ -25,7 +35,7 @@ module Unparser
|
|
25
35
|
end
|
26
36
|
end
|
27
37
|
|
28
|
-
end
|
38
|
+
end # LocalVariableRoot
|
29
39
|
|
30
40
|
# Return local variable root
|
31
41
|
#
|
@@ -37,15 +47,6 @@ module Unparser
|
|
37
47
|
parent.local_variable_scope
|
38
48
|
end
|
39
49
|
|
40
|
-
# Registry for node emitters
|
41
|
-
REGISTRY = {}
|
42
|
-
|
43
|
-
NOINDENT = [:rescue, :ensure].to_set.freeze
|
44
|
-
|
45
|
-
DEFAULT_DELIMITER = ', '.freeze
|
46
|
-
|
47
|
-
CURLY_BRACKETS = IceNine.deep_freeze(%w({ }))
|
48
|
-
|
49
50
|
# Return assigned lvars
|
50
51
|
#
|
51
52
|
# @return [Array<Symbol>]
|
@@ -64,54 +65,6 @@ module Unparser
|
|
64
65
|
node.type
|
65
66
|
end
|
66
67
|
|
67
|
-
# Define remaining children
|
68
|
-
#
|
69
|
-
# @param [Enumerable<Symbol>] names
|
70
|
-
#
|
71
|
-
# @return [undefined]
|
72
|
-
#
|
73
|
-
# @api private
|
74
|
-
#
|
75
|
-
def self.define_remaining_children(names)
|
76
|
-
define_method(:remaining_children) do
|
77
|
-
children[names.length..-1]
|
78
|
-
end
|
79
|
-
private :remaining_children
|
80
|
-
end
|
81
|
-
private_class_method :define_remaining_children
|
82
|
-
|
83
|
-
# Define named child
|
84
|
-
#
|
85
|
-
# @param [Symbol] name
|
86
|
-
# @param [Fixnum] index
|
87
|
-
#
|
88
|
-
# @return [undefined]
|
89
|
-
#
|
90
|
-
# @api private
|
91
|
-
#
|
92
|
-
def self.define_child(name, index)
|
93
|
-
define_method(name) do
|
94
|
-
children.at(index)
|
95
|
-
end
|
96
|
-
protected name
|
97
|
-
end
|
98
|
-
private_class_method :define_child
|
99
|
-
|
100
|
-
# Create name helpers
|
101
|
-
#
|
102
|
-
# @return [undefined]
|
103
|
-
#
|
104
|
-
# @api private
|
105
|
-
#
|
106
|
-
def self.children(*names)
|
107
|
-
define_remaining_children(names)
|
108
|
-
|
109
|
-
names.each_with_index do |name, index|
|
110
|
-
define_child(name, index)
|
111
|
-
end
|
112
|
-
end
|
113
|
-
private_class_method :children
|
114
|
-
|
115
68
|
# Register emitter for type
|
116
69
|
#
|
117
70
|
# @param [Symbol] type
|
@@ -176,10 +129,7 @@ module Unparser
|
|
176
129
|
|
177
130
|
# Test if node is emitted as terminated expression
|
178
131
|
#
|
179
|
-
# @return [
|
180
|
-
# if emitted node is unambigous
|
181
|
-
#
|
182
|
-
# @return [true]
|
132
|
+
# @return [Boolean]
|
183
133
|
#
|
184
134
|
# @api private
|
185
135
|
#
|
@@ -8,6 +8,7 @@ module Unparser
|
|
8
8
|
handle :case
|
9
9
|
|
10
10
|
children :condition
|
11
|
+
define_group :whens, 1..-2
|
11
12
|
|
12
13
|
private
|
13
14
|
|
@@ -46,9 +47,7 @@ module Unparser
|
|
46
47
|
#
|
47
48
|
def emit_whens
|
48
49
|
nl
|
49
|
-
|
50
|
-
visit(child)
|
51
|
-
end
|
50
|
+
whens.each(&method(:visit))
|
52
51
|
end
|
53
52
|
|
54
53
|
# Emit condition
|
@@ -70,6 +69,8 @@ module Unparser
|
|
70
69
|
|
71
70
|
handle :when
|
72
71
|
|
72
|
+
define_group :captures, 0 .. -2
|
73
|
+
|
73
74
|
private
|
74
75
|
|
75
76
|
# Perform dispatch
|
@@ -92,9 +93,9 @@ module Unparser
|
|
92
93
|
# @api private
|
93
94
|
#
|
94
95
|
def emit_captures
|
95
|
-
delimited(
|
96
|
+
delimited(captures)
|
96
97
|
end
|
97
98
|
|
98
|
-
end
|
99
|
+
end # When
|
99
100
|
end # Emitter
|
100
101
|
end # Unparser
|
@@ -9,7 +9,7 @@ module Unparser
|
|
9
9
|
|
10
10
|
children :body, :rescue_body
|
11
11
|
|
12
|
-
|
12
|
+
define_group :rescue_bodies, 1..-2
|
13
13
|
|
14
14
|
EMBEDDED_TYPES = [:def, :defs, :kwbegin, :ensure].to_set.freeze
|
15
15
|
|
@@ -83,16 +83,6 @@ module Unparser
|
|
83
83
|
emit_else
|
84
84
|
end
|
85
85
|
|
86
|
-
# Return rescue bodies
|
87
|
-
#
|
88
|
-
# @return [Enumerable<Parser::AST::Node>]
|
89
|
-
#
|
90
|
-
# @api private
|
91
|
-
#
|
92
|
-
def rescue_bodies
|
93
|
-
children[RESCUE_BODIES_RANGE]
|
94
|
-
end
|
95
|
-
|
96
86
|
# Emit else
|
97
87
|
#
|
98
88
|
# @return [undefined]
|
@@ -14,17 +14,11 @@ module Unparser
|
|
14
14
|
INDEX_ASSIGN = :'[]='
|
15
15
|
ASSIGN_SUFFIX = '='.freeze
|
16
16
|
|
17
|
-
AMBIGOUS = [:irange, :erange].to_set.freeze
|
18
|
-
|
19
17
|
children :receiver, :selector
|
20
18
|
|
21
19
|
# Test for terminated expression
|
22
20
|
#
|
23
|
-
# @return [
|
24
|
-
# if send is terminated
|
25
|
-
#
|
26
|
-
# @return [false]
|
27
|
-
# otherwise
|
21
|
+
# @return [Boolean]
|
28
22
|
#
|
29
23
|
# @api private
|
30
24
|
#
|
@@ -44,7 +38,7 @@ module Unparser
|
|
44
38
|
# @api private
|
45
39
|
#
|
46
40
|
def dispatch
|
47
|
-
|
41
|
+
effective_emitter.new(node, parent).write_to_buffer
|
48
42
|
end
|
49
43
|
|
50
44
|
# Return effective emitter
|
@@ -96,11 +90,7 @@ module Unparser
|
|
96
90
|
|
97
91
|
# Test for unary operator implemented as method
|
98
92
|
#
|
99
|
-
# @return [
|
100
|
-
# if node is a unary operator
|
101
|
-
#
|
102
|
-
# @return [false]
|
103
|
-
# otherwise
|
93
|
+
# @return [Boolean]
|
104
94
|
#
|
105
95
|
# @api private
|
106
96
|
#
|
@@ -110,11 +100,7 @@ module Unparser
|
|
110
100
|
|
111
101
|
# Test for binary operator implemented as method
|
112
102
|
#
|
113
|
-
# @return [
|
114
|
-
# if node is a binary operator
|
115
|
-
#
|
116
|
-
# @return [false]
|
117
|
-
# otherwise
|
103
|
+
# @return [Boolean]
|
118
104
|
#
|
119
105
|
# @api private
|
120
106
|
#
|
@@ -138,27 +124,19 @@ module Unparser
|
|
138
124
|
|
139
125
|
# Test for mlhs
|
140
126
|
#
|
141
|
-
# @return [
|
142
|
-
# if node is within an mlhs
|
143
|
-
#
|
144
|
-
# @return [false]
|
145
|
-
# otherwise
|
127
|
+
# @return [Boolean]
|
146
128
|
#
|
147
129
|
# @api private
|
148
130
|
#
|
149
131
|
def mlhs?
|
150
|
-
|
132
|
+
parent_type.equal?(:mlhs)
|
151
133
|
end
|
152
134
|
|
153
135
|
# Test for assignment
|
154
136
|
#
|
155
137
|
# FIXME: This also returns true for <= operator!
|
156
138
|
#
|
157
|
-
# @return [
|
158
|
-
# if node represents attribute / element assignment
|
159
|
-
#
|
160
|
-
# @return [false]
|
161
|
-
# otherwise
|
139
|
+
# @return [Boolean]
|
162
140
|
#
|
163
141
|
# @api private
|
164
142
|
#
|
@@ -16,7 +16,7 @@ module Unparser
|
|
16
16
|
#
|
17
17
|
def dispatch
|
18
18
|
emit_receiver
|
19
|
-
|
19
|
+
emit_operation
|
20
20
|
end
|
21
21
|
|
22
22
|
# Emit receiver
|
@@ -40,7 +40,7 @@ module Unparser
|
|
40
40
|
#
|
41
41
|
# @api private
|
42
42
|
#
|
43
|
-
def
|
43
|
+
def emit_operation
|
44
44
|
parentheses(*INDEX_PARENS) do
|
45
45
|
delimited(arguments)
|
46
46
|
end
|
@@ -50,20 +50,24 @@ module Unparser
|
|
50
50
|
# Emitter for assign to index nodes
|
51
51
|
class Assign < self
|
52
52
|
|
53
|
+
define_group(:indices, 2..-2)
|
54
|
+
define_child(:value, -1)
|
55
|
+
|
53
56
|
# Emit arguments
|
54
57
|
#
|
55
58
|
# @return [undefined]
|
56
59
|
#
|
57
60
|
# @api private
|
58
61
|
#
|
59
|
-
def
|
60
|
-
|
61
|
-
when 0
|
62
|
+
def emit_operation
|
63
|
+
if arguments.empty?
|
62
64
|
emit_regular_with_empty_args
|
63
|
-
when 1
|
64
|
-
emit_mlhs_arguments
|
65
65
|
else
|
66
|
-
|
66
|
+
if mlhs?
|
67
|
+
emit_mlhs_operation
|
68
|
+
else
|
69
|
+
emit_normal_operation
|
70
|
+
end
|
67
71
|
end
|
68
72
|
end
|
69
73
|
|
@@ -73,7 +77,7 @@ module Unparser
|
|
73
77
|
#
|
74
78
|
# @api private
|
75
79
|
#
|
76
|
-
def
|
80
|
+
def emit_mlhs_operation
|
77
81
|
parentheses(*INDEX_PARENS) do
|
78
82
|
delimited(arguments)
|
79
83
|
end
|
@@ -85,12 +89,7 @@ module Unparser
|
|
85
89
|
#
|
86
90
|
# @api private
|
87
91
|
#
|
88
|
-
def
|
89
|
-
# Workaround bug in RBX causes to crash here on
|
90
|
-
# *indices, value = arguments
|
91
|
-
#
|
92
|
-
# https://github.com/rubinius/rubinius/issues/3037
|
93
|
-
indices, value = arguments[0..-2], arguments.last
|
92
|
+
def emit_normal_operation
|
94
93
|
parentheses(*INDEX_PARENS) do
|
95
94
|
delimited(indices)
|
96
95
|
end
|
@@ -5,10 +5,13 @@ require 'spec_helper'
|
|
5
5
|
describe 'Unparser on ruby corpus' do
|
6
6
|
before do
|
7
7
|
if RUBY_VERSION == '1.9.3'
|
8
|
-
|
8
|
+
skip 'Corpus test not active for 1.9.3 because of limitations in encoding signalling, see Readme'
|
9
|
+
end
|
10
|
+
if RUBY_ENGINE == 'jruby'
|
11
|
+
skip 'Corpus test exhausts jruby heap space on travis'
|
9
12
|
end
|
10
13
|
if ENV['GUARD']
|
11
|
-
|
14
|
+
skip 'Do not execute corpus spec under guard'
|
12
15
|
end
|
13
16
|
end
|
14
17
|
ROOT = Pathname.new(__FILE__).parent.parent.parent.parent
|
data/spec/unit/unparser_spec.rb
CHANGED
@@ -392,6 +392,7 @@ describe Unparser do
|
|
392
392
|
assert_source 'self.foo'
|
393
393
|
assert_source 'a.foo'
|
394
394
|
assert_source 'A.foo'
|
395
|
+
assert_source 'foo[]'
|
395
396
|
assert_source 'foo[1]'
|
396
397
|
assert_source 'foo[*baz]'
|
397
398
|
assert_source 'foo(1)'
|
@@ -515,9 +516,9 @@ describe Unparser do
|
|
515
516
|
assert_source 'yield.foo'
|
516
517
|
assert_source 'Foo::Bar.foo'
|
517
518
|
assert_source '::BAZ.foo'
|
518
|
-
assert_source '
|
519
|
-
assert_source '(
|
520
|
-
assert_source '
|
519
|
+
assert_source 'foo[i].foo'
|
520
|
+
assert_source '(foo[i] = 1).foo'
|
521
|
+
assert_source 'foo[1..2].foo'
|
521
522
|
assert_source '(a.attribute ||= foo).bar'
|
522
523
|
assert_source 'foo.bar = baz[1]'
|
523
524
|
assert_source 'foo.bar = (baz || foo)'
|
@@ -1304,15 +1305,16 @@ describe Unparser do
|
|
1304
1305
|
end
|
1305
1306
|
|
1306
1307
|
context 'element assignment' do
|
1307
|
-
assert_source '
|
1308
|
-
assert_source '
|
1309
|
-
assert_source '
|
1310
|
-
assert_source '
|
1308
|
+
assert_source 'foo[index] = value'
|
1309
|
+
assert_source 'foo[*index] = value'
|
1310
|
+
assert_source 'foo[a, b] = value'
|
1311
|
+
assert_source 'foo.[]=()'
|
1312
|
+
assert_source 'foo[] = 1'
|
1311
1313
|
|
1312
1314
|
%w(+ - * / % & | || &&).each do |operator|
|
1313
1315
|
context "with #{operator}" do
|
1314
|
-
assert_source "
|
1315
|
-
assert_source "
|
1316
|
+
assert_source "foo[index] #{operator}= 2"
|
1317
|
+
assert_source "foo[] #{operator}= 2"
|
1316
1318
|
end
|
1317
1319
|
end
|
1318
1320
|
end
|
data/unparser.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = 'unparser'
|
5
|
-
gem.version = '0.1.
|
5
|
+
gem.version = '0.1.14'
|
6
6
|
|
7
7
|
gem.authors = ['Markus Schirp']
|
8
8
|
gem.email = 'mbj@schir-dso.com'
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.extra_rdoc_files = %w(README.md)
|
18
18
|
gem.executables = [ 'unparser' ]
|
19
19
|
|
20
|
-
gem.required_ruby_version
|
20
|
+
gem.required_ruby_version = '>= 1.9.3'
|
21
21
|
|
22
22
|
gem.add_dependency('parser', '~> 2.1')
|
23
23
|
gem.add_dependency('procto', '~> 0.0.2')
|
metadata
CHANGED
@@ -1,89 +1,111 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: unparser
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.14
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Markus Schirp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-06-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
15
14
|
name: parser
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
version: "2.1"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
22
20
|
type: :runtime
|
23
|
-
version_requirements: *id001
|
24
|
-
- !ruby/object:Gem::Dependency
|
25
|
-
name: procto
|
26
21
|
prerelease: false
|
27
|
-
|
28
|
-
requirements:
|
29
|
-
- - ~>
|
30
|
-
- !ruby/object:Gem::Version
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: procto
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
31
33
|
version: 0.0.2
|
32
34
|
type: :runtime
|
33
|
-
version_requirements: *id002
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: concord
|
36
35
|
prerelease: false
|
37
|
-
|
38
|
-
requirements:
|
39
|
-
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: concord
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
41
47
|
version: 0.1.5
|
42
48
|
type: :runtime
|
43
|
-
version_requirements: *id003
|
44
|
-
- !ruby/object:Gem::Dependency
|
45
|
-
name: adamantium
|
46
49
|
prerelease: false
|
47
|
-
|
48
|
-
requirements:
|
49
|
-
- - ~>
|
50
|
-
- !ruby/object:Gem::Version
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.1.5
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: adamantium
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
51
61
|
version: 0.2.0
|
52
62
|
type: :runtime
|
53
|
-
version_requirements: *id004
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: equalizer
|
56
63
|
prerelease: false
|
57
|
-
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.2.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: equalizer
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
61
75
|
version: 0.0.9
|
62
76
|
type: :runtime
|
63
|
-
version_requirements: *id005
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
name: abstract_type
|
66
77
|
prerelease: false
|
67
|
-
|
68
|
-
requirements:
|
69
|
-
- - ~>
|
70
|
-
- !ruby/object:Gem::Version
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.0.9
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: abstract_type
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
71
89
|
version: 0.0.7
|
72
90
|
type: :runtime
|
73
|
-
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.0.7
|
74
97
|
description: Generate equivalent source for parser gem AST nodes
|
75
98
|
email: mbj@schir-dso.com
|
76
|
-
executables:
|
99
|
+
executables:
|
77
100
|
- unparser
|
78
101
|
extensions: []
|
79
|
-
|
80
|
-
extra_rdoc_files:
|
102
|
+
extra_rdoc_files:
|
81
103
|
- README.md
|
82
|
-
files:
|
83
|
-
- .gitignore
|
84
|
-
- .rspec
|
85
|
-
- .rubocop.yml
|
86
|
-
- .travis.yml
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".rspec"
|
107
|
+
- ".rubocop.yml"
|
108
|
+
- ".travis.yml"
|
87
109
|
- Changelog.md
|
88
110
|
- Gemfile
|
89
111
|
- Gemfile.devtools
|
@@ -111,6 +133,7 @@ files:
|
|
111
133
|
- lib/unparser/cli/source.rb
|
112
134
|
- lib/unparser/comments.rb
|
113
135
|
- lib/unparser/constants.rb
|
136
|
+
- lib/unparser/dsl.rb
|
114
137
|
- lib/unparser/emitter.rb
|
115
138
|
- lib/unparser/emitter/alias.rb
|
116
139
|
- lib/unparser/emitter/argument.rb
|
@@ -184,32 +207,30 @@ files:
|
|
184
207
|
- spec/unit/unparser_spec.rb
|
185
208
|
- unparser.gemspec
|
186
209
|
homepage: http://github.com/mbj/unparser
|
187
|
-
licenses:
|
210
|
+
licenses:
|
188
211
|
- MIT
|
189
212
|
metadata: {}
|
190
|
-
|
191
213
|
post_install_message:
|
192
214
|
rdoc_options: []
|
193
|
-
|
194
|
-
require_paths:
|
215
|
+
require_paths:
|
195
216
|
- lib
|
196
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
197
|
-
requirements:
|
198
|
-
-
|
199
|
-
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
217
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 1.9.3
|
222
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
|
+
requirements:
|
224
|
+
- - ">="
|
225
|
+
- !ruby/object:Gem::Version
|
226
|
+
version: '0'
|
205
227
|
requirements: []
|
206
|
-
|
207
228
|
rubyforge_project:
|
208
229
|
rubygems_version: 2.2.2
|
209
230
|
signing_key:
|
210
231
|
specification_version: 4
|
211
232
|
summary: Generate equivalent source for parser gem AST nodes
|
212
|
-
test_files:
|
233
|
+
test_files:
|
213
234
|
- spec/integration/unparser/corpus_spec.rb
|
214
235
|
- spec/integrations.yml
|
215
236
|
- spec/spec_helper.rb
|