logfmt 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2327cc4b6b81e1f8697b774dd0100e94465d9f13
4
- data.tar.gz: 81758010bbe3acd78c67f01aa5947a27b165c70e
3
+ metadata.gz: 0d84880517339f8a0d4e92bec5c50a60e1565616
4
+ data.tar.gz: f49a8ab504c1c50312d585e3b4f2ed01d70bcf9c
5
5
  SHA512:
6
- metadata.gz: 726f73839a6139edf96a8632cd5c8bb978eb884ccb4c1ddad021ba9dc5e623b6275182340ffe6a6546321e19c082fb79e1e6346878fe3f972214c32a0f833694
7
- data.tar.gz: bf601bd78782b3fa6d52421b7a101a1c17f399c113ba033da34a535daaed62797e80e46668be3513d7483dc09115662fd900b665cdcc18a7125d4ed79e836f37
6
+ metadata.gz: c7880b117caee1ef7e794c04e59362db10076c58d58a28bbf360d9a71a56cc40cc089e7298f9a7f528a2bf3f304f1a45de68c9a24f2b419ff7afd3c8a4d3130d
7
+ data.tar.gz: d4f7b9e924dbeed9ef56c8be8e1e3d3109ea6c8e96d52da77ad06b34c5098639c4e00a8c45a463f442fbc6b56fa4cea9fb8f9d7cc1e2be82a693c9f6ba4a7eee
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  .ruby-version
19
+ .tags
data/README.md CHANGED
@@ -4,4 +4,4 @@ Parse log lines on the logfmt style:
4
4
 
5
5
  >> require "logfmt"
6
6
  >> Logfmt.parse('foo=bar a=14 baz="hello kitty" cool%story=bro f %^asdf')
7
- => {"foo"=>"bar", "a"=>"14", "baz"=>"hello kitty", "cool%story"=>"bro", "f"=>true, "%^asdf"=>true}
7
+ => {"foo"=>"bar", "a"=>14, "baz"=>"hello kitty", "cool%story"=>"bro", "f"=>true, "%^asdf"=>true}
@@ -6,11 +6,11 @@ module Logfmt
6
6
  QVALUE = 4
7
7
 
8
8
  def self.numeric?(s)
9
- s.match(/\A[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\Z/)
9
+ s.is_a?(Numeric) || s.to_s.match(/\A[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\Z/)
10
10
  end
11
11
 
12
12
  def self.integer?(s)
13
- s.match(/\A[-+]?[0-9]+\Z/)
13
+ s.is_a?(Integer) || s.to_s.match(/\A[-+]?[0-9]+\Z/)
14
14
  end
15
15
 
16
16
  def self.parse(line)
@@ -55,20 +55,20 @@ module Logfmt
55
55
  end
56
56
  if i >= line.length
57
57
  if integer?(value)
58
- value = Integer(value)
58
+ value = value.to_i
59
59
  elsif numeric?(value)
60
- value = Float(value)
60
+ value = value.to_f
61
61
  end
62
62
  output[key.strip] = value || true
63
63
  end
64
64
  next
65
65
  end
66
66
  if state == IVALUE
67
- if !(c > ' ' && c != '"' && c != '=')
67
+ if !(c > ' ' && c != '"')
68
68
  if integer?(value)
69
- value = Integer(value)
69
+ value = value.to_i
70
70
  elsif numeric?(value)
71
- value = Float(value)
71
+ value = value.to_f
72
72
  end
73
73
  output[key.strip] = value
74
74
  state = GARBAGE
@@ -77,9 +77,9 @@ module Logfmt
77
77
  end
78
78
  if i >= line.length
79
79
  if integer?(value)
80
- value = Integer(value)
80
+ value = value.to_i
81
81
  elsif numeric?(value)
82
- value = Float(value)
82
+ value = value.to_f
83
83
  end
84
84
  output[key.strip] = value
85
85
  end
@@ -92,7 +92,7 @@ module Logfmt
92
92
  elsif c == '"'
93
93
  if escaped
94
94
  escaped = false
95
- value << c
95
+ value.chop! << c
96
96
  next
97
97
  end
98
98
  output[key.strip] = value
@@ -1,3 +1,3 @@
1
1
  module Logfmt
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -55,12 +55,12 @@ describe Logfmt do
55
55
 
56
56
  it 'parse escaped quote value ' do
57
57
  data = Logfmt.parse('key="quoted \" value" r="esc\t"')
58
- expect(data).to eq('key' => 'quoted \" value', 'r' => 'esc\\t')
58
+ expect(data).to eq('key' => 'quoted " value', 'r' => 'esc\t')
59
59
  end
60
60
 
61
61
  it 'parse mixed pairs' do
62
62
  data = Logfmt.parse('key1="quoted \" value" key2 key3=value3')
63
- expect(data).to eq('key1' => 'quoted \" value', 'key2' => true, 'key3' => 'value3')
63
+ expect(data).to eq('key1' => 'quoted " value', 'key2' => true, 'key3' => 'value3')
64
64
  end
65
65
 
66
66
  it 'parse mixed characters pairs' do
@@ -131,4 +131,24 @@ describe Logfmt do
131
131
  expect(data['key1']).to eq(4)
132
132
  expect(data['key2']).to eq(9)
133
133
  end
134
+
135
+ it 'parse string containing quotes' do
136
+ data = Logfmt.parse('key1="{\"msg\": \"hello\tworld\"}"')
137
+ expect(data['key1']).to eq('{"msg": "hello\tworld"}')
138
+ end
139
+
140
+ it 'parse value containing equal sign' do
141
+ query = 'position=44.80450799126121%2C33.58320759981871&uid=1'
142
+ data = Logfmt.parse("method=GET query=#{query} status=200")
143
+ expect(data).to eq(
144
+ 'method' => 'GET',
145
+ 'query' => query,
146
+ 'status' => 200
147
+ )
148
+ end
149
+
150
+ it 'parses integers correctly' do
151
+ data = Logfmt.parse('key=111 ')
152
+ expect(data['key']).to eq(111)
153
+ end
134
154
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logfmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timothée Peignier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-28 00:00:00.000000000 Z
11
+ date: 2016-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -78,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  version: '0'
79
79
  requirements: []
80
80
  rubyforge_project:
81
- rubygems_version: 2.2.2
81
+ rubygems_version: 2.6.8
82
82
  signing_key:
83
83
  specification_version: 4
84
84
  summary: Parse logfmt messages.