Sha256: 58e56b664b547b030234115288319027c18a1722b55d294d2bdb1025ec8e2f30

Contents?: true

Size: 1.92 KB

Versions: 8

Compression:

Stored size: 1.92 KB

Contents

module Brakeman
  class RenderPath
    attr_reader :path

    def initialize
      @path = []
    end

    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

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

      self
    end

    def include_template? name
      name = name.to_sym

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

    def include_controller? klass
      klass = klass.to_sym

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

    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

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

    def each &block
      @path.each &block
    end

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

    def length
      @path.length
    end

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

    def last
      self.to_a.last
    end

    def to_s
      self.to_a.to_s
    end

    def to_sym
      self.to_s.to_sym
    end

    def to_json *args
      MultiJson.dump(@path)
    end

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

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
brakeman-3.1.3 lib/brakeman/processors/lib/render_path.rb
brakeman-min-3.1.3 lib/brakeman/processors/lib/render_path.rb
brakeman-3.1.2 lib/brakeman/processors/lib/render_path.rb
brakeman-min-3.1.2 lib/brakeman/processors/lib/render_path.rb
brakeman-3.1.1 lib/brakeman/processors/lib/render_path.rb
brakeman-min-3.1.1 lib/brakeman/processors/lib/render_path.rb
brakeman-3.1.0 lib/brakeman/processors/lib/render_path.rb
brakeman-min-3.1.0 lib/brakeman/processors/lib/render_path.rb