Sha256: 6be795465625aaffca54481b429958f42eec9861db4bffe05e1ade95e1d8667a

Contents?: true

Size: 1.65 KB

Versions: 13

Compression:

Stored size: 1.65 KB

Contents

require 'logstash/util/loggable'
require 'logstash/compiler/lscl/lscl_grammar'

java_import org.logstash.config.ir.PipelineIR
java_import org.logstash.config.ir.graph.Graph

module LogStash; class Compiler
  include ::LogStash::Util::Loggable

  def self.compile_sources(sources_with_metadata, support_escapes)
    graph_sections = sources_with_metadata.map do |swm|
      self.compile_graph(swm, support_escapes)
    end

    input_graph = Graph.combine(*graph_sections.map {|s| s[:input] }).graph
    output_graph = Graph.combine(*graph_sections.map {|s| s[:output] }).graph

    filter_graph = graph_sections.reduce(nil) do |acc, s| 
      filter_section = s[:filter]

      if acc.nil? 
        filter_section
      else
        acc.chain(filter_section)
      end
    end

    original_source = sources_with_metadata.map(&:text).join("\n")

    PipelineIR.new(input_graph, filter_graph, output_graph, original_source)
  end

  def self.compile_imperative(source_with_metadata, support_escapes)
    if !source_with_metadata.is_a?(org.logstash.common.SourceWithMetadata)
      raise ArgumentError, "Expected 'org.logstash.common.SourceWithMetadata', got #{source_with_metadata.class}"
    end

    grammar = LogStashCompilerLSCLGrammarParser.new
    config = grammar.parse(source_with_metadata.text)

    if config.nil?
      raise ConfigurationError, grammar.failure_reason
    end

    config.process_escape_sequences = support_escapes
    config.compile(source_with_metadata)
  end

  def self.compile_graph(source_with_metadata, support_escapes)
    Hash[compile_imperative(source_with_metadata, support_escapes).map {|section,icompiled| [section, icompiled.toGraph]}]
  end
end; end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
logstash-core-6.3.2-java lib/logstash/compiler.rb
logstash-core-6.3.1-java lib/logstash/compiler.rb
logstash-core-6.3.0-java lib/logstash/compiler.rb
logstash-core-6.2.4-java lib/logstash/compiler.rb
logstash-core-6.2.3-java lib/logstash/compiler.rb
logstash-core-6.1.4-java lib/logstash/compiler.rb
logstash-core-6.2.2-java lib/logstash/compiler.rb
logstash-core-6.2.1-java lib/logstash/compiler.rb
logstash-core-6.2.0-java lib/logstash/compiler.rb
logstash-core-6.1.3-java lib/logstash/compiler.rb
logstash-core-6.1.2-java lib/logstash/compiler.rb
logstash-core-6.1.1-java lib/logstash/compiler.rb
logstash-core-6.1.0-java lib/logstash/compiler.rb