unparser 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46f62b35c534e13da34486c1650bb14e406fe48b
4
- data.tar.gz: 3bdedfa5f88178cd4ebeafedb72e2ce47a5552a2
3
+ metadata.gz: bd330877f92585ef66cfd283dba22e1d6202446c
4
+ data.tar.gz: ec9dbaaf5b7e460bc19e2f6564e25e016b4149c8
5
5
  SHA512:
6
- metadata.gz: cdfc4fb2f77e221b2af12dc14cb7504e3220e6e08c4da8919617f9b3cd9f9082d6b69129bf46aa7caba119681aed1255240eaf97b888a3b274c2432def82155e
7
- data.tar.gz: efd08e3645878e75d316e07b2fb58de2c254c6588183e725c48af4739079856d41d547354114e33acd2c29c010fffea17cb211065c8823fde55692adc475e30a
6
+ metadata.gz: 2ac84d618bb92e5b9ec2f8360378c820f55545f993532febac3b5b4715cf85e16ccc88271fad3a2c6a8efa34e5297432799b0cc31481396807799c415ecab7b0
7
+ data.tar.gz: 45bc61077ae22a0c74538fda91621319ea99ace383338a5e6a6f90f66eb5e02ed88938f07f2d5f95999b1ed2372f68c8ddddc9009b23ea1df493854d6d52de90
data/Changelog.md CHANGED
@@ -1,3 +1,8 @@
1
+ # v0.1.4 2013-11-01
2
+
3
+ * Code cleanups.
4
+ * Remove warnings.
5
+
1
6
  # v0.0.3 2013-06-17
2
7
 
3
8
  * Adjust to changes in parser 2.0.0.beta5 => beta6
data/Gemfile CHANGED
@@ -2,5 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'devtools', :git => 'https://github.com/rom-rb/devtools.git'
5
+ gem 'devtools', git: 'https://github.com/rom-rb/devtools.git'
6
6
  eval_gemfile 'Gemfile.devtools'
data/Gemfile.devtools CHANGED
@@ -7,7 +7,7 @@ group :development do
7
7
  end
8
8
 
9
9
  group :yard do
10
- gem 'kramdown', '~> 1.1.0'
10
+ gem 'kramdown', '~> 1.2.0'
11
11
  end
12
12
 
13
13
  group :guard do
@@ -15,7 +15,7 @@ group :guard do
15
15
  gem 'guard-bundler', '~> 1.0.0'
16
16
  gem 'guard-rspec', '~> 3.0.2'
17
17
  gem 'guard-rubocop', '~> 0.2.0'
18
- # gem 'guard-mutant', '~> 0.0.1'
18
+ gem 'guard-mutant', '~> 0.0.1'
19
19
 
20
20
  # file system change event handling
21
21
  gem 'listen', '~> 1.3.0'
@@ -30,16 +30,16 @@ group :guard do
30
30
  end
31
31
 
32
32
  group :metrics do
33
- gem 'coveralls', '~> 0.6.7'
33
+ gem 'coveralls', '~> 0.7.0'
34
34
  gem 'flay', '~> 2.4.0'
35
35
  gem 'flog', '~> 4.1.1'
36
36
  gem 'reek', '~> 1.3.2'
37
- gem 'rubocop', '~> 0.11.0'
37
+ gem 'rubocop', '~> 0.14.1'
38
38
  gem 'simplecov', '~> 0.7.1'
39
39
  gem 'yardstick', '~> 0.9.7', git: 'https://github.com/dkubb/yardstick.git'
40
40
 
41
41
  platforms :ruby_19, :ruby_20 do
42
- # gem 'mutant', git: 'https://github.com/mbj/mutant.git'
42
+ gem 'mutant', git: 'https://github.com/mbj/mutant.git'
43
43
  gem 'yard-spellcheck', '~> 0.1.5'
44
44
  end
45
45
  end
data/README.md CHANGED
@@ -58,7 +58,7 @@ People
58
58
  ------
59
59
 
60
60
  * [Markus Schirp (mbj)](https://github.com/mbj) Author
61
- * [Trent Ogren](https://github.com/misfo) Adding comment reproduction
61
+ * [Trent Ogren (misfo)](https://github.com/misfo) Adding comment reproduction
62
62
 
63
63
  Contributing
64
64
  -------------
data/bin/test-unparser CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  trap('INT') do |status|
4
- exit! 128+status
4
+ exit! 128 + status
5
5
  end
6
6
 
7
7
  require 'unparser'
@@ -13,14 +13,14 @@ ARGV.each do |file|
13
13
  generated = Unparser.unparse(node)
14
14
  unparsed = Parser::CurrentRuby.parse(generated)
15
15
  unless unparsed == node
16
- $stderr.puts "Node:"
16
+ $stderr.puts 'Node:'
17
17
  $stderr.puts node.inspect
18
- $stderr.puts "Unparsed-Node:"
18
+ $stderr.puts 'Unparsed-Node:'
19
19
  $stderr.puts unparsed.inspect
20
- $stderr.puts "Original:"
20
+ $stderr.puts 'Original:'
21
21
  $stderr.puts source
22
- $stderr.puts "Generated:"
22
+ $stderr.puts 'Generated:'
23
23
  $stderr.puts generated
24
- fail "BUG!"
24
+ fail 'BUG!'
25
25
  end
26
26
  end
data/config/flay.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 13
3
- total_score: 352
3
+ total_score: 410
data/config/reek.yml CHANGED
@@ -63,11 +63,7 @@ NestedIterators:
63
63
  enabled: true
64
64
  max_allowed_nesting: 1
65
65
  TooManyStatements:
66
- max_statements: 5
67
- exclude:
68
- - Unparser::Emitter::Block#dispatch # 6 statements
69
- - Unparser::Emitter::Def#dispatch # 6 statements
70
- - Unparser::Emitter::Class#dispatch # 6 statements
66
+ max_statements: 6
71
67
  enabled: true
72
68
  DuplicateMethodCall:
73
69
  allow_calls: []
@@ -91,6 +87,8 @@ UncommunicativeVariableName:
91
87
  - !ruby/regexp /[A-Z]/
92
88
  RepeatedConditional:
93
89
  exclude:
90
+ - Unparser::Emitter # FIXME
91
+ - Unparser::Comments # FIXME
94
92
  - Unparser::Emitter::Send # TODO Fixme
95
93
  - Unparser::Emitter::If
96
94
  enabled: true
@@ -103,6 +101,7 @@ DataClump:
103
101
  ControlParameter:
104
102
  exclude:
105
103
  - Unparser::Emitter#emit_body # false positive
104
+ - Unparser::Emitter#conditional_parentheses # Intentionally a control structure like helper
106
105
  enabled: true
107
106
  NilCheck:
108
107
  enabled: false
@@ -0,0 +1,88 @@
1
+ AllCops:
2
+ Includes:
3
+ - '**/*.rake'
4
+ - 'Gemfile'
5
+ - 'Gemfile.triage'
6
+ Excludes:
7
+ - '**/vendor/**'
8
+ - '**/benchmarks/**'
9
+
10
+ # Avoid parameter lists longer than five parameters.
11
+ ParameterLists:
12
+ Max: 3
13
+ CountKeywordArgs: true
14
+
15
+ MethodLength:
16
+ CountComments: false
17
+ Max: 15
18
+
19
+ # Avoid more than `Max` levels of nesting.
20
+ BlockNesting:
21
+ Max: 3
22
+
23
+ # Align with the style guide.
24
+ CollectionMethods:
25
+ PreferredMethods:
26
+ collect: 'map'
27
+ inject: 'reduce'
28
+ find: 'detect'
29
+ find_all: 'select'
30
+
31
+ # Do not force public/protected/private keyword to be indented at the same
32
+ # level as the def keyword. My personal preference is to outdent these keywords
33
+ # because I think when scanning code it makes it easier to identify the
34
+ # sections of code and visually separate them. When the keyword is at the same
35
+ # level I think it sort of blends in with the def keywords and makes it harder
36
+ # to scan the code and see where the sections are.
37
+ AccessControl:
38
+ Enabled: false
39
+
40
+ # Limit line length
41
+ LineLength:
42
+ Max: 113 # TODO: lower to 79 once the rubocop branch in shared/Gemfile is removed
43
+
44
+ # Disabled because of indenting with private keyword in class bodies.
45
+ IndentationWidth:
46
+ Enabled: false
47
+
48
+ # I like raise more
49
+ SignalException:
50
+ Enabled: false
51
+
52
+ # Disable Symbol cop because unparse has to prodice "WIERD" symbols in his specs
53
+ #
54
+ # I'd love I could ignore a specific occurance.
55
+ #
56
+ SymbolName:
57
+ Enabled: false
58
+
59
+ # False positive in unparser source
60
+ OneLineConditional:
61
+ Enabled: false
62
+
63
+ Documentation:
64
+ Enabled: false
65
+
66
+ # Disable documentation checking until a class needs to be documented once
67
+ Documentation:
68
+ Enabled: false
69
+
70
+ # Do not favor modifier if/unless usage when you have a single-line body
71
+ IfUnlessModifier:
72
+ Enabled: false
73
+
74
+ # Allow case equality operator (in limited use within the specs)
75
+ CaseEquality:
76
+ Enabled: false
77
+
78
+ # Constants do not always have to use SCREAMING_SNAKE_CASE
79
+ ConstantName:
80
+ Enabled: false
81
+
82
+ # Not all trivial readers/writers can be defined with attr_* methods
83
+ TrivialAccessors:
84
+ Enabled: false
85
+
86
+ # Do not prefer do/end over {} for multiline blocks
87
+ Blocks:
88
+ Enabled: false
data/lib/unparser.rb CHANGED
@@ -7,6 +7,8 @@ module Unparser
7
7
 
8
8
  EMPTY_STRING = ''.freeze
9
9
 
10
+ EMPTY_ARRAY = [].freeze
11
+
10
12
  # Unparse an AST (and, optionally, comments) into a string
11
13
  #
12
14
  # @param [Parser::Node, nil] node
@@ -52,7 +52,7 @@ module Unparser
52
52
  # @api private
53
53
  #
54
54
  def indent
55
- @indent+=1
55
+ @indent += 1
56
56
  self
57
57
  end
58
58
 
@@ -63,7 +63,7 @@ module Unparser
63
63
  # @api private
64
64
  #
65
65
  def unindent
66
- @indent-=1
66
+ @indent -= 1
67
67
  self
68
68
  end
69
69
 
@@ -116,6 +116,8 @@ module Unparser
116
116
 
117
117
  private
118
118
 
119
+ INDENT_SPACE = ' '.freeze
120
+
119
121
  # Write prefix
120
122
  #
121
123
  # @return [String]
@@ -123,7 +125,7 @@ module Unparser
123
125
  # @api private
124
126
  #
125
127
  def prefix
126
- @content << ' '*@indent
128
+ @content << INDENT_SPACE * @indent
127
129
  end
128
130
 
129
131
  end # Buffer
@@ -1,9 +1,6 @@
1
1
  module Unparser
2
2
 
3
3
  # Holds the comments that remain to be emitted
4
- #
5
- # @api private
6
- #
7
4
  class Comments
8
5
 
9
6
  # Initialize object
@@ -14,7 +11,7 @@ module Unparser
14
11
  #
15
12
  def initialize(comments)
16
13
  @comments = comments.dup
17
- @eol_text_to_skip = nil
14
+ @last_range_consumed = @eol_text_to_skip = nil
18
15
  end
19
16
 
20
17
  # Consume part or all of the node
@@ -25,8 +22,9 @@ module Unparser
25
22
  # @return [undefined]
26
23
  #
27
24
  def consume(node, source_part = :expression)
28
- return unless node.location
29
- @last_range_consumed = node.location.public_send(source_part)
25
+ location = node.location
26
+ return unless location
27
+ @last_range_consumed = location.public_send(source_part)
30
28
  end
31
29
 
32
30
  # Skip any EOL comment with the specified text next time they're taken
@@ -46,10 +44,10 @@ module Unparser
46
44
  def take_eol_comments
47
45
  text_to_skip = @eol_text_to_skip
48
46
  @eol_text_to_skip = nil
49
- return [] if @last_range_consumed.nil?
47
+ return [] unless @last_range_consumed
50
48
  comments = take_up_to_line(@last_range_consumed.end.line)
51
49
  eol_comments = unshift_documents(comments)
52
- eol_comments.reject {|comment| comment.text == text_to_skip }
50
+ eol_comments.reject { |comment| comment.text == text_to_skip }
53
51
  end
54
52
 
55
53
  # Take all remaining comments
@@ -68,10 +66,13 @@ module Unparser
68
66
  # @return [Array]
69
67
  #
70
68
  def take_before(node, source_part)
71
- loc = node.location
72
- range = loc.public_send(source_part) if loc.respond_to?(source_part)
73
- return [] if range.nil?
74
- take_while { |comment| comment.location.expression.end_pos <= range.begin_pos }
69
+ location = node.location
70
+ if location
71
+ range = location.public_send(source_part)
72
+ take_while { |comment| comment.location.expression.end_pos <= range.begin_pos }
73
+ else
74
+ EMPTY_ARRAY
75
+ end
75
76
  end
76
77
 
77
78
  private
@@ -83,7 +84,7 @@ module Unparser
83
84
  # @return [Array]
84
85
  #
85
86
  def take_while
86
- number_to_take = @comments.index {|comment| !yield(comment) } || @comments.size
87
+ number_to_take = @comments.index { |comment| !yield(comment) } || @comments.size
87
88
  @comments.shift(number_to_take)
88
89
  end
89
90
 
@@ -105,8 +106,9 @@ module Unparser
105
106
  #
106
107
  def unshift_documents(comments)
107
108
  doc_comments, other_comments = comments.partition(&:document?)
108
- doc_comments.reverse_each {|comment| @comments.unshift(comment) }
109
+ doc_comments.reverse_each { |comment| @comments.unshift(comment) }
109
110
  other_comments
110
111
  end
111
- end
112
- end
112
+
113
+ end # Comments
114
+ end # Unparser
@@ -91,6 +91,5 @@ module Unparser
91
91
  end
92
92
  end.to_set.freeze
93
93
 
94
-
95
94
  end # Constants
96
95
  end # Unparser
@@ -8,7 +8,7 @@ module Unparser
8
8
  # Registry for node emitters
9
9
  REGISTRY = {}
10
10
 
11
- NOINDENT = [:rescue, :ensure].to_set
11
+ NOINDENT = [:rescue, :ensure].to_set.freeze
12
12
 
13
13
  DEFAULT_DELIMITER = ', '.freeze
14
14
 
@@ -148,7 +148,7 @@ module Unparser
148
148
  def buffer
149
149
  parent.buffer
150
150
  end
151
- memoize :buffer, :freezer => :noop
151
+ memoize :buffer, freezer: :noop
152
152
 
153
153
  # Return comments
154
154
  #
@@ -159,7 +159,7 @@ module Unparser
159
159
  def comments
160
160
  parent.comments
161
161
  end
162
- memoize :comments, :freezer => :noop
162
+ memoize :comments, freezer: :noop
163
163
 
164
164
  private
165
165
 
@@ -169,22 +169,12 @@ module Unparser
169
169
  #
170
170
  # @api private
171
171
  #
172
- def parentheses(open=M_PO, close=M_PC)
172
+ def parentheses(open = M_PO, close = M_PC)
173
173
  write(open)
174
174
  yield
175
175
  write(close)
176
176
  end
177
177
 
178
- # Emit nodes source map
179
- #
180
- # @return [undefined]
181
- #
182
- # @api private
183
- #
184
- def emit_source_map
185
- SourceMap.emit(node, buffer)
186
- end
187
-
188
178
  # Visit node
189
179
  #
190
180
  # @param [Parser::AST::Node] node
@@ -208,7 +198,7 @@ module Unparser
208
198
  #
209
199
  def visit_terminated(node)
210
200
  emitter = emitter(node)
211
- maybe_parentheses(!emitter.terminated?) do
201
+ conditional_parentheses(!emitter.terminated?) do
212
202
  emitter.write_to_buffer
213
203
  end
214
204
  emitter.write_to_buffer
@@ -236,7 +226,7 @@ module Unparser
236
226
  #
237
227
  # @api private
238
228
  #
239
- def maybe_parentheses(flag)
229
+ def conditional_parentheses(flag)
240
230
  if flag
241
231
  parentheses { yield }
242
232
  else
@@ -339,15 +329,15 @@ module Unparser
339
329
 
340
330
  # Write each comment to a separate line
341
331
  #
342
- # @param [Array] comment_array
332
+ # @param [Array] comments
343
333
  #
344
334
  # @return [undefined]
345
335
  #
346
336
  # @api private
347
337
  #
348
- def emit_comments(comment_array)
349
- max = comment_array.size - 1
350
- comment_array.each_with_index do |comment, index|
338
+ def emit_comments(comments)
339
+ max = comments.size - 1
340
+ comments.each_with_index do |comment, index|
351
341
  if comment.type == :document
352
342
  buffer.append_without_prefix(comment.text.chomp)
353
343
  else
@@ -429,7 +419,7 @@ module Unparser
429
419
  #
430
420
  # @api private
431
421
  #
432
- def emit_body(body = self.body)
422
+ def emit_body(body = body)
433
423
  unless body
434
424
  buffer.indent
435
425
  nl
@@ -496,23 +486,5 @@ module Unparser
496
486
  comments.skip_eol_comment(comment)
497
487
  end
498
488
 
499
- # Emitter that fully relies on parser source maps
500
- class SourceMap < self
501
-
502
- # Perform dispatch
503
- #
504
- # @param [Node] node
505
- # @param [Buffer] buffer
506
- #
507
- # @return [self]
508
- #
509
- # @api private
510
- #
511
- def self.emit(node, buffer)
512
- buffer.append(node.location.expression.source)
513
- self
514
- end
515
-
516
- end # SourceMap
517
489
  end # Emitter
518
490
  end # Unparser