unparser 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 213c690e6dae589a2d99f816fcb7a663c2e5b557
4
- data.tar.gz: ff3c326def1c6da82fd4f7d85e8fd8cb8ae8b4f1
3
+ metadata.gz: 76fd3cadb7aa3c25e62d45e012c2377b6fecc0e9
4
+ data.tar.gz: 9a5b5833a38bffedb47db8c578c83a09607e2ce9
5
5
  SHA512:
6
- metadata.gz: 8fd4fd4dfb549045719c944e5c696f51678a475dac3ab80be179bf632884bde20c137948a822069788cc76ec7474d6e8e6548e6c7468e8e4c2b3549b3dc52a75
7
- data.tar.gz: 09ea9e85f869c3e9d9a829b05e52389204278116abf5417f98f223d311ce2e1b3e0bcb54a78ff942e4bd124d80abb0518c767776506ff35d3f983f78cc8d9d5f
6
+ metadata.gz: 091f158bbe82fb41ef74e0d5367672083a21b95df31ad7493423fc13267348b1fed8331c8b3058ee0e18fad31a28498ed90c791852074d94fba986ef4a65b957
7
+ data.tar.gz: a1b024cabf31dfceacdf8320d832859f6cf8ec2c4a3970373a90400e81a2d501fa2a6bd0d4fcd2bfc73a961a72f35d2386246f2884ea66c5315430768317b177
data/.travis.yml CHANGED
@@ -3,10 +3,12 @@ script: 'bundle exec rake spec'
3
3
  rvm:
4
4
  - 1.9.3
5
5
  - 2.0.0
6
- - ruby-head
7
6
  - jruby-19mode
8
7
  - jruby-head
9
8
  - rbx-19mode
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: ruby-head
10
12
  notifications:
11
13
  irc:
12
14
  channels:
data/Changelog.md CHANGED
@@ -1,3 +1,11 @@
1
+ # v0.0.3 2013-06-17
2
+
3
+ * Adjust to changes in parser 2.0.0.beta5 => beta6
4
+
5
+ # v0.0.2 2013-06-17
6
+
7
+ Crappy release
8
+
1
9
  # v0.0.1 2013-06-15
2
10
 
3
11
  Initial release
data/Guardfile CHANGED
@@ -4,7 +4,7 @@ guard :bundler do
4
4
  watch('Gemfile')
5
5
  end
6
6
 
7
- guard :rspec, :all_on_start => false, :all_after_pass => false, :cli => '--fail-fast' do
7
+ guard :rspec, :all_on_start => false, :all_after_pass => false, :cli => '--fail-fast --backtrace' do
8
8
  # run all specs if the spec_helper or supporting files files are modified
9
9
  watch('spec/spec_helper.rb') { 'spec/unit' }
10
10
  watch(%r{\Aspec/(?:lib|support|shared)/.+\.rb\z}) { 'spec/unit' }
data/README.md CHANGED
@@ -7,6 +7,8 @@ unparser
7
7
 
8
8
  Generate equivalent inputs for ASTs from whitequarks awesome [parser](https://github.com/whitequark/parser).
9
9
 
10
+ Only supports 1.9 syntax currently!
11
+
10
12
  Usage
11
13
  -----
12
14
 
data/config/flay.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 14
3
- total_score: 342
3
+ total_score: 341
data/config/reek.yml CHANGED
@@ -15,7 +15,7 @@ TooManyInstanceVariables:
15
15
  max_instance_variables: 3
16
16
  TooManyMethods:
17
17
  exclude:
18
- - Unparser::Emitter # TODO: 13 methods, mostly helpers for deduplicate sublcasses
18
+ - Unparser::Emitter # TODO: 13 methods, mostly helpers for deduplicate sublcasses
19
19
  enabled: true
20
20
  max_methods: 10
21
21
  UncommunicativeMethodName:
@@ -28,7 +28,7 @@ UncommunicativeMethodName:
28
28
  - !ruby/regexp /[A-Z]/
29
29
  LongParameterList:
30
30
  max_params: 3
31
- exclude:
31
+ exclude:
32
32
  - Unparser#self.transquote
33
33
  enabled: true
34
34
  overrides: {}
@@ -62,7 +62,7 @@ NestedIterators:
62
62
  max_allowed_nesting: 1
63
63
  TooManyStatements:
64
64
  max_statements: 5
65
- exclude:
65
+ exclude:
66
66
  - Unparser::Emitter::Block#dispatch # 6 statements
67
67
  - Unparser::Emitter::Def#dispatch # 6 statements
68
68
  - Unparser::Emitter::Class#dispatch # 6 statements
@@ -88,7 +88,7 @@ UncommunicativeVariableName:
88
88
  - !ruby/regexp /[0-9]$/
89
89
  - !ruby/regexp /[A-Z]/
90
90
  RepeatedConditional:
91
- exclude:
91
+ exclude:
92
92
  - Unparser::Emitter::Send # TODO Fixme
93
93
  - Unparser::Emitter::If
94
94
  enabled: true
@@ -101,6 +101,8 @@ DataClump:
101
101
  ControlParameter:
102
102
  exclude: []
103
103
  enabled: true
104
+ NilCheck:
105
+ enabled: false
104
106
  LongYieldList:
105
107
  max_params: 1
106
108
  exclude: []
data/lib/unparser.rb CHANGED
@@ -9,13 +9,16 @@ module Unparser
9
9
 
10
10
  # Unparse ast into string
11
11
  #
12
- # @param [Parser::Node] node
12
+ # @param [Parser::Node, nil] node
13
13
  #
14
14
  # @return [String]
15
15
  #
16
16
  # @api private
17
17
  #
18
18
  def self.unparse(node)
19
+ if node.nil?
20
+ node = Parser::AST::Node.new(:empty)
21
+ end
19
22
  buffer = Buffer.new
20
23
  Emitter.visit(node, buffer)
21
24
  buffer.content
@@ -84,5 +87,6 @@ require 'unparser/emitter/for'
84
87
  require 'unparser/emitter/repetition'
85
88
  require 'unparser/emitter/root'
86
89
  require 'unparser/emitter/match'
90
+ require 'unparser/emitter/empty'
87
91
 
88
92
  Unparser::Emitter::REGISTRY.freeze
@@ -15,20 +15,22 @@ module Unparser
15
15
  **
16
16
  ).map(&:to_sym).to_set.freeze
17
17
 
18
- WS = ' '.freeze
19
- NL = "\n".freeze
20
- O_DOT = '.'.freeze
21
- O_LT = '<'.freeze
22
- O_DLT = '<<'.freeze
23
- O_AMP = '&'.freeze
24
- O_ASN = '='.freeze
25
- O_SPLAT = '*'.freeze
26
- O_ASR = '=>'.freeze
27
- O_PIPE = '|'.freeze
28
- O_DCL = '::'.freeze
29
- O_NEG = '!'.freeze
30
- O_OR = '||'.freeze
31
- O_AND = '&&'.freeze
18
+ WS = ' '.freeze
19
+ NL = "\n".freeze
20
+ T_DOT = '.'.freeze
21
+ T_LT = '<'.freeze
22
+ T_DLT = '<<'.freeze
23
+ T_AMP = '&'.freeze
24
+ T_ASN = '='.freeze
25
+ T_SPLAT = '*'.freeze
26
+ T_DSPLAT = '**'.freeze
27
+ T_ASR = '=>'.freeze
28
+ T_PIPE = '|'.freeze
29
+ T_DCL = '::'.freeze
30
+ T_NEG = '!'.freeze
31
+ T_OR = '||'.freeze
32
+ T_AND = '&&'.freeze
33
+ T_COLON = ':'.freeze
32
34
 
33
35
  M_PO = '('.freeze
34
36
  M_PC = ')'.freeze
@@ -65,7 +65,7 @@ module Unparser
65
65
  # @api private
66
66
  #
67
67
  def dispatch
68
- write(O_AMP, name.to_s)
68
+ write(T_AMP, name.to_s)
69
69
  end
70
70
 
71
71
  end # Blockarg
@@ -86,15 +86,79 @@ module Unparser
86
86
  # @api private
87
87
  #
88
88
  def dispatch
89
- write(name.to_s, WS, O_ASN, WS)
89
+ write(name.to_s, WS, T_ASN, WS)
90
90
  visit(value)
91
91
  end
92
92
  end
93
93
 
94
+ # Keyword rest argument emitter
95
+ class KeywordRest < self
96
+
97
+ handle :kwrestarg
98
+
99
+ children :name
100
+
101
+ private
102
+
103
+ # Perform dispatch
104
+ #
105
+ # @return [undefined]
106
+ #
107
+ # @api private
108
+ #
109
+ def dispatch
110
+ write(T_DSPLAT, name.to_s)
111
+ end
112
+ end # KeywordRest
113
+
114
+ # Optional keyword argument emitter
115
+ class KeywordOptional < self
116
+ handle :kwoptarg
117
+
118
+ children :name, :value
119
+
120
+ private
121
+
122
+ # Perform dispatch
123
+ #
124
+ # @return [undefined]
125
+ #
126
+ # @api private
127
+ #
128
+ def dispatch
129
+ write(name.to_s, T_COLON, WS)
130
+ visit(value)
131
+ end
132
+
133
+ end # KeywordOptional
134
+
135
+ # Keyword argument emitter
136
+ class Kwarg < self
137
+ handle :kwarg
138
+
139
+ children :name
140
+
141
+ private
142
+
143
+ # Perform dispatch
144
+ #
145
+ # @return [undefined]
146
+ #
147
+ # @api private
148
+ #
149
+ def dispatch
150
+ write(name.to_s, T_COLON)
151
+ end
152
+
153
+ end # Restarg
154
+
94
155
  # Rest argument emitter
95
156
  class Restarg < self
157
+
96
158
  handle :restarg
97
159
 
160
+ children :name
161
+
98
162
  private
99
163
 
100
164
  # Perform dispatch
@@ -104,7 +168,7 @@ module Unparser
104
168
  # @api private
105
169
  #
106
170
  def dispatch
107
- write(O_SPLAT, first_child.to_s)
171
+ write(T_SPLAT, name.to_s)
108
172
  end
109
173
 
110
174
  end # Restarg
@@ -114,6 +178,8 @@ module Unparser
114
178
 
115
179
  handle :arg
116
180
 
181
+ children :name
182
+
117
183
  private
118
184
 
119
185
  # Perform dispatch
@@ -123,7 +189,7 @@ module Unparser
123
189
  # @api private
124
190
  #
125
191
  def dispatch
126
- write(first_child.to_s)
192
+ write(name.to_s)
127
193
  end
128
194
 
129
195
  end # Argument
@@ -144,7 +210,7 @@ module Unparser
144
210
  # @api private
145
211
  #
146
212
  def dispatch
147
- write(O_AMP)
213
+ write(T_AMP)
148
214
  visit(name)
149
215
  end
150
216
 
@@ -29,7 +29,7 @@ module Unparser
29
29
  def emit_right
30
30
  right = right_node
31
31
  if right
32
- write(WS, O_ASN, WS)
32
+ write(WS, T_ASN, WS)
33
33
  visit(right)
34
34
  end
35
35
  end
@@ -105,7 +105,7 @@ module Unparser
105
105
  # @api private
106
106
  #
107
107
  def emit_right
108
- write(WS, O_ASN, WS)
108
+ write(WS, T_ASN, WS)
109
109
  right = children.last
110
110
  case right.type
111
111
  when :array
@@ -113,7 +113,7 @@ module Unparser
113
113
  #
114
114
  def emit_assignment
115
115
  return unless assignment
116
- write(WS, O_ASR, WS)
116
+ write(WS, T_ASR, WS)
117
117
  visit(assignment)
118
118
  end
119
119
 
@@ -135,7 +135,6 @@ module Unparser
135
135
  def dispatch
136
136
  case children.length
137
137
  when 0
138
- write(K_NIL)
139
138
  when 1
140
139
  visit(first_child)
141
140
  else
@@ -7,8 +7,8 @@ module Unparser
7
7
  children :left, :right
8
8
 
9
9
  MAP = {
10
- :or => O_OR,
11
- :and => O_AND
10
+ :or => T_OR,
11
+ :and => T_AND
12
12
  }.freeze
13
13
 
14
14
  private
@@ -20,7 +20,7 @@ module Unparser
20
20
  visit(send)
21
21
  write(WS, K_DO)
22
22
  emit_block_arguments
23
- indented { emit_body }
23
+ emit_body
24
24
  k_end
25
25
  end
26
26
 
@@ -33,21 +33,11 @@ module Unparser
33
33
  def emit_block_arguments
34
34
  return if arguments.children.empty?
35
35
  ws
36
- parentheses(O_PIPE, O_PIPE) do
36
+ parentheses(T_PIPE, T_PIPE) do
37
37
  visit(arguments)
38
38
  end
39
39
  end
40
40
 
41
- # Emit body
42
- #
43
- # @return [undefined]
44
- #
45
- # @api private
46
- #
47
- def emit_body
48
- visit(body)
49
- end
50
-
51
41
  end # Block
52
42
  end # Emitter
53
43
  end # Unparser
@@ -14,7 +14,7 @@ module Unparser
14
14
  # @api private
15
15
  #
16
16
  def dispatch
17
- write(O_DCL)
17
+ write(T_DCL)
18
18
  end
19
19
 
20
20
  end # CBase
@@ -31,7 +31,7 @@ module Unparser
31
31
  #
32
32
  def emit_superclass
33
33
  return unless superclass
34
- write(WS, O_LT, WS)
34
+ write(WS, T_LT, WS)
35
35
  visit(superclass)
36
36
  end
37
37
 
@@ -51,7 +51,7 @@ module Unparser
51
51
  # @api private
52
52
  #
53
53
  def dispatch
54
- write(K_CLASS, WS, O_DLT, WS)
54
+ write(K_CLASS, WS, T_DLT, WS)
55
55
  visit(object)
56
56
  emit_body
57
57
  k_end
@@ -37,16 +37,6 @@ module Unparser
37
37
  k_end
38
38
  end
39
39
 
40
- # Emit body
41
- #
42
- # @return [undefined]
43
- #
44
- # @api private
45
- #
46
- def emit_body
47
- indented { visit(body) }
48
- end
49
-
50
40
  # Emit arguments
51
41
  #
52
42
  # @return [undefined]
@@ -98,7 +88,7 @@ module Unparser
98
88
  #
99
89
  def emit_name
100
90
  visit(subject)
101
- write(O_DOT, name.to_s)
91
+ write(T_DOT, name.to_s)
102
92
  end
103
93
 
104
94
  end # Singleton
@@ -0,0 +1,22 @@
1
+ module Unparser
2
+ class Emitter
3
+
4
+ # Emitter for artifical empty node
5
+ class Empty < self
6
+
7
+ handle :empty
8
+
9
+ private
10
+
11
+ # Perform dispatch
12
+ #
13
+ # @return [undefined]
14
+ #
15
+ # @api private
16
+ #
17
+ def dispatch
18
+ end
19
+
20
+ end
21
+ end
22
+ end # Unparser
@@ -16,7 +16,7 @@ module Unparser
16
16
  # @api private
17
17
  #
18
18
  def dispatch
19
- write(O_NEG)
19
+ write(T_NEG)
20
20
  visit(body)
21
21
  end
22
22
 
@@ -55,7 +55,7 @@ module Unparser
55
55
  # @api private
56
56
  #
57
57
  def emit_operator
58
- write(WS, children[1].to_s, O_ASN, WS)
58
+ write(WS, children[1].to_s, T_ASN, WS)
59
59
  end
60
60
 
61
61
  end # OpAssign
@@ -24,7 +24,7 @@ module Unparser
24
24
  def dispatch
25
25
  write(MAP.fetch(node.type), WS)
26
26
  visit(condition)
27
- indented { visit(body) }
27
+ emit_body
28
28
  k_end
29
29
  end
30
30
 
@@ -146,7 +146,7 @@ module Unparser
146
146
  def emit_receiver
147
147
  return unless first_child
148
148
  emit_unambiguous_receiver
149
- write(O_DOT)
149
+ write(T_DOT)
150
150
  end
151
151
 
152
152
  # Test for unary operator implemented as method
@@ -26,10 +26,10 @@ module Unparser
26
26
  #
27
27
  def emit_receiver
28
28
  emit_unambiguous_receiver
29
- write(O_DOT) if parentheses?
29
+ write(T_DOT) if parentheses?
30
30
  end
31
31
 
32
- # Emit operator
32
+ # Emit operator
33
33
  #
34
34
  # @return [undefined]
35
35
  #
@@ -70,7 +70,7 @@ module Unparser
70
70
  delimited([index])
71
71
  end
72
72
  return if assignment.empty? # mlhs
73
- write(WS, O_ASN, WS)
73
+ write(WS, T_ASN, WS)
74
74
  delimited(assignment)
75
75
  end
76
76
 
@@ -16,7 +16,7 @@ module Unparser
16
16
  # @api private
17
17
  #
18
18
  def dispatch
19
- write(O_SPLAT)
19
+ write(T_SPLAT)
20
20
  visit(subject) if subject
21
21
  end
22
22
  end
@@ -52,7 +52,7 @@ module Unparser
52
52
  return unless parent
53
53
  visit(parent)
54
54
  if parent.type != :cbase
55
- write(O_DCL)
55
+ write(T_DCL)
56
56
  end
57
57
  end
58
58
  end
@@ -6,7 +6,8 @@ describe Unparser, 'spike' do
6
6
  PARSERS = IceNine.deep_freeze(
7
7
  '1.8' => Parser::Ruby18,
8
8
  '1.9' => Parser::Ruby19,
9
- '2.0' => Parser::Ruby20
9
+ '2.0' => Parser::Ruby20,
10
+ '2.1' => Parser::Ruby21
10
11
  )
11
12
 
12
13
  RUBIES = PARSERS.keys.freeze
@@ -44,7 +45,7 @@ describe Unparser, 'spike' do
44
45
  def self.assert_generates(ast, expected, versions = RUBIES)
45
46
  with_versions(versions) do |version, parser|
46
47
  it "should generate #{ast.inspect} as #{expected} under #{version}" do
47
- unless ast.kind_of?(Parser::AST::Node)
48
+ if ast.kind_of?(String)
48
49
  ast = parser.parse(ast)
49
50
  end
50
51
  generated = Unparser.unparse(ast)
@@ -238,17 +239,50 @@ describe Unparser, 'spike' do
238
239
  assert_source 'a.foo'
239
240
  assert_source 'A.foo'
240
241
  assert_source 'foo[1]'
242
+ assert_source 'foo[*baz]'
241
243
  assert_source 'foo(1)'
242
244
  assert_source 'foo(bar)'
243
245
  assert_source 'foo(&block)'
244
246
  assert_source 'foo(*arguments)'
245
- assert_source "foo do\n nil\nend"
246
- assert_source "foo(1) do\n nil\nend"
247
- assert_source "foo do |a, b|\n nil\nend"
248
- assert_source "foo do |a, *b|\n nil\nend"
249
- assert_source "foo do |a, *|\n nil\nend"
250
- assert_source "foo do\n bar\nend"
251
- assert_source 'foo.bar(*args)'
247
+ assert_source 'foo(*arguments)'
248
+ assert_source <<-RUBY
249
+ foo do
250
+ end
251
+ RUBY
252
+
253
+ assert_source <<-RUBY
254
+ foo(1) do
255
+ nil
256
+ end
257
+ RUBY
258
+
259
+ assert_source <<-RUBY
260
+ foo do |a, b|
261
+ nil
262
+ end
263
+ RUBY
264
+
265
+ assert_source <<-RUBY
266
+ foo do |a, *b|
267
+ nil
268
+ end
269
+ RUBY
270
+
271
+ assert_source <<-RUBY
272
+ foo do |a, *|
273
+ nil
274
+ end
275
+ RUBY
276
+
277
+ assert_source <<-RUBY
278
+ foo do
279
+ bar
280
+ end
281
+ RUBY
282
+
283
+ assert_source <<-RUBY
284
+ foo.bar(*args)
285
+ RUBY
252
286
 
253
287
  assert_source <<-RUBY
254
288
  foo.bar do |(a, b), c|
@@ -285,7 +319,7 @@ describe Unparser, 'spike' do
285
319
  end
286
320
 
287
321
  context 'begin; end' do
288
- assert_generates s(:begin), 'nil'
322
+ assert_generates s(:begin), ''
289
323
 
290
324
  assert_source <<-RUBY
291
325
  foo
@@ -511,6 +545,11 @@ describe Unparser, 'spike' do
511
545
  context 'def' do
512
546
  context 'on instance' do
513
547
 
548
+ assert_source <<-RUBY
549
+ def foo
550
+ end
551
+ RUBY
552
+
514
553
  assert_source <<-RUBY
515
554
  def foo
516
555
  bar
@@ -547,6 +586,16 @@ describe Unparser, 'spike' do
547
586
  end
548
587
  RUBY
549
588
 
589
+ assert_source <<-RUBY, %w(2.1)
590
+ def foo(bar: 1)
591
+ end
592
+ RUBY
593
+
594
+ assert_source <<-RUBY, %w(2.0)
595
+ def foo(**bar)
596
+ end
597
+ RUBY
598
+
550
599
  assert_source <<-RUBY
551
600
  def foo(*)
552
601
  bar
@@ -601,16 +650,15 @@ describe Unparser, 'spike' do
601
650
  baz
602
651
  end
603
652
  RUBY
653
+ end
654
+
655
+ context 'on singleton' do
604
656
 
605
657
  assert_source <<-RUBY
606
658
  def self.foo
607
- bar
608
- baz
609
659
  end
610
660
  RUBY
611
- end
612
661
 
613
- context 'on singleton' do
614
662
 
615
663
  assert_source <<-RUBY
616
664
  def self.foo
@@ -618,6 +666,13 @@ describe Unparser, 'spike' do
618
666
  end
619
667
  RUBY
620
668
 
669
+ assert_source <<-RUBY
670
+ def self.foo
671
+ bar
672
+ baz
673
+ end
674
+ RUBY
675
+
621
676
  assert_source <<-RUBY
622
677
  def Foo.bar
623
678
  bar
@@ -745,6 +800,11 @@ describe Unparser, 'spike' do
745
800
  end
746
801
 
747
802
  context 'lambda' do
803
+ assert_source <<-RUBY
804
+ lambda do
805
+ end
806
+ RUBY
807
+
748
808
  assert_source <<-RUBY
749
809
  lambda do |a, b|
750
810
  a
@@ -897,6 +957,11 @@ describe Unparser, 'spike' do
897
957
  end
898
958
 
899
959
  context 'while' do
960
+ assert_source <<-RUBY
961
+ while false
962
+ end
963
+ RUBY
964
+
900
965
  assert_source <<-RUBY
901
966
  while false
902
967
  3
@@ -905,6 +970,11 @@ describe Unparser, 'spike' do
905
970
  end
906
971
 
907
972
  context 'until' do
973
+ assert_source <<-RUBY
974
+ until false
975
+ end
976
+ RUBY
977
+
908
978
  assert_source <<-RUBY
909
979
  until false
910
980
  3
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'unparser'
2
2
  require 'devtools/spec_helper'
3
3
 
4
+ require 'parser/ruby21'
5
+
4
6
  module SpecHelper
5
7
  def s(type, *children)
6
8
  Parser::AST::Node.new(type, children)
data/unparser.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'unparser'
5
- s.version = '0.0.2'
5
+ s.version = '0.0.3'
6
6
 
7
7
  s.authors = ['Markus Schirp']
8
8
  s.email = 'mbj@schir-dso.com'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-17 00:00:00.000000000 Z
11
+ date: 2013-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -120,6 +120,7 @@ files:
120
120
  - lib/unparser/emitter/class.rb
121
121
  - lib/unparser/emitter/def.rb
122
122
  - lib/unparser/emitter/defined.rb
123
+ - lib/unparser/emitter/empty.rb
123
124
  - lib/unparser/emitter/for.rb
124
125
  - lib/unparser/emitter/hookexe.rb
125
126
  - lib/unparser/emitter/if.rb