unparser 0.1.5 → 0.1.6

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.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +38 -2
  3. data/.travis.yml +3 -6
  4. data/Changelog.md +7 -0
  5. data/Gemfile +1 -0
  6. data/Gemfile.devtools +22 -17
  7. data/README.md +3 -4
  8. data/TODO +3 -2
  9. data/bin/unparser +10 -0
  10. data/circle.yml +2 -0
  11. data/config/flay.yml +1 -1
  12. data/config/flog.yml +1 -1
  13. data/config/reek.yml +10 -0
  14. data/config/rubocop.yml +9 -17
  15. data/lib/unparser.rb +8 -1
  16. data/lib/unparser/buffer.rb +2 -0
  17. data/lib/unparser/cli.rb +113 -0
  18. data/lib/unparser/cli/differ.rb +30 -0
  19. data/lib/unparser/cli/preprocessor.rb +196 -0
  20. data/lib/unparser/cli/source.rb +118 -0
  21. data/lib/unparser/comments.rb +64 -23
  22. data/lib/unparser/constants.rb +19 -7
  23. data/lib/unparser/emitter.rb +23 -25
  24. data/lib/unparser/emitter/alias.rb +2 -0
  25. data/lib/unparser/emitter/argument.rb +2 -0
  26. data/lib/unparser/emitter/assignment.rb +3 -1
  27. data/lib/unparser/emitter/begin.rb +3 -6
  28. data/lib/unparser/emitter/binary.rb +2 -0
  29. data/lib/unparser/emitter/block.rb +2 -0
  30. data/lib/unparser/emitter/break.rb +4 -5
  31. data/lib/unparser/emitter/case.rb +2 -0
  32. data/lib/unparser/emitter/cbase.rb +2 -0
  33. data/lib/unparser/emitter/class.rb +4 -3
  34. data/lib/unparser/emitter/def.rb +2 -0
  35. data/lib/unparser/emitter/defined.rb +2 -0
  36. data/lib/unparser/emitter/empty.rb +2 -0
  37. data/lib/unparser/emitter/ensure.rb +2 -0
  38. data/lib/unparser/emitter/flipflop.rb +2 -0
  39. data/lib/unparser/emitter/for.rb +2 -0
  40. data/lib/unparser/emitter/hookexe.rb +2 -0
  41. data/lib/unparser/emitter/if.rb +2 -0
  42. data/lib/unparser/emitter/literal.rb +2 -0
  43. data/lib/unparser/emitter/literal/array.rb +33 -0
  44. data/lib/unparser/emitter/literal/dynamic.rb +21 -1
  45. data/lib/unparser/emitter/literal/dynamic_body.rb +9 -5
  46. data/lib/unparser/emitter/literal/execute_string.rb +2 -0
  47. data/lib/unparser/emitter/literal/hash.rb +136 -0
  48. data/lib/unparser/emitter/literal/primitive.rb +4 -2
  49. data/lib/unparser/emitter/literal/range.rb +2 -0
  50. data/lib/unparser/emitter/literal/regexp.rb +4 -2
  51. data/lib/unparser/emitter/literal/singleton.rb +2 -0
  52. data/lib/unparser/emitter/match.rb +2 -0
  53. data/lib/unparser/emitter/module.rb +2 -3
  54. data/lib/unparser/emitter/next.rb +2 -0
  55. data/lib/unparser/emitter/op_assign.rb +3 -1
  56. data/lib/unparser/emitter/redo.rb +2 -0
  57. data/lib/unparser/emitter/repetition.rb +2 -0
  58. data/lib/unparser/emitter/resbody.rb +2 -0
  59. data/lib/unparser/emitter/rescue.rb +2 -0
  60. data/lib/unparser/emitter/retry.rb +2 -0
  61. data/lib/unparser/emitter/return.rb +19 -4
  62. data/lib/unparser/emitter/root.rb +13 -0
  63. data/lib/unparser/emitter/send.rb +26 -22
  64. data/lib/unparser/emitter/send/arguments.rb +46 -0
  65. data/lib/unparser/emitter/send/attribute_assignment.rb +35 -0
  66. data/lib/unparser/emitter/send/binary.rb +2 -0
  67. data/lib/unparser/emitter/send/index.rb +2 -0
  68. data/lib/unparser/emitter/send/regular.rb +4 -2
  69. data/lib/unparser/emitter/send/unary.rb +3 -1
  70. data/lib/unparser/emitter/splat.rb +2 -0
  71. data/lib/unparser/emitter/super.rb +2 -0
  72. data/lib/unparser/emitter/undef.rb +2 -0
  73. data/lib/unparser/emitter/variable.rb +2 -0
  74. data/lib/unparser/emitter/yield.rb +2 -0
  75. data/lib/unparser/finalize.rb +2 -0
  76. data/lib/unparser/node_helpers.rb +19 -0
  77. data/spec/spec_helper.rb +10 -0
  78. data/spec/unit/unparser/buffer/append_spec.rb +2 -0
  79. data/spec/unit/unparser/buffer/append_without_prefix_spec.rb +2 -0
  80. data/spec/unit/unparser/buffer/capture_content_spec.rb +2 -0
  81. data/spec/unit/unparser/buffer/content_spec.rb +3 -1
  82. data/spec/unit/unparser/buffer/fresh_line_spec.rb +2 -0
  83. data/spec/unit/unparser/buffer/indent_spec.rb +3 -1
  84. data/spec/unit/unparser/buffer/nl_spec.rb +2 -0
  85. data/spec/unit/unparser/buffer/unindent_spec.rb +2 -0
  86. data/spec/unit/unparser/comments/consume_spec.rb +2 -1
  87. data/spec/unit/unparser/comments/take_all_spec.rb +2 -1
  88. data/spec/unit/unparser/comments/take_before_spec.rb +6 -5
  89. data/spec/unit/unparser/comments/take_eol_comments_spec.rb +2 -1
  90. data/spec/unit/unparser/emitter/class_methods/handle_spec.rb +2 -0
  91. data/spec/unit/unparser_spec.rb +110 -57
  92. data/unparser.gemspec +5 -4
  93. metadata +32 -12
  94. data/bin/test-unparser +0 -26
  95. data/lib/unparser/emitter/literal/composed.rb +0 -64
  96. data/spec/unit/unparser/comments/skip_eol_comment_spec.rb +0 -29
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.1.5'
5
+ s.version = '0.1.6'
6
6
 
7
7
  s.authors = ['Markus Schirp']
8
8
  s.email = 'mbj@schir-dso.com'
@@ -15,11 +15,12 @@ Gem::Specification.new do |s|
15
15
  s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
16
16
  s.require_paths = %w(lib)
17
17
  s.extra_rdoc_files = %w(README.md)
18
- s.executables = [ 'test-unparser' ]
18
+ s.executables = [ 'unparser' ]
19
19
 
20
- s.add_dependency('parser', '~> 2.0.0')
20
+ s.add_dependency('parser', '~> 2.1.0')
21
+ s.add_dependency('procto', '~> 0.0.2')
21
22
  s.add_dependency('concord', '~> 0.1.4')
22
- s.add_dependency('adamantium', '~> 0.1.0')
23
+ s.add_dependency('adamantium', '~> 0.1')
23
24
  s.add_dependency('equalizer', '~> 0.0.7')
24
25
  s.add_dependency('abstract_type', '~> 0.0.7')
25
26
  end
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.1.5
4
+ version: 0.1.6
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-11-04 00:00:00.000000000 Z
11
+ date: 2013-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0
19
+ version: 2.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.0
26
+ version: 2.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: procto
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.2
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: concord
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +58,14 @@ dependencies:
44
58
  requirements:
45
59
  - - ~>
46
60
  - !ruby/object:Gem::Version
47
- version: 0.1.0
61
+ version: '0.1'
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ~>
53
67
  - !ruby/object:Gem::Version
54
- version: 0.1.0
68
+ version: '0.1'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: equalizer
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -83,7 +97,7 @@ dependencies:
83
97
  description: Generate equivalent source for parser gem AST nodes
84
98
  email: mbj@schir-dso.com
85
99
  executables:
86
- - test-unparser
100
+ - unparser
87
101
  extensions: []
88
102
  extra_rdoc_files:
89
103
  - README.md
@@ -99,7 +113,7 @@ files:
99
113
  - README.md
100
114
  - Rakefile
101
115
  - TODO
102
- - bin/test-unparser
116
+ - bin/unparser
103
117
  - circle.yml
104
118
  - config/devtools.yml
105
119
  - config/flay.yml
@@ -110,6 +124,10 @@ files:
110
124
  - config/yardstick.yml
111
125
  - lib/unparser.rb
112
126
  - lib/unparser/buffer.rb
127
+ - lib/unparser/cli.rb
128
+ - lib/unparser/cli/differ.rb
129
+ - lib/unparser/cli/preprocessor.rb
130
+ - lib/unparser/cli/source.rb
113
131
  - lib/unparser/comments.rb
114
132
  - lib/unparser/constants.rb
115
133
  - lib/unparser/emitter.rb
@@ -132,10 +150,11 @@ files:
132
150
  - lib/unparser/emitter/hookexe.rb
133
151
  - lib/unparser/emitter/if.rb
134
152
  - lib/unparser/emitter/literal.rb
135
- - lib/unparser/emitter/literal/composed.rb
153
+ - lib/unparser/emitter/literal/array.rb
136
154
  - lib/unparser/emitter/literal/dynamic.rb
137
155
  - lib/unparser/emitter/literal/dynamic_body.rb
138
156
  - lib/unparser/emitter/literal/execute_string.rb
157
+ - lib/unparser/emitter/literal/hash.rb
139
158
  - lib/unparser/emitter/literal/primitive.rb
140
159
  - lib/unparser/emitter/literal/range.rb
141
160
  - lib/unparser/emitter/literal/regexp.rb
@@ -152,6 +171,8 @@ files:
152
171
  - lib/unparser/emitter/return.rb
153
172
  - lib/unparser/emitter/root.rb
154
173
  - lib/unparser/emitter/send.rb
174
+ - lib/unparser/emitter/send/arguments.rb
175
+ - lib/unparser/emitter/send/attribute_assignment.rb
155
176
  - lib/unparser/emitter/send/binary.rb
156
177
  - lib/unparser/emitter/send/index.rb
157
178
  - lib/unparser/emitter/send/regular.rb
@@ -162,6 +183,7 @@ files:
162
183
  - lib/unparser/emitter/variable.rb
163
184
  - lib/unparser/emitter/yield.rb
164
185
  - lib/unparser/finalize.rb
186
+ - lib/unparser/node_helpers.rb
165
187
  - spec/spec_helper.rb
166
188
  - spec/unit/unparser/buffer/append_spec.rb
167
189
  - spec/unit/unparser/buffer/append_without_prefix_spec.rb
@@ -172,7 +194,6 @@ files:
172
194
  - spec/unit/unparser/buffer/nl_spec.rb
173
195
  - spec/unit/unparser/buffer/unindent_spec.rb
174
196
  - spec/unit/unparser/comments/consume_spec.rb
175
- - spec/unit/unparser/comments/skip_eol_comment_spec.rb
176
197
  - spec/unit/unparser/comments/take_all_spec.rb
177
198
  - spec/unit/unparser/comments/take_before_spec.rb
178
199
  - spec/unit/unparser/comments/take_eol_comments_spec.rb
@@ -199,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
220
  version: '0'
200
221
  requirements: []
201
222
  rubyforge_project:
202
- rubygems_version: 2.0.2
223
+ rubygems_version: 2.0.14
203
224
  signing_key:
204
225
  specification_version: 4
205
226
  summary: Generate equivalent source for parser gem AST nodes
@@ -214,7 +235,6 @@ test_files:
214
235
  - spec/unit/unparser/buffer/nl_spec.rb
215
236
  - spec/unit/unparser/buffer/unindent_spec.rb
216
237
  - spec/unit/unparser/comments/consume_spec.rb
217
- - spec/unit/unparser/comments/skip_eol_comment_spec.rb
218
238
  - spec/unit/unparser/comments/take_all_spec.rb
219
239
  - spec/unit/unparser/comments/take_before_spec.rb
220
240
  - spec/unit/unparser/comments/take_eol_comments_spec.rb
data/bin/test-unparser DELETED
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- trap('INT') do |status|
4
- exit! 128 + status
5
- end
6
-
7
- require 'unparser'
8
- require 'parser/current'
9
-
10
- ARGV.each do |file|
11
- source = File.read(file)
12
- node = Parser::CurrentRuby.parse(source)
13
- generated = Unparser.unparse(node)
14
- unparsed = Parser::CurrentRuby.parse(generated)
15
- unless unparsed == node
16
- $stderr.puts 'Node:'
17
- $stderr.puts node.inspect
18
- $stderr.puts 'Unparsed-Node:'
19
- $stderr.puts unparsed.inspect
20
- $stderr.puts 'Original:'
21
- $stderr.puts source
22
- $stderr.puts 'Generated:'
23
- $stderr.puts generated
24
- fail 'BUG!'
25
- end
26
- end
@@ -1,64 +0,0 @@
1
- module Unparser
2
- class Emitter
3
- class Literal
4
-
5
- # Emitter for hash keyvalue pair
6
- class HashPair < self
7
- HASHROCKET = ' => '.freeze
8
-
9
- handle :pair
10
-
11
- private
12
-
13
- # Perform dispatch
14
- #
15
- # @return [undefined]
16
- #
17
- # @api private
18
- #
19
- def dispatch
20
- delimited(children, HASHROCKET)
21
- end
22
-
23
- end # HashPair
24
-
25
- # Base class for compound literal emitters
26
- class Compound < self
27
-
28
- private
29
-
30
- # Perform dispatch
31
- #
32
- # @return [undefined]
33
- #
34
- # @api private
35
- #
36
- def dispatch
37
- util = self.class
38
- parentheses(util::OPEN, util::CLOSE) do
39
- delimited(children, util::DELIMITER)
40
- end
41
- end
42
-
43
- # Hash literal emitter
44
- class Hash < self
45
- OPEN = '{'.freeze
46
- CLOSE = '}'.freeze
47
- DELIMITER = ', '.freeze
48
-
49
- handle :hash
50
- end # Hash
51
-
52
- # Array literal emitter
53
- class Array < self
54
- OPEN = '['.freeze
55
- CLOSE = ']'.freeze
56
- DELIMITER = ', '.freeze
57
-
58
- handle :array
59
- end # Array
60
-
61
- end # Compound
62
- end # Literal
63
- end # Emitter
64
- end # Unparser
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
- require 'parser/current'
3
-
4
- describe Unparser::Comments, '#skip_eol_comment' do
5
-
6
- let(:ast_and_comments) do
7
- Parser::CurrentRuby.parse_with_comments(<<-RUBY)
8
- def hi # comment
9
- end # comment
10
- RUBY
11
- end
12
- let(:ast) { ast_and_comments[0] }
13
- let(:comments) { ast_and_comments[1] }
14
- let(:object) { described_class.new(comments) }
15
-
16
- it 'should skip the specified comment only for one subsequent take' do
17
- object.consume(ast, :name)
18
- object.skip_eol_comment('# comment')
19
- expect(object.take_eol_comments).to eql([])
20
- object.consume(ast, :end)
21
- expect(object.take_eol_comments).to eql([comments[1]])
22
- end
23
-
24
- it 'should not skip comments with different text' do
25
- object.skip_eol_comment('# not the comment')
26
- object.consume(ast, :end)
27
- expect(object.take_eol_comments).to eql(comments)
28
- end
29
- end