Parent

Included Modules

Class/Module Index [+]

Quicksearch

Brakeman::OutputProcessor

Produces formatted output strings from Sexps. Recommended usage is

OutputProcessor.new.format(Sexp.new(:str, "hello"))

Public Instance Methods

format(exp) click to toggle source

Copies exp and then formats it.

# File lib/brakeman/processors/output_processor.rb, line 12
def format exp
  process(exp.deep_clone) || "[Format Error]"
end
Also aliased as: process_safely
process(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 19
def process exp
  begin
    super exp if sexp? exp and not exp.empty?
  rescue Exception => e
    Brakeman.debug "While formatting #{exp}: #{e}\n#{e.backtrace.join("\n")}"
  end
end
process_call_with_block(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 102
def process_call_with_block exp
  call = process exp[0]
  block = process_rlist exp[2..-1]
  out = "#{call} do\n #{block}\n end"
  exp.clear
  out
end
process_const(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 175
def process_const exp
  if exp[0] == Brakeman::Tracker::UNKNOWN_MODEL
    exp.clear
    "(Unresolved Model)"
  else
    out = exp[0].to_s
    exp.clear
    out
  end
end
process_cookies(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 48
def process_cookies exp
  exp.clear
  "cookies"
end
process_dxstr(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 74
def process_dxstr exp
  out = "`"
  out << exp.map! do |e|
    if e.is_a? String
      e
    elsif string? e
      e[1]
    else
      process e
    end
  end.join
  exp.clear
  out << "`"
end
process_escaped_output(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 126
def process_escaped_output exp
  out = if exp[0].node_type == :str
          ""
        else
          res = process exp[0]

          if res == ""
            ""
          else
            "[Escaped Output] #{res}"
          end
        end
  exp.clear
  out
end
process_format(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 143
def process_format exp
  out = if exp[0].node_type == :str or exp[0].node_type == :ignore
          ""
        else
          res = process exp[0]

          if res == ""
            ""
          else
            "[Format] #{res}"
          end
        end
  exp.clear
  out
end
process_format_escaped(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 159
def process_format_escaped exp
  out = if exp[0].node_type == :str or exp[0].node_type == :ignore
          ""
        else
          res = process exp[0]

          if res == ""
            ""
          else
            "[Escaped] #{res}"
          end
        end
  exp.clear
  out
end
process_ignore(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 33
def process_ignore exp
  exp.clear
  "[ignored]"
end
process_lvar(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 27
def process_lvar exp
  out = "(local #{exp[0]})"
  exp.clear
  out
end
process_output(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 110
def process_output exp
  out = if exp[0].node_type == :str
          ""
        else
          res = process exp[0]

          if res == ""
            ""
          else
            "[Output] #{res}"
          end
        end
  exp.clear
  out
end
process_params(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 38
def process_params exp
  exp.clear
  "params"
end
process_render(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 186
def process_render exp
  exp[1] = process exp[1] if sexp? exp[1]
  exp[2] = process exp[2] if sexp? exp[2]
  out = "render(#{exp[0]} => #{exp[1]}, #{exp[2]})"
  exp.clear
  out
end
process_rlist(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 89
def process_rlist exp
  out = exp.map do |e|
    res = process e
    if res == ""
      nil
    else
      res
    end
  end.compact.join("\n")
  exp.clear
  out
end
process_safely(exp) click to toggle source
Alias for: format
process_session(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 43
def process_session exp
  exp.clear
  "session"
end
process_string_eval(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 68
def process_string_eval exp
  out = "\#{#{process(exp[0])}}"
  exp.clear
  out
end
process_string_interp(exp) click to toggle source
# File lib/brakeman/processors/output_processor.rb, line 53
def process_string_interp exp
  out = '"'
  exp.each do |e|
    if e.is_a? String
      out << e
    else
      res = process e
      out << res unless res == "" 
    end
  end
  out << '"'
  exp.clear
  out
end
util_dthing(type, exp) click to toggle source

This is copied from Ruby2Ruby, except the :string_eval type has been added

# File lib/brakeman/processors/output_processor.rb, line 195
def util_dthing(type, exp)
  s = []

  # first item in sexp is a string literal
  s << dthing_escape(type, exp.shift)

  until exp.empty?
    pt = exp.shift
    case pt
    when Sexp then
      case pt.first
      when :str then
        s << dthing_escape(type, pt.last)
      when :evstr, :string_eval then
        s << '#{' << process(pt) << '}' # do not use interpolation here
      else
        raise "unknown type: #{pt.inspect}"
      end
    else
      # HACK: raise "huh?: #{pt.inspect}" -- hitting # constants in regexps
      # do nothing for now
    end
  end

  s.join
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.