Class: Brakeman::RenderPath

Inherits:
Object
  • Object
show all
Defined in:
lib/brakeman/processors/lib/render_path.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRenderPath

Returns a new instance of RenderPath.


5
6
7
# File 'lib/brakeman/processors/lib/render_path.rb', line 5

def initialize
  @path = []
end

Instance Attribute Details

#pathObject (readonly)

Returns the value of attribute path


3
4
5
# File 'lib/brakeman/processors/lib/render_path.rb', line 3

def path
  @path
end

Instance Method Details

#add_controller_render(controller_name, method_name, line, file) ⇒ Object


9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/brakeman/processors/lib/render_path.rb', line 9

def add_controller_render controller_name, method_name, line, file
  method_name ||= ""

  @path << { :type => :controller,
             :class => controller_name.to_sym,
             :method => method_name.to_sym,
             :line => line,
             :file => file
            }

  self
end

#add_template_render(template_name, line, file) ⇒ Object


22
23
24
25
26
27
28
29
30
# File 'lib/brakeman/processors/lib/render_path.rb', line 22

def add_template_render template_name, line, file
  @path << { :type => :template,
             :name => template_name.to_sym,
             :line => line,
             :file => file
           }

  self
end

#each(&block) ⇒ Object


73
74
75
# File 'lib/brakeman/processors/lib/render_path.rb', line 73

def each &block
  @path.each(&block)
end

#include_any_method?(method_names) ⇒ Boolean

Returns:

  • (Boolean)

59
60
61
62
63
64
65
# File 'lib/brakeman/processors/lib/render_path.rb', line 59

def include_any_method? method_names
  names = method_names.map(&:to_sym)

  @path.any? do |loc|
    loc[:type] == :controller and names.include? loc[:method]
  end
end

#include_controller?(klass) ⇒ Boolean

Returns:

  • (Boolean)

51
52
53
54
55
56
57
# File 'lib/brakeman/processors/lib/render_path.rb', line 51

def include_controller? klass
  klass = klass.to_sym

  @path.any? do |loc|
    loc[:type] == :controller and loc[:class] == klass
  end
end

#include_template?(name) ⇒ Boolean

Returns:

  • (Boolean)

43
44
45
46
47
48
49
# File 'lib/brakeman/processors/lib/render_path.rb', line 43

def include_template? name
  name = name.to_sym

  @path.any? do |loc|
    loc[:type] == :template and loc[:name] == name
  end
end

#initialize_copy(original) ⇒ Object


134
135
136
137
# File 'lib/brakeman/processors/lib/render_path.rb', line 134

def initialize_copy original
  @path = original.path.dup
  self
end

#join(*args) ⇒ Object


77
78
79
# File 'lib/brakeman/processors/lib/render_path.rb', line 77

def join *args
  self.to_a.join(*args)
end

#lastObject


100
101
102
# File 'lib/brakeman/processors/lib/render_path.rb', line 100

def last
  self.to_a.last
end

#last_template=(template) ⇒ Object


32
33
34
35
36
37
38
39
40
41
# File 'lib/brakeman/processors/lib/render_path.rb', line 32

def last_template= template
  if @path.last
    @path.last[:rendered] = {
      name: template.name,
      file: template.file,
    }
  else
    Brakeman.debug "[Notice] No render path to add template information"
  end
end

#lengthObject


81
82
83
# File 'lib/brakeman/processors/lib/render_path.rb', line 81

def length
  @path.length
end

#map(&block) ⇒ Object


85
86
87
# File 'lib/brakeman/processors/lib/render_path.rb', line 85

def map &block
  @path.map(&block)
end

#rendered_from_controller?Boolean

Returns:

  • (Boolean)

67
68
69
70
71
# File 'lib/brakeman/processors/lib/render_path.rb', line 67

def rendered_from_controller?
  @path.any? do |loc|
    loc[:type] == :controller
  end
end

#to_aObject


89
90
91
92
93
94
95
96
97
98
# File 'lib/brakeman/processors/lib/render_path.rb', line 89

def to_a
  @path.map do |loc|
    case loc[:type]
    when :template
      "Template:#{loc[:name]}"
    when :controller
      "#{loc[:class]}##{loc[:method]}"
    end
  end
end

#to_json(*args) ⇒ Object


112
113
114
115
# File 'lib/brakeman/processors/lib/render_path.rb', line 112

def to_json *args
  require 'json'
  JSON.generate(@path)
end

#to_sObject


104
105
106
# File 'lib/brakeman/processors/lib/render_path.rb', line 104

def to_s
  self.to_a.to_s
end

#to_symObject


108
109
110
# File 'lib/brakeman/processors/lib/render_path.rb', line 108

def to_sym
  self.to_s.to_sym
end

#with_relative_pathsObject


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/brakeman/processors/lib/render_path.rb', line 117

def with_relative_paths
  @path.map do |loc|
    r = loc.dup

    if r[:file]
      r[:file] = r[:file].relative
    end

    if r[:rendered] and r[:rendered][:file]
      r[:rendered] = r[:rendered].dup
      r[:rendered][:file] = r[:rendered][:file].relative
    end

    r
  end
end