jls-grok 0.9.2 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/grok-pure.rb +27 -7
  2. metadata +6 -6
@@ -48,15 +48,19 @@ class Grok
48
48
  @logger.info("Adding pattern", name => pattern)
49
49
  @patterns[name] = pattern
50
50
  return nil
51
- end
51
+ end # def add_pattern
52
52
 
53
53
  public
54
54
  def add_patterns_from_file(path)
55
55
  file = File.new(path, "r")
56
56
  file.each do |line|
57
- next if line =~ /^\s*#/
57
+ # Skip comments
58
+ next if line =~ /^\s*#/
59
+ # File format is: NAME ' '+ PATTERN '\n'
58
60
  name, pattern = line.gsub(/^\s*/, "").split(/\s+/, 2)
61
+ # If the line is malformed, skip it.
59
62
  next if pattern.nil?
63
+ # Trim newline and add the pattern.
60
64
  add_pattern(name, pattern.chomp)
61
65
  end
62
66
  return nil
@@ -66,7 +70,7 @@ class Grok
66
70
  def compile(pattern)
67
71
  @capture_map = {}
68
72
 
69
- iterations_left = 100
73
+ iterations_left = 1000
70
74
  @pattern = pattern
71
75
  @expanded_pattern = pattern
72
76
  index = 0
@@ -88,18 +92,34 @@ class Grok
88
92
  # create a named capture index that we can push later as the named
89
93
  # pattern. We do this because ruby regexp can't capture something
90
94
  # by the same name twice.
91
- p = @patterns[m["pattern"]]
95
+ regex = @patterns[m["pattern"]]
96
+ #puts "patterns[#{m["pattern"]}] => #{regex}"
92
97
 
93
98
  capture = "a#{index}" # named captures have to start with letters?
94
99
  #capture = "%04d" % "#{index}" # named captures have to start with letters?
95
- replacement_pattern = "(?<#{capture}>#{p})"
96
- #p(:input => m[0], :pattern => replacement_pattern)
100
+ replacement_pattern = "(?<#{capture}>#{regex})"
97
101
  @capture_map[capture] = m["name"]
98
- @expanded_pattern.sub!(m[0], replacement_pattern)
102
+
103
+ #puts "Before: #{@expanded_pattern}"
104
+ #puts "m[0]: #{m[0]}"
105
+ #puts "replacement_pattern => #{replacement_pattern}"
106
+ #puts "Proposed: #{@expanded_pattern.sub(m[0], replacement_pattern)}"
107
+
108
+ # Ruby's String#sub() has a bug (or misfeature) that causes it to do bad
109
+ # things to backslashes in string replacements, so let's work around it
110
+ # See this gist for more details: https://gist.github.com/1491437
111
+ # This hack should resolve LOGSTASH-226.
112
+ @expanded_pattern.sub!(m[0]) { |s| replacement_pattern }
113
+
114
+ #puts "After: #{@expanded_pattern}"
115
+ #puts "m[0]: #{m[0]}"
116
+ #puts "replacement_pattern => #{replacement_pattern}"
99
117
  index += 1
100
118
  end
101
119
  end
102
120
 
121
+ #@logger.debug("Finished expanding", :string => @expanded_pattern)
122
+ #puts "Expanded: #{@expanded_pattern}"
103
123
  @regexp = Regexp.new(@expanded_pattern)
104
124
  @logger.debug("Grok compiled OK", :pattern => pattern,
105
125
  :expanded_pattern => @expanded_pattern)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jls-grok
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,19 +10,19 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-28 00:00:00.000000000Z
13
+ date: 2011-12-17 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: cabin
17
- requirement: &22131940 !ruby/object:Gem::Requirement
17
+ requirement: &7424980 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ! '>='
20
+ - - =
21
21
  - !ruby/object:Gem::Version
22
- version: '0'
22
+ version: 0.1.7
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *22131940
25
+ version_requirements: *7424980
26
26
  description: Grok ruby bindings - pattern match/extraction tool
27
27
  email:
28
28
  - jls@semicomplete.com