class Railroader::OutputProcessor
Produces formatted output strings from Sexps. Recommended usage is
OutputProcessor.new.format(Sexp.new(:str, "hello"))
Public Instance Methods
format(exp, user_input = nil, &block)
click to toggle source
Copies exp
and then formats it.
# File lib/railroader/processors/output_processor.rb, line 12 def format exp, user_input = nil, &block @user_input = user_input @user_input_block = block process(exp.deep_clone) || "[Format Error]" end
Also aliased as: process_safely
output_format(exp, tag)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 109 def output_format exp, tag out = if exp[1].node_type == :str or exp[1].node_type == :ignore "" else res = process exp[1] if res == "" "" else "[#{tag}] #{res}" end end out end
process(exp)
click to toggle source
Calls superclass method
# File lib/railroader/processors/output_processor.rb, line 20 def process exp begin if @user_input and @user_input == exp @user_input_block.call(exp, super(exp)) else super exp if sexp? exp and not exp.empty? end rescue => e Railroader.debug "While formatting #{exp}: #{e}\n#{e.backtrace.join("\n")}" end end
process_const(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 125 def process_const exp if exp[1] == Railroader::Tracker::UNKNOWN_MODEL "(Unresolved Model)" else out = exp[1].to_s out end end
process_defn(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 61 def process_defn exp # Copied from Ruby2Ruby except without the whole # "convert methods to attr_*" stuff exp = exp.deep_clone exp.shift name = exp.shift args = process exp.shift args = "" if args == "()" exp.shift if exp == s(s(:nil)) # empty it out of a default nil expression body = [] until exp.empty? do body << indent(process(exp.shift)) end body << indent("# do nothing") if body.empty? body = body.join("\n") return "def #{name}#{args}\n#{body}\nend".gsub(/\n\s*\n+/, "\n") end
process_escaped_output(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 96 def process_escaped_output exp output_format exp, "Escaped Output" end
process_format(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 101 def process_format exp output_format exp, "Format" end
process_format_escaped(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 105 def process_format_escaped exp output_format exp, "Escaped" end
process_ignore(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 32 def process_ignore exp "[ignored]" end
process_iter(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 84 def process_iter exp call = process exp[1] block = process_rlist exp[3..-1] out = "#{call} do\n #{block}\n end" out end
process_output(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 92 def process_output exp output_format exp, "Output" end
process_params(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 36 def process_params exp "params" end
process_render(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 134 def process_render exp exp = exp.deep_clone exp.shift 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]})" out end
process_rlist(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 48 def process_rlist exp out = exp.map do |e| res = process e if res == "" nil else res end end.compact.join("\n") out end
process_session(exp)
click to toggle source
# File lib/railroader/processors/output_processor.rb, line 40 def process_session exp "session" end