class FilterTable::Trace
def self.to_ruby(trace)
def self.to_ruby(trace) chain = trace.instance_variable_get(:@chain) return '' if chain.empty? ' ' + chain.map do |el| m = el[0][0] args = el[0].drop(1) nxt = to_ruby(el[1]) next m.to_s + nxt if args.empty? next m.to_s + ' ' + args[0].inspect + nxt if args.length == 1 m.to_s + '(' + args.map(&:inspect).join(', ') + ')' + nxt end.join(' ') end
def initialize
def initialize @chain = [] end
def method_missing(*args)
def method_missing(*args) res = Trace.new @chain.push([args, res]) res end