Sha256: 320434ce56ac294a9f095f8b807bcdcc983f7b5678a775de7dd72d5f0078b816

Contents?: true

Size: 1.31 KB

Versions: 28

Compression:

Stored size: 1.31 KB

Contents

# for read Fluent::TextParser::TEMPLATE_REGISTRY
require "fluent/registry"
require "fluent/configurable"
require "fluent/parser"

class RegexpPreview
  attr_reader :file, :format, :time_format, :regexp

  def initialize(file, format, options = {})
    @file = file
    @format = format
    case format
    when "regexp"
      @regexp = Regexp.new(options[:regexp])
      @time_format = options[:time_format]
    when "ltsv", "json", "csv", "tsv"
    else
      definition = Fluent::TextParser::TEMPLATE_REGISTRY.lookup(format).call
      raise "Unknown format '#{format}'" unless definition
      definition.configure({}) # NOTE: SyslogParser define @regexp in configure method so call it to grab Regexp object
      @regexp = definition.patterns["format"]
      @time_format = definition.patterns["time_format"]
    end
  end

  def matches
    return [] unless @regexp # such as ltsv, json, etc
    reader = FileReverseReader.new(File.open(file))
    matches = reader.tail.map do |line|
      result = {
        :whole => line,
        :matches => [],
      }
      m = line.match(regexp)
      next result unless m

      m.names.each_with_index do |name, index|
        result[:matches] << {
          key: name,
          matched: m[name],
          pos: m.offset(index + 1),
        }
      end
      result
    end
    matches
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
fluentd-ui-0.4.0 lib/regexp_preview.rb
fluentd-ui-0.3.21 lib/regexp_preview.rb
fluentd-ui-0.3.20 lib/regexp_preview.rb
fluentd-ui-0.3.19 lib/regexp_preview.rb
fluentd-ui-0.3.18 lib/regexp_preview.rb
fluentd-ui-0.3.17 lib/regexp_preview.rb
fluentd-ui-0.3.16 lib/regexp_preview.rb
fluentd-ui-0.3.15 lib/regexp_preview.rb
fluentd-ui-0.3.14 lib/regexp_preview.rb
fluentd-ui-0.3.13 lib/regexp_preview.rb
fluentd-ui-0.3.12 lib/regexp_preview.rb
fluentd-ui-0.3.11 lib/regexp_preview.rb
fluentd-ui-0.3.10 lib/regexp_preview.rb
fluentd-ui-0.3.9 lib/regexp_preview.rb
fluentd-ui-0.3.8 lib/regexp_preview.rb
fluentd-ui-0.3.7 lib/regexp_preview.rb
fluentd-ui-0.3.6 lib/regexp_preview.rb
fluentd-ui-0.3.5 lib/regexp_preview.rb
fluentd-ui-0.3.3 lib/regexp_preview.rb
fluentd-ui-0.3.2 lib/regexp_preview.rb