def configure(conf) super @formatter = create_formatter(JSON.parse(@format)) end
def create_formatter(formatter) case formatter when Array formatter.map{|e| create_formatter(e)} when Hash formatter.inject({}) do |hash, (k, v)| hash[k] = create_formatter(v) hash end when String if formatter.start_with?("$") JsonPath.new(formatter) else formatter end else formatter end end
def emit(tag, es, chain) es.each do |time, record| converted = convert_record(@formatter, record) Engine.emit(@tag, time, converted) end chain.next end
def convert_record(formatter, record) case formatter when Array formatter.map{|e| convert_record(e, record)} when Hash formatter.inject({}) do |hash, (k, v)| hash[k] = convert_record(v, record) hash end when JsonPath formatter.first(record) else formatter end end