Class: GrokConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/grok_converter.rb

Instance Method Summary collapse

Instance Method Details

#convert_to_regexp(pattern) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/grok_converter.rb', line 17

def convert_to_regexp(pattern)
  limit = 100
  expanded = pattern.dup
  while m = expanded.match(/%{(.*?)(?::(.*?))?}/) # %{key:name} or #{key}
    all, key, name = *m
    if name
      expanded = expanded.gsub(all, "(?<#{name}>#{@patterns[key]})")
    else
      expanded = expanded.gsub(all, @patterns[key])
    end
    limit -= 1
    break if limit == 0
  end
  Regexp.new expanded
end

#load_patterns(dir = nil) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/grok_converter.rb', line 2

def load_patterns(dir = nil)
  @patterns = {}
  dir ||= Rails.root.join("vendor/patterns")
  Dir.glob("#{dir}/*").each do |file|
    File.read(file).split("\n").each do |line|
      line.strip!
      next if line == ""
      next if line.start_with?("#")
      name, pattern = line.split(/\s+/, 2)
      next unless pattern
      @patterns[name] = pattern
    end
  end
end