railroader 4.3.5 → 4.3.7

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 (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
@@ -3,21 +3,21 @@ require 'railroader/processors/lib/render_helper'
3
3
  require 'railroader/processors/lib/render_path'
4
4
  require 'railroader/processors/lib/find_return_value'
5
5
 
6
- #Processes aliasing in controllers, but includes following
7
- #renders in routes and putting variables into templates
6
+ # Processes aliasing in controllers, but includes following
7
+ # renders in routes and putting variables into templates
8
8
  class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
9
9
  include Railroader::RenderHelper
10
10
 
11
- #If only_method is specified, only that method will be processed,
12
- #other methods will be skipped.
13
- #This is for rescanning just a single action.
11
+ # If only_method is specified, only that method will be processed,
12
+ # other methods will be skipped.
13
+ # This is for rescanning just a single action.
14
14
  def initialize app_tree, tracker, only_method = nil
15
15
  super tracker
16
16
  @app_tree = app_tree
17
17
  @only_method = only_method
18
18
  @rendered = false
19
19
  @current_class = @current_module = @current_method = nil
20
- @method_cache = {} #Cache method lookups
20
+ @method_cache = {} # Cache method lookups
21
21
  end
22
22
 
23
23
  def process_controller name, src, file_name
@@ -34,7 +34,7 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
34
34
  end
35
35
  end
36
36
 
37
- #Process modules mixed into the controller, in case they contain actions.
37
+ # Process modules mixed into the controller, in case they contain actions.
38
38
  def process_mixins
39
39
  controller = @tracker.controllers[@current_class]
40
40
 
@@ -43,43 +43,43 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
43
43
 
44
44
  next unless mixin
45
45
 
46
- #Process methods in alphabetical order for consistency
46
+ # Process methods in alphabetical order for consistency
47
47
  methods = mixin.methods_public.keys.map { |n| n.to_s }.sort.map { |n| n.to_sym }
48
48
 
49
49
  methods.each do |name|
50
- #Need to process the method like it was in a controller in order
51
- #to get the renders set
50
+ # Need to process the method like it was in a controller in order
51
+ # to get the renders set
52
52
  processor = Railroader::ControllerProcessor.new(@app_tree, @tracker)
53
53
  method = mixin.get_method(name)[:src].deep_clone
54
54
 
55
55
  if node_type? method, :defn
56
56
  method = processor.process_defn method
57
57
  else
58
- #Should be a defn, but this will catch other cases
58
+ # Should be a defn, but this will catch other cases
59
59
  method = processor.process method
60
60
  end
61
61
 
62
62
  @file_name = mixin.file
63
- #Then process it like any other method in the controller
63
+ # Then process it like any other method in the controller
64
64
  process method
65
65
  end
66
66
  end
67
67
  end
68
68
 
69
- #Skip it, must be an inner class
69
+ # Skip it, must be an inner class
70
70
  def process_class exp
71
71
  exp
72
72
  end
73
73
 
74
- #Processes a method definition, which may include
75
- #processing any rendered templates.
74
+ # Processes a method definition, which may include
75
+ # processing any rendered templates.
76
76
  def process_defn exp
77
77
  meth_name = exp.method_name
78
78
 
79
79
  Railroader.debug "Processing #{@current_class}##{meth_name}"
80
80
 
81
- #Skip if instructed to only process a specific method
82
- #(but don't skip if this method was called from elsewhere)
81
+ # Skip if instructed to only process a specific method
82
+ # (but don't skip if this method was called from elsewhere)
83
83
  return exp if @current_method.nil? and @only_method and @only_method != meth_name
84
84
 
85
85
  is_route = route? meth_name
@@ -105,7 +105,7 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
105
105
  exp
106
106
  end
107
107
 
108
- #Look for calls to head()
108
+ # Look for calls to head()
109
109
  def process_call exp
110
110
  exp = super
111
111
  return exp unless call? exp
@@ -125,7 +125,7 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
125
125
  exp
126
126
  end
127
127
 
128
- #Check for +respond_to+
128
+ # Check for +respond_to+
129
129
  def process_iter exp
130
130
  super
131
131
 
@@ -136,9 +136,9 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
136
136
  exp
137
137
  end
138
138
 
139
- #Processes a call to a before filter.
140
- #Basically, adds any instance variable assignments to the environment.
141
- #TODO: method arguments?
139
+ # Processes a call to a before filter.
140
+ # Basically, adds any instance variable assignments to the environment.
141
+ # TODO: method arguments?
142
142
  def process_before_filter name
143
143
  filter = find_method name, @current_class
144
144
 
@@ -167,13 +167,13 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
167
167
  end
168
168
  end
169
169
 
170
- #Processes the default template for the current action
170
+ # Processes the default template for the current action
171
171
  def process_default_render exp
172
172
  process_layout
173
173
  process_template template_name, nil, nil, nil
174
174
  end
175
175
 
176
- #Process template and add the current class and method name as called_from info
176
+ # Process template and add the current class and method name as called_from info
177
177
  def process_template name, args, _, line
178
178
  # If line is null, assume implicit render and set the end of the action
179
179
  # method as the line number
@@ -191,7 +191,7 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
191
191
  super name, args, render_path, line
192
192
  end
193
193
 
194
- #Turns a method name into a template name
194
+ # Turns a method name into a template name
195
195
  def template_name name = nil
196
196
  name ||= @current_method
197
197
  name = name.to_s
@@ -204,7 +204,7 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
204
204
  end
205
205
  end
206
206
 
207
- #Determines default layout name
207
+ # Determines default layout name
208
208
  def layout_name
209
209
  controller = @tracker.controllers[@current_class]
210
210
 
@@ -218,7 +218,7 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
218
218
  nil
219
219
  end
220
220
 
221
- #Returns true if the given method name is also a route
221
+ # Returns true if the given method name is also a route
222
222
  def route? method
223
223
  if @tracker.routes[:allow_all_actions] or @tracker.options[:assume_all_routes]
224
224
  true
@@ -228,7 +228,7 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
228
228
  end
229
229
  end
230
230
 
231
- #Get list of filters, including those that are inherited
231
+ # Get list of filters, including those that are inherited
232
232
  def before_filter_list method, klass
233
233
  controller = @tracker.controllers[klass]
234
234
 
@@ -239,11 +239,11 @@ class Railroader::ControllerAliasProcessor < Railroader::AliasProcessor
239
239
  end
240
240
  end
241
241
 
242
- #Finds a method in the given class or a parent class
242
+ # Finds a method in the given class or a parent class
243
243
  #
244
- #Returns nil if the method could not be found.
244
+ # Returns nil if the method could not be found.
245
245
  #
246
- #If found, returns hash table with controller name and method sexp.
246
+ # If found, returns hash table with controller name and method sexp.
247
247
  def find_method method_name, klass
248
248
  return nil if sexp? method_name
249
249
  method_name = method_name.to_sym
@@ -2,7 +2,7 @@ require 'railroader/processors/base_processor'
2
2
  require 'railroader/processors/lib/module_helper'
3
3
  require 'railroader/tracker/controller'
4
4
 
5
- #Processes controller. Results are put in tracker.controllers
5
+ # Processes controller. Results are put in tracker.controllers
6
6
  class Railroader::ControllerProcessor < Railroader::BaseProcessor
7
7
  include Railroader::ModuleHelper
8
8
 
@@ -19,20 +19,20 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
19
19
  @concerns = Set.new
20
20
  end
21
21
 
22
- #Use this method to process a Controller
22
+ # Use this method to process a Controller
23
23
  def process_controller src, file_name = nil
24
24
  @file_name = file_name
25
25
  process src
26
26
  end
27
27
 
28
- #s(:class, NAME, PARENT, s(:scope ...))
28
+ # s(:class, NAME, PARENT, s(:scope ...))
29
29
  def process_class exp
30
30
  name = class_name(exp.class_name)
31
31
  parent = class_name(exp.parent_name)
32
32
 
33
- #If inside a real controller, treat any other classes as libraries.
34
- #But if not inside a controller already, then the class may include
35
- #a real controller, so we can't take this shortcut.
33
+ # If inside a real controller, treat any other classes as libraries.
34
+ # But if not inside a controller already, then the class may include
35
+ # a real controller, so we can't take this shortcut.
36
36
  if @current_class and @current_class.name.to_s.end_with? "Controller"
37
37
  Railroader.debug "[Notice] Treating inner class as library: #{name}"
38
38
  Railroader::LibraryProcessor.new(@tracker).process_library exp, @file_name
@@ -41,11 +41,11 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
41
41
 
42
42
  if not name.to_s.end_with? "Controller"
43
43
  Railroader.debug "[Notice] Adding noncontroller as library: #{name}"
44
- #Set the class to be a module in order to get the right namespacing.
45
- #Add class to libraries, in case it is needed later (e.g. it's used
46
- #as a parent class for a controller.)
47
- #However, still want to process it in this class, so have to set
48
- #@current_class to this not-really-a-controller thing.
44
+ # Set the class to be a module in order to get the right namespacing.
45
+ # Add class to libraries, in case it is needed later (e.g. it's used
46
+ # as a parent class for a controller.)
47
+ # However, still want to process it in this class, so have to set
48
+ # @current_class to this not-really-a-controller thing.
49
49
  process_module exp, parent
50
50
 
51
51
  return exp
@@ -73,7 +73,7 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
73
73
  end
74
74
  end
75
75
 
76
- #Look for specific calls inside the controller
76
+ # Look for specific calls inside the controller
77
77
  def process_call exp
78
78
  return exp if process_call_defn? exp
79
79
 
@@ -86,17 +86,17 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
86
86
  first_arg = exp.first_arg
87
87
  last_arg = exp.last_arg
88
88
 
89
- #Methods called inside class definition
90
- #like attr_* and other settings
89
+ # Methods called inside class definition
90
+ # like attr_* and other settings
91
91
  if @current_method.nil? and target.nil? and @current_class
92
- if first_arg.nil? #No args
92
+ if first_arg.nil? # No args
93
93
  case method
94
94
  when :private, :protected, :public
95
95
  @visibility = method
96
96
  when :protect_from_forgery
97
97
  @current_class.options[:protect_from_forgery] = true
98
98
  else
99
- #??
99
+ # ??
100
100
  end
101
101
  else
102
102
  case method
@@ -122,7 +122,7 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
122
122
  @current_class.skip_filter exp
123
123
  when :layout
124
124
  if string? last_arg
125
- #layout "some_layout"
125
+ # layout "some_layout"
126
126
 
127
127
  name = last_arg.value.to_s
128
128
  if @app_tree.layout_exists?(name)
@@ -131,7 +131,7 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
131
131
  Railroader.debug "[Notice] Layout not found: #{name}"
132
132
  end
133
133
  elsif node_type? last_arg, :nil, :false
134
- #layout :false or layout nil
134
+ # layout :false or layout nil
135
135
  @current_class.layout = false
136
136
  end
137
137
  else
@@ -143,10 +143,10 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
143
143
  elsif target == nil and method == :render
144
144
  make_render exp
145
145
  elsif exp == FORMAT_HTML and context[1] != :iter
146
- #This is an empty call to
146
+ # This is an empty call to
147
147
  # format.html
148
- #Which renders the default template if no arguments
149
- #Need to make more generic, though.
148
+ # Which renders the default template if no arguments
149
+ # Need to make more generic, though.
150
150
  call = Sexp.new :render, :default, @current_method
151
151
  call.line(exp.line)
152
152
  call
@@ -157,12 +157,12 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
157
157
  end
158
158
  end
159
159
 
160
- #Look for before_filters and add fake ones if necessary
160
+ # Look for before_filters and add fake ones if necessary
161
161
  def process_iter exp
162
162
  if @current_method.nil? and call? exp.block_call
163
163
  block_call_name = exp.block_call.method
164
164
 
165
- if block_call_name == :before_filter or block_call_name == :before_action
165
+ if block_call_name == :before_filter or block_call_name == :before_action
166
166
  add_fake_filter exp
167
167
  else
168
168
  super
@@ -172,22 +172,22 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
172
172
  end
173
173
  end
174
174
 
175
- #Sets default layout for renders inside Controller
175
+ # Sets default layout for renders inside Controller
176
176
  def set_layout_name
177
177
  return if @current_class.layout
178
178
 
179
179
  name = underscore(@current_class.name.to_s.split("::")[-1].gsub("Controller", ''))
180
180
 
181
- #There is a layout for this Controller
181
+ # There is a layout for this Controller
182
182
  if @app_tree.layout_exists?(name)
183
183
  @current_class.layout = "layouts/#{name}"
184
184
  end
185
185
  end
186
186
 
187
- #This is to handle before_filter do |controller| ... end
187
+ # This is to handle before_filter do |controller| ... end
188
188
  #
189
- #We build a new method and process that the same way as usual
190
- #methods and filters.
189
+ # We build a new method and process that the same way as usual
190
+ # methods and filters.
191
191
  def add_fake_filter exp
192
192
  unless @current_class
193
193
  Railroader.debug "Skipping before_filter outside controller: #{exp}"
@@ -211,7 +211,7 @@ class Railroader::ControllerProcessor < Railroader::BaseProcessor
211
211
  block_inner = [exp.block]
212
212
  end
213
213
 
214
- #Build Sexp for filter method
214
+ # Build Sexp for filter method
215
215
  body = Sexp.new(:lasgn,
216
216
  block_variable,
217
217
  Sexp.new(:call, Sexp.new(:const, @current_class.name), :new))
@@ -1,18 +1,18 @@
1
1
  require 'railroader/processors/template_processor'
2
2
 
3
- #Processes ERB templates
4
- #(those ending in .html.erb or .rthml).
3
+ # Processes ERB templates
4
+ # (those ending in .html.erb or .rthml).
5
5
  class Railroader::ErbTemplateProcessor < Railroader::TemplateProcessor
6
-
7
- #s(:call, TARGET, :method, ARGS)
6
+
7
+ # s(:call, TARGET, :method, ARGS)
8
8
  def process_call exp
9
9
  target = exp.target
10
10
  if sexp? target
11
11
  target = process target
12
12
  end
13
13
  method = exp.method
14
-
15
- #_erbout is the default output variable for erb
14
+
15
+ # _erbout is the default output variable for erb
16
16
  if node_type? target, :lvar and target.value == :_erbout
17
17
  if method == :concat or method == :<<
18
18
  @inside_concat = true
@@ -25,7 +25,7 @@ class Railroader::ErbTemplateProcessor < Railroader::TemplateProcessor
25
25
 
26
26
  arg = normalize_output(exp.first_arg)
27
27
 
28
- if arg.node_type == :str #ignore plain strings
28
+ if arg.node_type == :str # ignore plain strings
29
29
  ignore
30
30
  else
31
31
  add_output arg
@@ -45,7 +45,7 @@ class Railroader::ErbTemplateProcessor < Railroader::TemplateProcessor
45
45
  end
46
46
  end
47
47
 
48
- #Process block, removing irrelevant expressions
48
+ # Process block, removing irrelevant expressions
49
49
  def process_block exp
50
50
  exp = exp.dup
51
51
  exp.shift
@@ -1,9 +1,9 @@
1
1
  require 'railroader/processors/template_processor'
2
2
 
3
- #Processes ERB templates using Erubis instead of erb.
3
+ # Processes ERB templates using Erubis instead of erb.
4
4
  class Railroader::ErubisTemplateProcessor < Railroader::TemplateProcessor
5
5
 
6
- #s(:call, TARGET, :method, ARGS)
6
+ # s(:call, TARGET, :method, ARGS)
7
7
  def process_call exp
8
8
  target = exp.target
9
9
  if sexp? target
@@ -14,13 +14,13 @@ class Railroader::ErubisTemplateProcessor < Railroader::TemplateProcessor
14
14
  exp.arglist = process exp.arglist
15
15
  method = exp.method
16
16
 
17
- #_buf is the default output variable for Erubis
17
+ # _buf is the default output variable for Erubis
18
18
  if node_type?(target, :lvar, :ivar) and (target.value == :_buf or target.value == :@output_buffer)
19
19
  if method == :<< or method == :safe_concat
20
20
 
21
21
  arg = normalize_output(exp.first_arg)
22
22
 
23
- if arg.node_type == :str #ignore plain strings
23
+ if arg.node_type == :str # ignore plain strings
24
24
  ignore
25
25
  elsif node_type? target, :ivar and target.value == :@output_buffer
26
26
  add_escaped_output arg
@@ -39,7 +39,7 @@ class Railroader::ErubisTemplateProcessor < Railroader::TemplateProcessor
39
39
  end
40
40
  end
41
41
 
42
- #Process blocks, ignoring :ignore exps
42
+ # Process blocks, ignoring :ignore exps
43
43
  def process_block exp
44
44
  exp = exp.dup
45
45
  exp.shift
@@ -56,7 +56,7 @@ class Railroader::ErubisTemplateProcessor < Railroader::TemplateProcessor
56
56
  block
57
57
  end
58
58
 
59
- #Look for assignments to output buffer that look like this:
59
+ # Look for assignments to output buffer that look like this:
60
60
  # @output_buffer.append = some_output
61
61
  # @output_buffer.safe_append = some_output
62
62
  # @output_buffer.safe_expr_append = some_output
@@ -1,6 +1,6 @@
1
1
  require 'railroader/processors/lib/basic_processor'
2
2
 
3
- #Processes Gemfile and Gemfile.lock
3
+ # Processes Gemfile and Gemfile.lock
4
4
  class Railroader::GemProcessor < Railroader::BasicProcessor
5
5
 
6
6
  def initialize *args
@@ -1,13 +1,13 @@
1
1
  require 'railroader/processors/template_processor'
2
2
 
3
- #Processes HAML templates.
3
+ # Processes HAML templates.
4
4
  class Railroader::HamlTemplateProcessor < Railroader::TemplateProcessor
5
5
  HAML_FORMAT_METHOD = /format_script_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)/
6
6
  HAML_HELPERS = s(:colon2, s(:const, :Haml), :Helpers)
7
7
  JAVASCRIPT_FILTER = s(:colon2, s(:colon2, s(:const, :Haml), :Filters), :Javascript)
8
8
  COFFEE_FILTER = s(:colon2, s(:colon2, s(:const, :Haml), :Filters), :Coffee)
9
9
 
10
- #Processes call, looking for template output
10
+ # Processes call, looking for template output
11
11
  def process_call exp
12
12
  target = exp.target
13
13
  if sexp? target
@@ -18,7 +18,7 @@ class Railroader::HamlTemplateProcessor < Railroader::TemplateProcessor
18
18
 
19
19
  if (call? target and target.method == :_hamlout)
20
20
  res = case method
21
- when :adjust_tabs, :rstrip!, :attributes #Check attributes, maybe?
21
+ when :adjust_tabs, :rstrip!, :attributes # Check attributes, maybe?
22
22
  ignore
23
23
  when :options, :buffer
24
24
  exp
@@ -69,22 +69,22 @@ class Railroader::HamlTemplateProcessor < Railroader::TemplateProcessor
69
69
  res.line(exp.line)
70
70
  res
71
71
 
72
- #_hamlout.buffer <<
73
- #This seems to be used rarely, but directly appends args to output buffer.
74
- #Has something to do with values of blocks?
72
+ # _hamlout.buffer <<
73
+ # This seems to be used rarely, but directly appends args to output buffer.
74
+ # Has something to do with values of blocks?
75
75
  elsif sexp? target and method == :<< and is_buffer_target? target
76
76
  @inside_concat = true
77
77
  exp.first_arg = process(exp.first_arg)
78
78
  out = normalize_output(exp.first_arg)
79
79
  @inside_concat = false
80
80
 
81
- if out.node_type == :str #ignore plain strings
81
+ if out.node_type == :str # ignore plain strings
82
82
  ignore
83
83
  else
84
84
  add_output out
85
85
  end
86
86
  elsif target == nil and method == :render
87
- #Process call to render()
87
+ # Process call to render()
88
88
  exp.arglist = process exp.arglist
89
89
  make_render_in_view exp
90
90
  elsif target == nil and method == :find_and_preserve and exp.first_arg
@@ -102,7 +102,7 @@ class Railroader::HamlTemplateProcessor < Railroader::TemplateProcessor
102
102
  end
103
103
  end
104
104
 
105
- #If inside an output stream, only return the final expression
105
+ # If inside an output stream, only return the final expression
106
106
  def process_block exp
107
107
  exp = exp.dup
108
108
  exp.shift
@@ -126,8 +126,8 @@ class Railroader::HamlTemplateProcessor < Railroader::TemplateProcessor
126
126
  end
127
127
  end
128
128
 
129
- #Checks if the buffer is the target in a method call Sexp.
130
- #TODO: Test this
129
+ # Checks if the buffer is the target in a method call Sexp.
130
+ # TODO: Test this
131
131
  def is_buffer_target? exp
132
132
  exp.node_type == :call and
133
133
  node_type? exp.target, :lvar and
@@ -135,8 +135,8 @@ class Railroader::HamlTemplateProcessor < Railroader::TemplateProcessor
135
135
  exp.method == :buffer
136
136
  end
137
137
 
138
- #HAML likes to put interpolated values into _hamlout.push_text
139
- #but we want to handle those individually
138
+ # HAML likes to put interpolated values into _hamlout.push_text
139
+ # but we want to handle those individually
140
140
  def build_output_from_push_text exp, default = :output
141
141
  if string_interp? exp
142
142
  exp.map! do |e|
@@ -153,7 +153,7 @@ class Railroader::HamlTemplateProcessor < Railroader::TemplateProcessor
153
153
  end
154
154
  end
155
155
 
156
- #Gets outputs from values interpolated into _hamlout.push_text
156
+ # Gets outputs from values interpolated into _hamlout.push_text
157
157
  def get_pushed_value exp, default = :output
158
158
  return exp unless sexp? exp
159
159
 
@@ -68,7 +68,7 @@ module Railroader
68
68
  if args.length == 1 and integer? args.first
69
69
  index = args.first.value
70
70
 
71
- #Have to do this because first element is :array and we have to skip it
71
+ # Have to do this because first element is :array and we have to skip it
72
72
  array[1..-1][index] or original_exp
73
73
  else
74
74
  original_exp
@@ -12,8 +12,8 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
12
12
  @cache = {}
13
13
  end
14
14
 
15
- #Process the given source. Provide either class and method being searched
16
- #or the template. These names are used when reporting results.
15
+ # Process the given source. Provide either class and method being searched
16
+ # or the template. These names are used when reporting results.
17
17
  def process_source exp, opts
18
18
  @current_class = opts[:class]
19
19
  @current_method = opts[:method]
@@ -23,7 +23,7 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
23
23
  process exp
24
24
  end
25
25
 
26
- #Process body of method
26
+ # Process body of method
27
27
  def process_defn exp
28
28
  return exp unless @current_method
29
29
  process_all exp.body
@@ -31,7 +31,7 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
31
31
 
32
32
  alias process_defs process_defn
33
33
 
34
- #Process body of block
34
+ # Process body of block
35
35
  def process_rlist exp
36
36
  process_all exp
37
37
  end
@@ -54,7 +54,7 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
54
54
 
55
55
  process exp.block
56
56
  else
57
- #Probably a :render call with block
57
+ # Probably a :render call with block
58
58
  process call
59
59
  process exp.block
60
60
  end
@@ -62,8 +62,8 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
62
62
  exp
63
63
  end
64
64
 
65
- #Calls to render() are converted to s(:render, ...) but we would
66
- #like them in the call cache still for speed
65
+ # Calls to render() are converted to s(:render, ...) but we would
66
+ # like them in the call cache still for speed
67
67
  def process_render exp
68
68
  process exp.last if sexp? exp.last
69
69
 
@@ -72,8 +72,8 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
72
72
  exp
73
73
  end
74
74
 
75
- #Technically, `` is call to Kernel#`
76
- #But we just need them in the call cache for speed
75
+ # Technically, `` is call to Kernel#`
76
+ # But we just need them in the call cache for speed
77
77
  def process_dxstr exp
78
78
  process exp.last if sexp? exp.last
79
79
 
@@ -100,7 +100,7 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
100
100
  exp
101
101
  end
102
102
 
103
- #Process an assignment like a call
103
+ # Process an assignment like a call
104
104
  def process_attrasgn exp
105
105
  process_call exp
106
106
  end
@@ -116,8 +116,8 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
116
116
  :parent => @current_call }
117
117
  end
118
118
 
119
- #Gets the target of a call as a Symbol
120
- #if possible
119
+ # Gets the target of a call as a Symbol
120
+ # if possible
121
121
  def get_target exp, include_calls = false
122
122
  if sexp? exp
123
123
  case exp.node_type
@@ -154,8 +154,8 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
154
154
  end
155
155
  end
156
156
 
157
- #Returns method chain as an array
158
- #For example, User.human.alive.all would return [:User, :human, :alive, :all]
157
+ # Returns method chain as an array
158
+ # For example, User.human.alive.all would return [:User, :human, :alive, :all]
159
159
  def get_chain call
160
160
  if node_type? call, :call, :attrasgn, :safe_call, :safe_attrasgn
161
161
  get_chain(call.target) + [call.method]
@@ -187,7 +187,7 @@ class Railroader::FindAllCalls < Railroader::BasicProcessor
187
187
 
188
188
  end
189
189
 
190
- #Return info hash for a call Sexp
190
+ # Return info hash for a call Sexp
191
191
  def create_call_hash exp
192
192
  target = get_target exp.target
193
193