class LogStash::Config::AST::Config
Public Instance Methods
compile()
click to toggle source
# File lib/logstash/config/config_ast.rb, line 45 def compile # TODO(sissel): Move this into config/config_ast.rb code = [] code << "@inputs = []" code << "@filters = []" code << "@outputs = []" sections = recursive_select(LogStash::Config::AST::PluginSection) sections.each do |s| code << s.compile_initializer end # start inputs #code << "class << self" definitions = [] ["filter", "output"].each do |type| #definitions << "def #{type}(event)" definitions << "@#{type}_func = lambda do |event, &block|" if type == "filter" definitions << " extra_events = []" end definitions << " @logger.info? && @logger.info(\"#{type} received\", :event => event)" sections.select { |s| s.plugin_type.text_value == type }.each do |s| definitions << s.compile.split("\n", -1).map { |e| " #{e}" } end if type == "filter" definitions << " extra_events.each(&block)" end definitions << "end" end code += definitions.join("\n").split("\n", -1).collect { |l| " #{l}" } #code << "end" return code.join("\n") end