railroader 4.3.5 → 4.3.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +16 -0
  3. data/README.md +15 -0
  4. data/bin/railroader +1 -1
  5. data/lib/railroader/call_index.rb +11 -11
  6. data/lib/railroader/checks/base_check.rb +43 -43
  7. data/lib/railroader/checks/check_basic_auth.rb +3 -3
  8. data/lib/railroader/checks/check_content_tag.rb +9 -9
  9. data/lib/railroader/checks/check_create_with.rb +2 -2
  10. data/lib/railroader/checks/check_cross_site_scripting.rb +24 -24
  11. data/lib/railroader/checks/check_default_routes.rb +5 -5
  12. data/lib/railroader/checks/check_deserialize.rb +1 -1
  13. data/lib/railroader/checks/check_dynamic_finders.rb +1 -1
  14. data/lib/railroader/checks/check_escape_function.rb +3 -3
  15. data/lib/railroader/checks/check_evaluation.rb +4 -4
  16. data/lib/railroader/checks/check_execute.rb +8 -8
  17. data/lib/railroader/checks/check_file_access.rb +2 -2
  18. data/lib/railroader/checks/check_filter_skipping.rb +2 -2
  19. data/lib/railroader/checks/check_forgery_setting.rb +3 -3
  20. data/lib/railroader/checks/check_jruby_xml.rb +1 -1
  21. data/lib/railroader/checks/check_json_parsing.rb +2 -2
  22. data/lib/railroader/checks/check_link_to.rb +12 -12
  23. data/lib/railroader/checks/check_link_to_href.rb +9 -9
  24. data/lib/railroader/checks/check_mail_to.rb +4 -4
  25. data/lib/railroader/checks/check_mass_assignment.rb +5 -5
  26. data/lib/railroader/checks/check_model_attributes.rb +6 -6
  27. data/lib/railroader/checks/check_model_serialize.rb +2 -2
  28. data/lib/railroader/checks/check_nested_attributes.rb +2 -2
  29. data/lib/railroader/checks/check_nested_attributes_bypass.rb +1 -1
  30. data/lib/railroader/checks/check_quote_table_name.rb +3 -3
  31. data/lib/railroader/checks/check_redirect.rb +19 -19
  32. data/lib/railroader/checks/check_regex_dos.rb +3 -3
  33. data/lib/railroader/checks/check_render.rb +4 -4
  34. data/lib/railroader/checks/check_response_splitting.rb +2 -2
  35. data/lib/railroader/checks/check_safe_buffer_manipulation.rb +4 -4
  36. data/lib/railroader/checks/check_sanitize_methods.rb +2 -2
  37. data/lib/railroader/checks/check_select_tag.rb +4 -4
  38. data/lib/railroader/checks/check_select_vulnerability.rb +3 -3
  39. data/lib/railroader/checks/check_send.rb +1 -1
  40. data/lib/railroader/checks/check_send_file.rb +1 -1
  41. data/lib/railroader/checks/check_session_settings.rb +10 -10
  42. data/lib/railroader/checks/check_single_quotes.rb +8 -8
  43. data/lib/railroader/checks/check_skip_before_filter.rb +5 -5
  44. data/lib/railroader/checks/check_sql.rb +41 -41
  45. data/lib/railroader/checks/check_strip_tags.rb +6 -6
  46. data/lib/railroader/checks/check_symbol_dos_cve.rb +0 -1
  47. data/lib/railroader/checks/check_translate_bug.rb +4 -4
  48. data/lib/railroader/checks/check_unsafe_reflection.rb +1 -1
  49. data/lib/railroader/checks/check_validation_regex.rb +7 -7
  50. data/lib/railroader/checks/check_weak_hash.rb +1 -1
  51. data/lib/railroader/checks/check_without_protection.rb +9 -9
  52. data/lib/railroader/checks/check_yaml_parsing.rb +5 -5
  53. data/lib/railroader/checks.rb +18 -18
  54. data/lib/railroader/commandline.rb +1 -1
  55. data/lib/railroader/differ.rb +2 -2
  56. data/lib/railroader/options.rb +7 -7
  57. data/lib/railroader/parsers/rails2_erubis.rb +1 -1
  58. data/lib/railroader/parsers/rails2_xss_plugin_erubis.rb +4 -4
  59. data/lib/railroader/parsers/template_parser.rb +1 -1
  60. data/lib/railroader/processor.rb +17 -17
  61. data/lib/railroader/processors/alias_processor.rb +72 -72
  62. data/lib/railroader/processors/base_processor.rb +31 -31
  63. data/lib/railroader/processors/controller_alias_processor.rb +31 -31
  64. data/lib/railroader/processors/controller_processor.rb +29 -29
  65. data/lib/railroader/processors/erb_template_processor.rb +8 -8
  66. data/lib/railroader/processors/erubis_template_processor.rb +6 -6
  67. data/lib/railroader/processors/gem_processor.rb +1 -1
  68. data/lib/railroader/processors/haml_template_processor.rb +14 -14
  69. data/lib/railroader/processors/lib/call_conversion_helper.rb +1 -1
  70. data/lib/railroader/processors/lib/find_all_calls.rb +15 -15
  71. data/lib/railroader/processors/lib/find_call.rb +26 -26
  72. data/lib/railroader/processors/lib/find_return_value.rb +11 -11
  73. data/lib/railroader/processors/lib/module_helper.rb +1 -1
  74. data/lib/railroader/processors/lib/processor_helper.rb +4 -4
  75. data/lib/railroader/processors/lib/rails2_config_processor.rb +20 -20
  76. data/lib/railroader/processors/lib/rails2_route_processor.rb +38 -38
  77. data/lib/railroader/processors/lib/rails3_config_processor.rb +14 -14
  78. data/lib/railroader/processors/lib/rails3_route_processor.rb +16 -16
  79. data/lib/railroader/processors/lib/render_helper.rb +32 -32
  80. data/lib/railroader/processors/lib/route_helper.rb +12 -12
  81. data/lib/railroader/processors/library_processor.rb +1 -1
  82. data/lib/railroader/processors/model_processor.rb +9 -9
  83. data/lib/railroader/processors/output_processor.rb +3 -3
  84. data/lib/railroader/processors/slim_template_processor.rb +4 -4
  85. data/lib/railroader/processors/template_alias_processor.rb +10 -10
  86. data/lib/railroader/processors/template_processor.rb +7 -7
  87. data/lib/railroader/report/renderer.rb +1 -1
  88. data/lib/railroader/report/report_base.rb +12 -12
  89. data/lib/railroader/report/report_csv.rb +2 -2
  90. data/lib/railroader/report/report_html.rb +5 -5
  91. data/lib/railroader/report/report_markdown.rb +2 -2
  92. data/lib/railroader/report/report_table.rb +3 -3
  93. data/lib/railroader/report/report_tabs.rb +2 -2
  94. data/lib/railroader/report/report_text.rb +3 -4
  95. data/lib/railroader/report.rb +3 -3
  96. data/lib/railroader/rescanner.rb +36 -36
  97. data/lib/railroader/scanner.rb +23 -23
  98. data/lib/railroader/tracker/config.rb +3 -3
  99. data/lib/railroader/tracker/controller.rb +2 -2
  100. data/lib/railroader/tracker.rb +42 -42
  101. data/lib/railroader/util.rb +47 -47
  102. data/lib/railroader/version.rb +1 -1
  103. data/lib/railroader/warning.rb +9 -10
  104. data/lib/railroader.rb +32 -32
  105. data/lib/ruby_parser/bm_sexp.rb +63 -63
  106. data/lib/ruby_parser/bm_sexp_processor.rb +3 -3
  107. metadata +4 -4
data/lib/railroader.rb CHANGED
@@ -3,21 +3,21 @@ require 'railroader/version'
3
3
 
4
4
  module Railroader
5
5
 
6
- #This exit code is used when warnings are found and the --exit-on-warn
7
- #option is set
6
+ # This exit code is used when warnings are found and the --exit-on-warn
7
+ # option is set
8
8
  Warnings_Found_Exit_Code = 3
9
9
 
10
- #Exit code returned when no Rails application is detected
10
+ # Exit code returned when no Rails application is detected
11
11
  No_App_Found_Exit_Code = 4
12
12
 
13
- #Exit code returned when railroader was outdated
13
+ # Exit code returned when railroader was outdated
14
14
  Not_Latest_Version_Exit_Code = 5
15
15
 
16
- #Exit code returned when user requests non-existent checks
16
+ # Exit code returned when user requests non-existent checks
17
17
  Missing_Checks_Exit_Code = 6
18
18
 
19
- #Exit code returned when errors were found and the --exit-on-error
20
- #option is set
19
+ # Exit code returned when errors were found and the --exit-on-error
20
+ # option is set
21
21
  Errors_Found_Exit_Code = 7
22
22
 
23
23
  @debug = false
@@ -25,9 +25,9 @@ module Railroader
25
25
  @loaded_dependencies = []
26
26
  @vendored_paths = false
27
27
 
28
- #Run Railroader scan. Returns Tracker object.
28
+ # Run Railroader scan. Returns Tracker object.
29
29
  #
30
- #Options:
30
+ # Options:
31
31
  #
32
32
  # * :app_path - path to root of Rails app (required)
33
33
  # * :additional_checks_path - array of additional directories containing additional out-of-tree checks to run
@@ -63,7 +63,7 @@ module Railroader
63
63
  # * :absolute_paths - show absolute path of each file (default: false)
64
64
  # * :summary_only - only output summary section of report for plain/table (:summary_only, :no_summary, true)
65
65
  #
66
- #Alternatively, just supply a path as a string.
66
+ # Alternatively, just supply a path as a string.
67
67
  def self.run options
68
68
  options = set_options options
69
69
 
@@ -77,7 +77,7 @@ module Railroader
77
77
  scan options
78
78
  end
79
79
 
80
- #Sets up options for run, checks given application path
80
+ # Sets up options for run, checks given application path
81
81
  def self.set_options options
82
82
  if options.is_a? String
83
83
  options = { :app_path => options }
@@ -107,13 +107,13 @@ module Railroader
107
107
  options
108
108
  end
109
109
 
110
- #Load options from YAML file
110
+ # Load options from YAML file
111
111
  def self.load_options line_options
112
112
  custom_location = line_options[:config_file]
113
113
  quiet = line_options[:quiet]
114
114
  app_path = line_options[:app_path]
115
115
 
116
- #Load configuration file
116
+ # Load configuration file
117
117
  if config = config_file(custom_location, app_path)
118
118
  require 'date' # https://github.com/dtao/safe_yaml/issues/80
119
119
  self.load_railroader_dependency 'safe_yaml/load'
@@ -156,7 +156,7 @@ module Railroader
156
156
  supported_locations.detect {|f| File.file?(f) }
157
157
  end
158
158
 
159
- #Default set of options
159
+ # Default set of options
160
160
  def self.default_options
161
161
  { :assume_all_routes => true,
162
162
  :check_arguments => true,
@@ -183,10 +183,10 @@ module Railroader
183
183
  }
184
184
  end
185
185
 
186
- #Determine output formats based on options[:output_formats]
187
- #or options[:output_files]
186
+ # Determine output formats based on options[:output_formats]
187
+ # or options[:output_files]
188
188
  def self.get_output_formats options
189
- #Set output format
189
+ # Set output format
190
190
  if options[:output_format] && options[:output_files] && options[:output_files].size > 1
191
191
  raise ArgumentError, "Cannot specify output format if multiple output files specified"
192
192
  end
@@ -220,7 +220,7 @@ module Railroader
220
220
  [:to_markdown]
221
221
  when :cc, :to_cc, :codeclimate, :to_codeclimate
222
222
  [:to_codeclimate]
223
- when :plain ,:to_plain, :text, :to_text, :to_s
223
+ when :plain, :to_plain, :text, :to_text, :to_s
224
224
  [:to_text]
225
225
  when :table, :to_table
226
226
  [:to_table]
@@ -274,7 +274,7 @@ module Railroader
274
274
  end
275
275
  private_class_method :get_github_url
276
276
 
277
- #Output list of checks (for `-k` option)
277
+ # Output list of checks (for `-k` option)
278
278
  def self.list_checks options
279
279
  require 'railroader/scanner'
280
280
 
@@ -296,7 +296,7 @@ module Railroader
296
296
  end
297
297
  end
298
298
 
299
- #Output configuration to YAML
299
+ # Output configuration to YAML
300
300
  def self.dump_config options
301
301
  require 'yaml'
302
302
  if options[:create_config].is_a? String
@@ -307,7 +307,7 @@ module Railroader
307
307
 
308
308
  options.delete :create_config
309
309
 
310
- options.each do |k,v|
310
+ options.each do |k, v|
311
311
  if v.is_a? Set
312
312
  options[k] = v.to_a
313
313
  end
@@ -331,9 +331,9 @@ module Railroader
331
331
  end
332
332
  end
333
333
 
334
- #Run a scan. Generally called from Railroader.run instead of directly.
334
+ # Run a scan. Generally called from Railroader.run instead of directly.
335
335
  def self.scan options
336
- #Load scanner
336
+ # Load scanner
337
337
  notify "Loading scanner..."
338
338
 
339
339
  begin
@@ -344,7 +344,7 @@ module Railroader
344
344
 
345
345
  add_external_checks options
346
346
 
347
- #Start scanning
347
+ # Start scanning
348
348
  scanner = Scanner.new options
349
349
  tracker = scanner.tracker
350
350
 
@@ -411,17 +411,17 @@ module Railroader
411
411
  end
412
412
  private_class_method :write_report_to_formats
413
413
 
414
- #Rescan a subset of files in a Rails application.
414
+ # Rescan a subset of files in a Rails application.
415
415
  #
416
- #A full scan must have been run already to use this method.
417
- #The returned Tracker object from Railroader.run is used as a starting point
418
- #for the rescan.
416
+ # A full scan must have been run already to use this method.
417
+ # The returned Tracker object from Railroader.run is used as a starting point
418
+ # for the rescan.
419
419
  #
420
- #Options may be given as a hash with the same values as Railroader.run.
421
- #Note that these options will be merged into the Tracker.
420
+ # Options may be given as a hash with the same values as Railroader.run.
421
+ # Note that these options will be merged into the Tracker.
422
422
  #
423
- #This method returns a RescanReport object with information about the scan.
424
- #However, the Tracker object will also be modified as the scan is run.
423
+ # This method returns a RescanReport object with information about the scan.
424
+ # However, the Tracker object will also be modified as the scan is run.
425
425
  def self.rescan tracker, files, options = {}
426
426
  require 'railroader/rescanner'
427
427
 
@@ -1,20 +1,20 @@
1
- #Sexp changes from ruby_parser
2
- #and some changes for caching hash value and tracking 'original' line number
3
- #of a Sexp.
1
+ # Sexp changes from ruby_parser
2
+ # and some changes for caching hash value and tracking 'original' line number
3
+ # of a Sexp.
4
4
  class Sexp
5
5
  attr_accessor :original_line, :or_depth
6
6
  ASSIGNMENT_BOOL = [:gasgn, :iasgn, :lasgn, :cvdecl, :cvasgn, :cdecl, :or, :and, :colon2, :op_asgn_or]
7
7
  CALLS = [:call, :attrasgn, :safe_call, :safe_attrasgn]
8
8
 
9
9
  def method_missing name, *args
10
- #Railroader does not use this functionality,
11
- #so overriding it to raise a NoMethodError.
10
+ # Railroader does not use this functionality,
11
+ # so overriding it to raise a NoMethodError.
12
12
  #
13
- #The original functionality calls find_node and optionally
14
- #deletes the node if found.
13
+ # The original functionality calls find_node and optionally
14
+ # deletes the node if found.
15
15
  #
16
- #Defining a method named "return" seems like a bad idea, so we have to
17
- #check for it here instead
16
+ # Defining a method named "return" seems like a bad idea, so we have to
17
+ # check for it here instead
18
18
  if name == :return
19
19
  find_node name, *args
20
20
  else
@@ -22,8 +22,8 @@ class Sexp
22
22
  end
23
23
  end
24
24
 
25
- #Create clone of Sexp and nested Sexps but not their non-Sexp contents.
26
- #If a line number is provided, also sets line/original_line on all Sexps.
25
+ # Create clone of Sexp and nested Sexps but not their non-Sexp contents.
26
+ # If a line number is provided, also sets line/original_line on all Sexps.
27
27
  def deep_clone line = nil
28
28
  s = Sexp.new
29
29
 
@@ -74,9 +74,9 @@ class Sexp
74
74
  self[0] = type
75
75
  end
76
76
 
77
- #Join self and exp into an :or Sexp.
78
- #Sets or_depth.
79
- #Used for combining "branched" values in AliasProcessor.
77
+ # Join self and exp into an :or Sexp.
78
+ # Sets or_depth.
79
+ # Used for combining "branched" values in AliasProcessor.
80
80
  def combine exp, line = nil
81
81
  combined = Sexp.new(:or, self, exp).line(line || -2)
82
82
 
@@ -99,10 +99,10 @@ class Sexp
99
99
  end
100
100
 
101
101
  def hash
102
- #There still seems to be some instances in which the hash of the
103
- #Sexp changes, but I have not found what method call is doing it.
104
- #Of course, Sexp is subclasses from Array, so who knows what might
105
- #be going on.
102
+ # There still seems to be some instances in which the hash of the
103
+ # Sexp changes, but I have not found what method call is doing it.
104
+ # Of course, Sexp is subclasses from Array, so who knows what might
105
+ # be going on.
106
106
  @my_hash_value ||= super
107
107
  end
108
108
 
@@ -121,33 +121,33 @@ class Sexp
121
121
  old_find_node(*args)
122
122
  end
123
123
 
124
- #Raise a WrongSexpError if the nodes type does not match one of the expected
125
- #types.
124
+ # Raise a WrongSexpError if the nodes type does not match one of the expected
125
+ # types.
126
126
  def expect *types
127
127
  unless types.include? self.node_type
128
128
  raise WrongSexpError, "Expected #{types.join ' or '} but given #{self.inspect}", caller[1..-1]
129
129
  end
130
130
  end
131
131
 
132
- #Returns target of a method call:
132
+ # Returns target of a method call:
133
133
  #
134
- #s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1)))
134
+ # s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1)))
135
135
  # ^-----------target-----------^
136
136
  def target
137
137
  expect :call, :attrasgn, :safe_call, :safe_attrasgn
138
138
  self[1]
139
139
  end
140
140
 
141
- #Sets the target of a method call:
141
+ # Sets the target of a method call:
142
142
  def target= exp
143
143
  expect :call, :attrasgn, :safe_call, :safe_attrasgn
144
144
  @my_hash_value = nil
145
145
  self[1] = exp
146
146
  end
147
147
 
148
- #Returns method of a method call:
148
+ # Returns method of a method call:
149
149
  #
150
- #s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1)))
150
+ # s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1)))
151
151
  # ^- method
152
152
  def method
153
153
  expect :call, :attrasgn, :safe_call, :safe_attrasgn, :super, :zsuper, :result
@@ -168,7 +168,7 @@ class Sexp
168
168
  self[2] = name
169
169
  end
170
170
 
171
- #Sets the arglist in a method call.
171
+ # Sets the arglist in a method call.
172
172
  def arglist= exp
173
173
  expect :call, :attrasgn, :safe_call, :safe_attrasgn
174
174
  @my_hash_value = nil
@@ -187,9 +187,9 @@ class Sexp
187
187
  self.arglist = exp
188
188
  end
189
189
 
190
- #Returns arglist for method call. This differs from Sexp#args, as Sexp#args
191
- #does not return a 'real' Sexp (it does not have a node type) but
192
- #Sexp#arglist returns a s(:arglist, ...)
190
+ # Returns arglist for method call. This differs from Sexp#args, as Sexp#args
191
+ # does not return a 'real' Sexp (it does not have a node type) but
192
+ # Sexp#arglist returns a s(:arglist, ...)
193
193
  #
194
194
  # s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1), s(:lit, 2)))
195
195
  # ^------------ arglist ------------^
@@ -208,7 +208,7 @@ class Sexp
208
208
  end
209
209
  end
210
210
 
211
- #Returns arguments of a method call. This will be an 'untyped' Sexp.
211
+ # Returns arguments of a method call. This will be an 'untyped' Sexp.
212
212
  #
213
213
  # s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1), s(:lit, 2)))
214
214
  # ^--------args--------^
@@ -261,26 +261,26 @@ class Sexp
261
261
  self.each_arg true, &block
262
262
  end
263
263
 
264
- #Returns first argument of a method call.
264
+ # Returns first argument of a method call.
265
265
  def first_arg
266
266
  expect :call, :attrasgn, :safe_call, :safe_attrasgn
267
267
  self[3]
268
268
  end
269
269
 
270
- #Sets first argument of a method call.
270
+ # Sets first argument of a method call.
271
271
  def first_arg= exp
272
272
  expect :call, :attrasgn, :safe_call, :safe_attrasgn
273
273
  @my_hash_value = nil
274
274
  self[3] = exp
275
275
  end
276
276
 
277
- #Returns second argument of a method call.
277
+ # Returns second argument of a method call.
278
278
  def second_arg
279
279
  expect :call, :attrasgn, :safe_call, :safe_attrasgn
280
280
  self[4]
281
281
  end
282
282
 
283
- #Sets second argument of a method call.
283
+ # Sets second argument of a method call.
284
284
  def second_arg= exp
285
285
  expect :call, :attrasgn, :safe_call, :safe_attrasgn
286
286
  @my_hash_value = nil
@@ -314,7 +314,7 @@ class Sexp
314
314
  chain = []
315
315
  call = self
316
316
 
317
- while call.class == Sexp and CALLS.include? call.first
317
+ while call.class == Sexp and CALLS.include? call.first
318
318
  chain << call.method
319
319
  call = call.target
320
320
  end
@@ -323,7 +323,7 @@ class Sexp
323
323
  chain
324
324
  end
325
325
 
326
- #Returns condition of an if expression:
326
+ # Returns condition of an if expression:
327
327
  #
328
328
  # s(:if,
329
329
  # s(:lvar, :condition), <-- condition
@@ -340,7 +340,7 @@ class Sexp
340
340
  end
341
341
 
342
342
 
343
- #Returns 'then' clause of an if expression:
343
+ # Returns 'then' clause of an if expression:
344
344
  #
345
345
  # s(:if,
346
346
  # s(:lvar, :condition),
@@ -351,7 +351,7 @@ class Sexp
351
351
  self[2]
352
352
  end
353
353
 
354
- #Returns 'else' clause of an if expression:
354
+ # Returns 'else' clause of an if expression:
355
355
  #
356
356
  # s(:if,
357
357
  # s(:lvar, :condition),
@@ -363,7 +363,7 @@ class Sexp
363
363
  self[3]
364
364
  end
365
365
 
366
- #Method call associated with a block:
366
+ # Method call associated with a block:
367
367
  #
368
368
  # s(:iter,
369
369
  # s(:call, nil, :x, s(:arglist)), <- block_call
@@ -374,8 +374,8 @@ class Sexp
374
374
  self[1]
375
375
  end
376
376
 
377
- #Returns block of a call with a block.
378
- #Could be a single expression or a block:
377
+ # Returns block of a call with a block.
378
+ # Could be a single expression or a block:
379
379
  #
380
380
  # s(:iter,
381
381
  # s(:call, nil, :x, s(:arglist)),
@@ -383,7 +383,7 @@ class Sexp
383
383
  # s(:block, s(:lvar, :y), s(:call, nil, :z, s(:arglist))))
384
384
  # ^-------------------- block --------------------------^
385
385
  def block delete = nil
386
- unless delete.nil? #this is from RubyParser
386
+ unless delete.nil? # this is from RubyParser
387
387
  return find_node :block, delete
388
388
  end
389
389
 
@@ -395,12 +395,12 @@ class Sexp
395
395
  when :scope
396
396
  self[1]
397
397
  when :resbody
398
- #This is for Ruby2Ruby ONLY
398
+ # This is for Ruby2Ruby ONLY
399
399
  find_node :block
400
400
  end
401
401
  end
402
402
 
403
- #Returns parameters for a block
403
+ # Returns parameters for a block
404
404
  #
405
405
  # s(:iter,
406
406
  # s(:call, nil, :x, s(:arglist)),
@@ -420,7 +420,7 @@ class Sexp
420
420
  self[1]
421
421
  end
422
422
 
423
- #Returns the left hand side of assignment or boolean:
423
+ # Returns the left hand side of assignment or boolean:
424
424
  #
425
425
  # s(:lasgn, :x, s(:lit, 1))
426
426
  # ^--lhs
@@ -429,14 +429,14 @@ class Sexp
429
429
  self[1]
430
430
  end
431
431
 
432
- #Sets the left hand side of assignment or boolean.
432
+ # Sets the left hand side of assignment or boolean.
433
433
  def lhs= exp
434
434
  expect(*ASSIGNMENT_BOOL)
435
435
  @my_hash_value = nil
436
436
  self[1] = exp
437
437
  end
438
438
 
439
- #Returns right side (value) of assignment or boolean:
439
+ # Returns right side (value) of assignment or boolean:
440
440
  #
441
441
  # s(:lasgn, :x, s(:lit, 1))
442
442
  # ^--rhs---^
@@ -454,7 +454,7 @@ class Sexp
454
454
  end
455
455
  end
456
456
 
457
- #Sets the right hand side of assignment or boolean.
457
+ # Sets the right hand side of assignment or boolean.
458
458
  def rhs= exp
459
459
  expect :attrasgn, :safe_attrasgn, *ASSIGNMENT_BOOL
460
460
  @my_hash_value = nil
@@ -466,7 +466,7 @@ class Sexp
466
466
  end
467
467
  end
468
468
 
469
- #Returns name of method being defined in a method definition.
469
+ # Returns name of method being defined in a method definition.
470
470
  def method_name
471
471
  expect :defn, :defs
472
472
 
@@ -489,8 +489,8 @@ class Sexp
489
489
  end
490
490
  end
491
491
 
492
- #Sets body, which is now a complicated process because the body is no longer
493
- #a separate Sexp, but just a list of Sexps.
492
+ # Sets body, which is now a complicated process because the body is no longer
493
+ # a separate Sexp, but just a list of Sexps.
494
494
  def body= exp
495
495
  expect :defn, :defs, :class, :module
496
496
  @my_hash_value = nil
@@ -504,21 +504,21 @@ class Sexp
504
504
  index = 2
505
505
  end
506
506
 
507
- self.slice!(index..-1) #Remove old body
507
+ self.slice!(index..-1) # Remove old body
508
508
 
509
509
  if exp.first == :rlist
510
510
  exp = exp[1..-1]
511
511
  end
512
512
 
513
- #Insert new body
513
+ # Insert new body
514
514
  exp.each do |e|
515
515
  self[index] = e
516
516
  index += 1
517
517
  end
518
518
  end
519
519
 
520
- #Returns body of a method definition, class, or module.
521
- #This will be an untyped Sexp containing a list of Sexps from the body.
520
+ # Returns body of a method definition, class, or module.
521
+ # This will be an untyped Sexp containing a list of Sexps from the body.
522
522
  def body
523
523
  expect :defn, :defs, :class, :module
524
524
 
@@ -532,8 +532,8 @@ class Sexp
532
532
  end
533
533
  end
534
534
 
535
- #Like Sexp#body, except the returned Sexp is of type :rlist
536
- #instead of untyped.
535
+ # Like Sexp#body, except the returned Sexp is of type :rlist
536
+ # instead of untyped.
537
537
  def body_list
538
538
  self.body.unshift :rlist
539
539
  end
@@ -555,21 +555,21 @@ class Sexp
555
555
  self[2]
556
556
  end
557
557
 
558
- #Returns the call Sexp in a result returned from FindCall
558
+ # Returns the call Sexp in a result returned from FindCall
559
559
  def call
560
560
  expect :result
561
561
 
562
562
  self.last
563
563
  end
564
564
 
565
- #Returns the module the call is inside
565
+ # Returns the module the call is inside
566
566
  def module
567
567
  expect :result
568
568
 
569
569
  self[1]
570
570
  end
571
571
 
572
- #Return the class the call is inside
572
+ # Return the class the call is inside
573
573
  def result_class
574
574
  expect :result
575
575
 
@@ -595,7 +595,7 @@ class Sexp
595
595
  end
596
596
  end
597
597
 
598
- #Invalidate hash cache if the Sexp changes
598
+ # Invalidate hash cache if the Sexp changes
599
599
  [:[]=, :clear, :collect!, :compact!, :concat, :delete, :delete_at,
600
600
  :delete_if, :drop, :drop_while, :fill, :flatten!, :replace, :insert,
601
601
  :keep_if, :map!, :pop, :push, :reject!, :replace, :reverse!, :rotate!,
@@ -610,8 +610,8 @@ end
610
610
  RUBY
611
611
  end
612
612
 
613
- #Methods used by RubyParser which would normally go through method_missing but
614
- #we don't want that to happen because it hides Railroader errors
613
+ # Methods used by RubyParser which would normally go through method_missing but
614
+ # we don't want that to happen because it hides Railroader errors
615
615
  [:resbody, :lasgn, :iasgn, :splat].each do |method|
616
616
  Sexp.class_eval <<-RUBY
617
617
  def #{method} delete = false
@@ -42,7 +42,7 @@ class Railroader::SexpProcessor
42
42
  # SexpProcessor
43
43
 
44
44
  def initialize
45
- @expected = Sexp
45
+ @expected = Sexp
46
46
  @processors = self.class.processors
47
47
  @context = []
48
48
 
@@ -77,9 +77,9 @@ class Railroader::SexpProcessor
77
77
  result = self.process_default(exp)
78
78
  end
79
79
  end
80
-
80
+
81
81
  raise SexpTypeError, "Result must be a #{@expected}, was #{result.class}:#{result.inspect}" unless @expected === result
82
-
82
+
83
83
  result
84
84
  end
85
85
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railroader
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.5
4
+ version: 4.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - David A. Wheeler and Justin Collins
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - railroader-public_cert.pem
12
- date: 2019-05-05 00:00:00.000000000 Z
12
+ date: 2019-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby_parser
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 3.12.0
20
+ version: 3.13.1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 3.12.0
27
+ version: 3.13.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: sexp_processor
30
30
  requirement: !ruby/object:Gem::Requirement