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
@@ -1,10 +1,10 @@
1
1
  require 'railroader/processors/lib/basic_processor'
2
2
 
3
- #Finds method calls matching the given target(s).
3
+ # Finds method calls matching the given target(s).
4
4
  # #-- This should be deprecated --#
5
5
  # #-- Do not use for new code --#
6
6
  #
7
- #Targets/methods can be:
7
+ # Targets/methods can be:
8
8
  #
9
9
  # - nil: matches anything, including nothing
10
10
  # - Empty array: matches nothing
@@ -13,12 +13,12 @@ require 'railroader/processors/lib/basic_processor'
13
13
  # - Regular expression: matches the expression
14
14
  # - Array of regular expressions: matches any of the expressions
15
15
  #
16
- #If a target is also the name of a class, methods called on instances
17
- #of that class will also be matched, in a very limited way.
18
- #(Any methods called on Klass.new, basically. More useful when used
19
- #in conjunction with AliasProcessor.)
16
+ # If a target is also the name of a class, methods called on instances
17
+ # of that class will also be matched, in a very limited way.
18
+ # (Any methods called on Klass.new, basically. More useful when used
19
+ # in conjunction with AliasProcessor.)
20
20
  #
21
- #Examples:
21
+ # Examples:
22
22
  #
23
23
  # #To find any uses of this class:
24
24
  # FindCall.new :FindCall, nil
@@ -43,23 +43,23 @@ class Railroader::FindCall < Railroader::BasicProcessor
43
43
  @in_depth = in_depth
44
44
  end
45
45
 
46
- #Returns a list of results.
46
+ # Returns a list of results.
47
47
  #
48
- #A result looks like:
48
+ # A result looks like:
49
49
  #
50
50
  # s(:result, :ClassName, :method_name, s(:call, ...))
51
51
  #
52
- #or
52
+ # or
53
53
  #
54
54
  # s(:result, :template_name, s(:call, ...))
55
55
  def matches
56
56
  @calls
57
57
  end
58
58
 
59
- #Process the given source. Provide either class and method being searched
60
- #or the template. These names are used when reporting results.
59
+ # Process the given source. Provide either class and method being searched
60
+ # or the template. These names are used when reporting results.
61
61
  #
62
- #Use FindCall#matches to retrieve results.
62
+ # Use FindCall#matches to retrieve results.
63
63
  def process_source exp, klass = nil, method = nil, template = nil
64
64
  @current_class = klass
65
65
  @current_method = method
@@ -67,19 +67,19 @@ class Railroader::FindCall < Railroader::BasicProcessor
67
67
  process exp
68
68
  end
69
69
 
70
- #Process body of method
70
+ # Process body of method
71
71
  def process_defn exp
72
72
  process_all exp.body
73
73
  end
74
74
 
75
75
  alias :process_defs :process_defn
76
76
 
77
- #Process body of block
77
+ # Process body of block
78
78
  def process_rlist exp
79
79
  process_all exp
80
80
  end
81
81
 
82
- #Look for matching calls and add them to results
82
+ # Look for matching calls and add them to results
83
83
  def process_call exp
84
84
  target = get_target exp.target
85
85
  method = exp.method
@@ -95,13 +95,13 @@ class Railroader::FindCall < Railroader::BasicProcessor
95
95
  end
96
96
 
97
97
  end
98
-
99
- #Normally FindCall won't match a method invocation that is the target of
100
- #another call, such as:
98
+
99
+ # Normally FindCall won't match a method invocation that is the target of
100
+ # another call, such as:
101
101
  #
102
102
  # User.find(:first, :conditions => "user = '#{params['user']}').name
103
103
  #
104
- #A search for User.find will not match this unless @in_depth is true.
104
+ # A search for User.find will not match this unless @in_depth is true.
105
105
  if @in_depth and call? exp.target
106
106
  process exp.target
107
107
  end
@@ -109,15 +109,15 @@ class Railroader::FindCall < Railroader::BasicProcessor
109
109
  exp
110
110
  end
111
111
 
112
- #Process an assignment like a call
112
+ # Process an assignment like a call
113
113
  def process_attrasgn exp
114
114
  process_call exp
115
115
  end
116
116
 
117
117
  private
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
122
122
  if sexp? exp
123
123
  case exp.node_type
@@ -135,7 +135,7 @@ class Railroader::FindCall < Railroader::BasicProcessor
135
135
  end
136
136
  end
137
137
 
138
- #Checks if the search terms match the given item
138
+ # Checks if the search terms match the given item
139
139
  def match search_terms, item
140
140
  case search_terms
141
141
  when Symbol
@@ -152,7 +152,7 @@ class Railroader::FindCall < Railroader::BasicProcessor
152
152
  if search_terms.empty?
153
153
  item == nil
154
154
  else
155
- search_terms.each do|term|
155
+ search_terms.each do |term|
156
156
  if match(term, item)
157
157
  return true
158
158
  end
@@ -168,7 +168,7 @@ class Railroader::FindCall < Railroader::BasicProcessor
168
168
  end
169
169
  end
170
170
 
171
- #Checks if +item+ is an instance of +klass+ by looking for Klass.new
171
+ # Checks if +item+ is an instance of +klass+ by looking for Klass.new
172
172
  def is_instance_of? item, klass
173
173
  if call? item
174
174
  if sexp? item.target
@@ -1,16 +1,16 @@
1
1
  require 'railroader/processors/alias_processor'
2
2
 
3
- #Attempts to determine the return value of a method.
3
+ # Attempts to determine the return value of a method.
4
4
  #
5
- #Preferred usage:
5
+ # Preferred usage:
6
6
  #
7
7
  # Railroader::FindReturnValue.return_value exp
8
8
  class Railroader::FindReturnValue
9
9
  include Railroader::Util
10
10
 
11
- #Returns a guess at the return value of a given method or other block of code.
11
+ # Returns a guess at the return value of a given method or other block of code.
12
12
  #
13
- #If multiple return values are possible, returns all values in an :or Sexp.
13
+ # If multiple return values are possible, returns all values in an :or Sexp.
14
14
  def self.return_value exp, env = nil
15
15
  self.new.get_return_value exp, env
16
16
  end
@@ -24,7 +24,7 @@ class Railroader::FindReturnValue
24
24
  @uses_ivars
25
25
  end
26
26
 
27
- #Find return value of Sexp. Takes an optional starting environment.
27
+ # Find return value of Sexp. Takes an optional starting environment.
28
28
  def get_return_value exp, env = nil
29
29
  process_method exp, env
30
30
  value = make_return_value
@@ -32,7 +32,7 @@ class Railroader::FindReturnValue
32
32
  value
33
33
  end
34
34
 
35
- #Process method (or, actually, any Sexp) for return value.
35
+ # Process method (or, actually, any Sexp) for return value.
36
36
  def process_method exp, env = nil
37
37
  exp = Railroader::AliasProcessor.new.process_safely exp, env
38
38
 
@@ -55,7 +55,7 @@ class Railroader::FindReturnValue
55
55
  exp
56
56
  end
57
57
 
58
- #Searches expression for return statements.
58
+ # Searches expression for return statements.
59
59
  def find_explicit_return_values exp
60
60
  todo = [exp]
61
61
 
@@ -72,7 +72,7 @@ class Railroader::FindReturnValue
72
72
  end
73
73
  end
74
74
 
75
- #Determines the "last value" of an expression.
75
+ # Determines the "last value" of an expression.
76
76
  def last_value exp
77
77
  case exp.node_type
78
78
  when :rlist, :block, :scope, Sexp
@@ -95,7 +95,7 @@ class Railroader::FindReturnValue
95
95
  value = make_or(true_branch, false_branch)
96
96
  value.original_line = value.rhs.line
97
97
  value
98
- else #Unlikely?
98
+ else # Unlikely?
99
99
  true_branch or false_branch
100
100
  end
101
101
  end
@@ -140,7 +140,7 @@ class Railroader::FindReturnValue
140
140
  end
141
141
 
142
142
  def make_or lhs, rhs
143
- #Better checks in future
143
+ # Better checks in future
144
144
  if lhs == rhs
145
145
  lhs
146
146
  else
@@ -148,7 +148,7 @@ class Railroader::FindReturnValue
148
148
  end
149
149
  end
150
150
 
151
- #Turns the array of return values into an :or Sexp
151
+ # Turns the array of return values into an :or Sexp
152
152
  def make_return_value
153
153
  @return_values.compact!
154
154
  @return_values.uniq!
@@ -47,7 +47,7 @@ module Railroader::ModuleHelper
47
47
  @current_class = collection[name]
48
48
  @current_class.add_file @file_name, exp
49
49
  else
50
- @current_class = tracker_class.new name, parent, @file_name, exp, @tracker
50
+ @current_class = tracker_class.new name, parent, @file_name, exp, @tracker
51
51
  collection[name] = @current_class
52
52
  end
53
53
 
@@ -1,4 +1,4 @@
1
- #Contains a couple shared methods for Processors.
1
+ # Contains a couple shared methods for Processors.
2
2
  module Railroader::ProcessorHelper
3
3
  def process_all exp
4
4
  exp.each_sexp do |e|
@@ -19,9 +19,9 @@ module Railroader::ProcessorHelper
19
19
  exp
20
20
  end
21
21
 
22
- #Process the arguments of a method call. Does not store results.
22
+ # Process the arguments of a method call. Does not store results.
23
23
  #
24
- #This method is used because Sexp#args and Sexp#arglist create new objects.
24
+ # This method is used because Sexp#args and Sexp#arglist create new objects.
25
25
  def process_call_args exp
26
26
  exp.each_arg do |a|
27
27
  process a if sexp? a
@@ -38,7 +38,7 @@ module Railroader::ProcessorHelper
38
38
  exp
39
39
  end
40
40
 
41
- #Sets the current module.
41
+ # Sets the current module.
42
42
  def process_module exp
43
43
  module_name = class_name(exp.class_name).to_s
44
44
  prev_module = @current_module
@@ -1,39 +1,39 @@
1
1
  require 'railroader/processors/lib/basic_processor'
2
2
 
3
- #Processes configuration. Results are put in tracker.config.
3
+ # Processes configuration. Results are put in tracker.config.
4
4
  #
5
- #Configuration of Rails via Rails::Initializer are stored in tracker.config.rails.
6
- #For example:
5
+ # Configuration of Rails via Rails::Initializer are stored in tracker.config.rails.
6
+ # For example:
7
7
  #
8
8
  # Rails::Initializer.run |config|
9
9
  # config.action_controller.session_store = :cookie_store
10
10
  # end
11
11
  #
12
- #will be stored in
12
+ # will be stored in
13
13
  #
14
14
  # tracker.config[:rails][:action_controller][:session_store]
15
15
  #
16
- #Values for tracker.config.rails will still be Sexps.
16
+ # Values for tracker.config.rails will still be Sexps.
17
17
  class Railroader::Rails2ConfigProcessor < Railroader::BasicProcessor
18
- #Replace block variable in
18
+ # Replace block variable in
19
19
  #
20
20
  # Rails::Initializer.run |config|
21
21
  #
22
- #with this value so we can keep track of it.
22
+ # with this value so we can keep track of it.
23
23
  RAILS_CONFIG = Sexp.new(:const, :"!BRAKEMAN_RAILS_CONFIG")
24
24
 
25
25
  def initialize *args
26
26
  super
27
27
  end
28
28
 
29
- #Use this method to process configuration file
29
+ # Use this method to process configuration file
30
30
  def process_config src, file_name
31
31
  @file_name = file_name
32
32
  res = Railroader::ConfigAliasProcessor.new.process_safely(src, nil, file_name)
33
33
  process res
34
34
  end
35
35
 
36
- #Check if config is set to use Erubis
36
+ # Check if config is set to use Erubis
37
37
  def process_call exp
38
38
  target = exp.target
39
39
  target = process target if sexp? target
@@ -46,13 +46,13 @@ class Railroader::Rails2ConfigProcessor < Railroader::BasicProcessor
46
46
  exp
47
47
  end
48
48
 
49
- #Look for configuration settings
49
+ # Look for configuration settings
50
50
  def process_attrasgn exp
51
51
  if exp.target == RAILS_CONFIG
52
- #Get rid of '=' at end
52
+ # Get rid of '=' at end
53
53
  attribute = exp.method.to_s[0..-2].to_sym
54
54
  if exp.args.length > 1
55
- #Multiple arguments?...not sure if this will ever happen
55
+ # Multiple arguments?...not sure if this will ever happen
56
56
  @tracker.config.rails[attribute] = exp.args
57
57
  else
58
58
  @tracker.config.rails[attribute] = exp.first_arg
@@ -71,9 +71,9 @@ class Railroader::Rails2ConfigProcessor < Railroader::BasicProcessor
71
71
  exp
72
72
  end
73
73
 
74
- #Check for Rails version
74
+ # Check for Rails version
75
75
  def process_cdecl exp
76
- #Set Rails version required
76
+ # Set Rails version required
77
77
  if exp.lhs == :RAILS_GEM_VERSION
78
78
  @tracker.config.rails_version = exp.rhs.value
79
79
  end
@@ -81,7 +81,7 @@ class Railroader::Rails2ConfigProcessor < Railroader::BasicProcessor
81
81
  exp
82
82
  end
83
83
 
84
- #Check if an expression includes a call to set Rails config
84
+ # Check if an expression includes a call to set Rails config
85
85
  def include_rails_config? exp
86
86
  target = exp.target
87
87
  if call? target
@@ -97,11 +97,11 @@ class Railroader::Rails2ConfigProcessor < Railroader::BasicProcessor
97
97
  end
98
98
  end
99
99
 
100
- #Returns an array of symbols for each 'level' in the config
100
+ # Returns an array of symbols for each 'level' in the config
101
101
  #
102
102
  # config.action_controller.session_store = :cookie
103
103
  #
104
- #becomes
104
+ # becomes
105
105
  #
106
106
  # [:action_controller, :session_store]
107
107
  def get_rails_config exp
@@ -120,18 +120,18 @@ class Railroader::Rails2ConfigProcessor < Railroader::BasicProcessor
120
120
  end
121
121
  end
122
122
 
123
- #This is necessary to replace block variable so we can track config settings
123
+ # This is necessary to replace block variable so we can track config settings
124
124
  class Railroader::ConfigAliasProcessor < Railroader::AliasProcessor
125
125
 
126
126
  RAILS_INIT = Sexp.new(:colon2, Sexp.new(:const, :Rails), :Initializer)
127
127
 
128
- #Look for a call to
128
+ # Look for a call to
129
129
  #
130
130
  # Rails::Initializer.run do |config|
131
131
  # ...
132
132
  # end
133
133
  #
134
- #and replace config with RAILS_CONFIG
134
+ # and replace config with RAILS_CONFIG
135
135
  def process_iter exp
136
136
  target = exp.block_call.target
137
137
  method = exp.block_call.method
@@ -1,9 +1,9 @@
1
1
  require 'railroader/processors/lib/basic_processor'
2
2
 
3
- #Processes the Sexp from routes.rb. Stores results in tracker.routes.
3
+ # Processes the Sexp from routes.rb. Stores results in tracker.routes.
4
4
  #
5
- #Note that it is only interested in determining what methods on which
6
- #controllers are used as routes, not the generated URLs for routes.
5
+ # Note that it is only interested in determining what methods on which
6
+ # controllers are used as routes, not the generated URLs for routes.
7
7
  class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
8
8
  include Railroader::RouteHelper
9
9
 
@@ -12,22 +12,22 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
12
12
  def initialize tracker
13
13
  super
14
14
  @map = Sexp.new(:lvar, :map)
15
- @nested = nil #used for identifying nested targets
16
- @prefix = [] #Controller name prefix (a module name, usually)
15
+ @nested = nil # used for identifying nested targets
16
+ @prefix = [] # Controller name prefix (a module name, usually)
17
17
  @current_controller = nil
18
- @with_options = nil #For use inside map.with_options
18
+ @with_options = nil # For use inside map.with_options
19
19
  @file_name = "config/routes.rb"
20
20
  end
21
21
 
22
- #Call this with parsed route file information.
22
+ # Call this with parsed route file information.
23
23
  #
24
- #This method first calls RouteAliasProcessor#process_safely on the +exp+,
25
- #so it does not modify the +exp+.
24
+ # This method first calls RouteAliasProcessor#process_safely on the +exp+,
25
+ # so it does not modify the +exp+.
26
26
  def process_routes exp
27
27
  process Railroader::RouteAliasProcessor.new.process_safely(exp, nil, @file_name)
28
28
  end
29
29
 
30
- #Looking for mapping of routes
30
+ # Looking for mapping of routes
31
31
  def process_call exp
32
32
  target = exp.target
33
33
 
@@ -40,8 +40,8 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
40
40
  exp
41
41
  end
42
42
 
43
- #Process a map.something call
44
- #based on the method used
43
+ # Process a map.something call
44
+ # based on the method used
45
45
  def process_map exp
46
46
  args = exp.args
47
47
 
@@ -59,8 +59,8 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
59
59
  exp
60
60
  end
61
61
 
62
- #Look for map calls that take a block.
63
- #Otherwise, just do the default processing.
62
+ # Look for map calls that take a block.
63
+ # Otherwise, just do the default processing.
64
64
  def process_iter exp
65
65
  target = exp.block_call.target
66
66
 
@@ -81,9 +81,9 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
81
81
  end
82
82
  end
83
83
 
84
- #Process
84
+ # Process
85
85
  # map.resources :x, :controller => :y, :member => ...
86
- #etc.
86
+ # etc.
87
87
  def process_resources exp
88
88
  controller = check_for_controller_name exp
89
89
  if controller
@@ -100,8 +100,8 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
100
100
  end
101
101
  end
102
102
 
103
- #Process all the options that might be in the hash passed to
104
- #map.resource, et al.
103
+ # Process all the options that might be in the hash passed to
104
+ # map.resource, et al.
105
105
  def process_resource_options exp
106
106
  if exp.nil? and @with_options
107
107
  exp = @with_options
@@ -115,12 +115,12 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
115
115
  when :controller, :requirements, :singular, :path_prefix, :as,
116
116
  :path_names, :shallow, :name_prefix, :member_path, :nested_member_path,
117
117
  :belongs_to, :conditions, :active_scaffold
118
- #should be able to skip
118
+ # should be able to skip
119
119
  when :collection, :member, :new
120
120
  process_collection value
121
121
  when :has_one
122
122
  save_controller = current_controller
123
- process_resource value[1..-1] #Verify this is proper behavior
123
+ process_resource value[1..-1] # Verify this is proper behavior
124
124
  self.current_controller = save_controller
125
125
  when :has_many
126
126
  save_controller = current_controller
@@ -136,7 +136,7 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
136
136
  end
137
137
  end
138
138
 
139
- #Process route option :only => ...
139
+ # Process route option :only => ...
140
140
  def process_option_only exp
141
141
  routes = @tracker.routes[@current_controller]
142
142
  [:index, :new, :create, :show, :edit, :update, :destroy].each do |r|
@@ -150,7 +150,7 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
150
150
  end
151
151
  end
152
152
 
153
- #Process route option :except => ...
153
+ # Process route option :except => ...
154
154
  def process_option_except exp
155
155
  return unless exp.node_type == :array
156
156
  routes = @tracker.routes[@current_controller]
@@ -177,7 +177,7 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
177
177
  end
178
178
  end
179
179
 
180
- #Process
180
+ # Process
181
181
  # map.connect '/something', :controller => 'blah', :action => 'whatever'
182
182
  def process_connect exp
183
183
  return if exp.empty?
@@ -185,7 +185,7 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
185
185
  controller = check_for_controller_name exp
186
186
  self.current_controller = controller if controller
187
187
 
188
- #Check for default route
188
+ # Check for default route
189
189
  if string? exp.first
190
190
  if exp.first.value == ":controller/:action/:id"
191
191
  @tracker.routes[:allow_all_actions] = exp.first
@@ -195,11 +195,11 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
195
195
  end
196
196
  end
197
197
 
198
- #This -seems- redundant, but people might connect actions
199
- #to a controller which already allows them all
198
+ # This -seems- redundant, but people might connect actions
199
+ # to a controller which already allows them all
200
200
  return if @tracker.routes[@current_controller].is_a? Array and @tracker.routes[@current_controller][0] == :allow_all_actions
201
201
 
202
- exp.last.each_with_index do |e,i|
202
+ exp.last.each_with_index do |e, i|
203
203
  if symbol? e and e.value == :action
204
204
  action = exp.last[i + 1]
205
205
 
@@ -221,7 +221,7 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
221
221
 
222
222
  self.current_controller = check_for_controller_name exp.block_call.args
223
223
 
224
- #process block
224
+ # process block
225
225
  process exp.block
226
226
 
227
227
  @with_options = nil
@@ -252,7 +252,7 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
252
252
  process_connect exp
253
253
  end
254
254
 
255
- #Process collection option
255
+ # Process collection option
256
256
  # :collection => { :some_action => :http_actions }
257
257
  def process_collection exp
258
258
  return unless exp.node_type == :hash
@@ -265,10 +265,10 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
265
265
 
266
266
  private
267
267
 
268
- #Checks an argument list for a hash that has a key :controller.
269
- #If it does, returns the value.
268
+ # Checks an argument list for a hash that has a key :controller.
269
+ # If it does, returns the value.
270
270
  #
271
- #Otherwise, returns nil.
271
+ # Otherwise, returns nil.
272
272
  def check_for_controller_name args
273
273
  args.each do |a|
274
274
  if hash? a and value = hash_access(a, :controller)
@@ -280,13 +280,13 @@ class Railroader::Rails2RoutesProcessor < Railroader::BasicProcessor
280
280
  end
281
281
  end
282
282
 
283
- #This is for a really specific case where a hash is used as arguments
284
- #to one of the map methods.
283
+ # This is for a really specific case where a hash is used as arguments
284
+ # to one of the map methods.
285
285
  class Railroader::RouteAliasProcessor < Railroader::AliasProcessor
286
286
 
287
- #This replaces
287
+ # This replaces
288
288
  # { :some => :hash }.keys
289
- #with
289
+ # with
290
290
  # [:some]
291
291
  def process_call exp
292
292
  process_default exp
@@ -294,14 +294,14 @@ class Railroader::RouteAliasProcessor < Railroader::AliasProcessor
294
294
  if hash? exp.target and exp.method == :keys
295
295
  keys = get_keys exp.target
296
296
  exp.clear
297
- keys.each_with_index do |e,i|
297
+ keys.each_with_index do |e, i|
298
298
  exp[i] = e
299
299
  end
300
300
  end
301
301
  exp
302
302
  end
303
303
 
304
- #Returns an array Sexp containing the keys from the hash
304
+ # Returns an array Sexp containing the keys from the hash
305
305
  def get_keys hash
306
306
  keys = Sexp.new(:array)
307
307
  hash_iterate(hash) do |key, _value|
@@ -1,20 +1,20 @@
1
1
 
2
2
  require 'railroader/processors/lib/basic_processor'
3
3
 
4
- #Processes configuration. Results are put in tracker.config.
4
+ # Processes configuration. Results are put in tracker.config.
5
5
  #
6
- #Configuration of Rails via Rails::Initializer are stored in tracker.config.rails.
7
- #For example:
6
+ # Configuration of Rails via Rails::Initializer are stored in tracker.config.rails.
7
+ # For example:
8
8
  #
9
9
  # MyApp::Application.configure do
10
10
  # config.active_record.whitelist_attributes = true
11
11
  # end
12
12
  #
13
- #will be stored in
13
+ # will be stored in
14
14
  #
15
15
  # tracker.config.rails[:active_record][:whitelist_attributes]
16
16
  #
17
- #Values for tracker.config.rails will still be Sexps.
17
+ # Values for tracker.config.rails will still be Sexps.
18
18
  class Railroader::Rails3ConfigProcessor < Railroader::BasicProcessor
19
19
  RAILS_CONFIG = Sexp.new(:call, nil, :config)
20
20
 
@@ -23,14 +23,14 @@ class Railroader::Rails3ConfigProcessor < Railroader::BasicProcessor
23
23
  @inside_config = false
24
24
  end
25
25
 
26
- #Use this method to process configuration file
26
+ # Use this method to process configuration file
27
27
  def process_config src, file_name
28
28
  @file_name = file_name
29
29
  res = Railroader::AliasProcessor.new(@tracker).process_safely(src, nil, @file_name)
30
30
  process res
31
31
  end
32
32
 
33
- #Look for MyApp::Application.configure do ... end
33
+ # Look for MyApp::Application.configure do ... end
34
34
  def process_iter exp
35
35
  call = exp.block_call
36
36
 
@@ -46,7 +46,7 @@ class Railroader::Rails3ConfigProcessor < Railroader::BasicProcessor
46
46
  exp
47
47
  end
48
48
 
49
- #Look for class Application < Rails::Application
49
+ # Look for class Application < Rails::Application
50
50
  def process_class exp
51
51
  if exp.class_name == :Application
52
52
  @inside_config = true
@@ -57,15 +57,15 @@ class Railroader::Rails3ConfigProcessor < Railroader::BasicProcessor
57
57
  exp
58
58
  end
59
59
 
60
- #Look for configuration settings
60
+ # Look for configuration settings
61
61
  def process_attrasgn exp
62
62
  return exp unless @inside_config
63
63
 
64
64
  if exp.target == RAILS_CONFIG
65
- #Get rid of '=' at end
65
+ # Get rid of '=' at end
66
66
  attribute = exp.method.to_s[0..-2].to_sym
67
67
  if exp.args.length > 1
68
- #Multiple arguments?...not sure if this will ever happen
68
+ # Multiple arguments?...not sure if this will ever happen
69
69
  @tracker.config.rails[attribute] = exp.args
70
70
  else
71
71
  @tracker.config.rails[attribute] = exp.first_arg
@@ -92,7 +92,7 @@ class Railroader::Rails3ConfigProcessor < Railroader::BasicProcessor
92
92
  exp
93
93
  end
94
94
 
95
- #Check if an expression includes a call to set Rails config
95
+ # Check if an expression includes a call to set Rails config
96
96
  def include_rails_config? exp
97
97
  target = exp.target
98
98
  if call? target
@@ -108,11 +108,11 @@ class Railroader::Rails3ConfigProcessor < Railroader::BasicProcessor
108
108
  end
109
109
  end
110
110
 
111
- #Returns an array of symbols for each 'level' in the config
111
+ # Returns an array of symbols for each 'level' in the config
112
112
  #
113
113
  # config.action_controller.session_store = :cookie
114
114
  #
115
- #becomes
115
+ # becomes
116
116
  #
117
117
  # [:action_controller, :session_store]
118
118
  def get_rails_config exp