fluent-plugin-filter_empty_keys 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d0399e8d3016a5935a1a367c460cfb93955239e
4
- data.tar.gz: 7e5da4cc2d21f1266718ae1254f21870b15f1811
3
+ metadata.gz: 8f90d886f79fd03b913bba8151528489e376380c
4
+ data.tar.gz: b9e146a6345f7d985ef0003edf71a758cf396d05
5
5
  SHA512:
6
- metadata.gz: d4ab6e7b4c9da64befecb73f00d23316dbe6cdc649504fd8a859d4278847727f7c59dfb7ab23cca8bd5083d803ab11621fddc62fd0eb360ab05700d6ba50d113
7
- data.tar.gz: defd246fb276b6853046dbfa7afbbf976fd93d57fbc15c0e2de888492dc21e94268433785e2b1b92b6458932cf3ecfa61d1b0a232fb6c271fd7874086053020d
6
+ metadata.gz: d1979232f4de1292104871165ca37889d5b3f6778c2a16da501da6615c5f1015f3fe614414be61aff48045ed2993acaa61bef5b889166700a5c901c1e4468f5e
7
+ data.tar.gz: f693eb2bba9f3faa8d6418dd6470ff8a749eb83f4f7cd809c752ee82bf615893ec4819ca543c2367c5b372271b51d808741df0ece6d10d42d1aad1d31f116072
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 0.0.3
2
+ Enhancements:
3
+
4
+ * Support custome keys empty values.
5
+
1
6
  # 0.0.1
2
7
 
3
8
  Enhancements:
data/README.md CHANGED
@@ -14,6 +14,50 @@ Use RubyGems:
14
14
  gem install fluent-plugin-filter_empty_keys
15
15
  ```
16
16
 
17
+ ## Configuration Examples
18
+
19
+ ```
20
+ <source>
21
+ type dummy
22
+ tag dummy
23
+ dummy {"field1":"","field2":"2","field3":"2013-02-12 22:04:14 UTC","field4":"","field5":"a,b,c"}
24
+ </source>
25
+
26
+ <filter **>
27
+ type empty_keys
28
+ </filter>
29
+
30
+ <match **>
31
+ type stdout
32
+ </match>
33
+ ```
34
+
35
+ You should see casted records:
36
+ ```
37
+ dummy {"field2":"2","field3":"2013-02-12 22:04:14 UTC","field5":"a,b,c"}
38
+ ```
39
+
40
+ ```
41
+ <source>
42
+ type dummy
43
+ tag dummy
44
+ dummy {"field0":0,"field1":"","field2":"Undefined","field3":"2013-02-12 22:04:14 UTC","field4":"","field5":"a,b,c"}
45
+ </source>
46
+
47
+ <filter **>
48
+ type empty_keys
49
+ empty_keys field0:0,field2:Undefined
50
+ </filter>
51
+
52
+ <match **>
53
+ type stdout
54
+ </match>
55
+ ```
56
+
57
+ You should see casted records:
58
+ ```
59
+ dummy {"field3":"2013-02-12 22:04:14 UTC","field5":"a,b,c"}
60
+ ```
17
61
 
18
62
  ## ChangeLog
19
63
 
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "fluent-plugin-filter_empty_keys"
6
- s.version = "0.0.2"
6
+ s.version = "0.0.3"
7
7
  s.authors = ["Al-waleed Shihadeh"]
8
8
  s.email = ["wshihadh@gmail.com"]
9
9
  s.homepage = "https://github.com/wshihadeh/fluent-plugin-filter_empty_keys.git"
@@ -5,8 +5,33 @@ module Fluent
5
5
  class EmptyKeysFilter < Filter
6
6
  Fluent::Plugin.register_filter('empty_keys', self)
7
7
 
8
+ config_param :empty_keys, :string, default: nil
9
+ config_param :keys_delimiter, :string, default: ','
10
+ config_param :values_delimiter, :string, default: ':'
11
+
12
+ def configure(conf)
13
+ super
14
+
15
+ @keys_empty_values = nil
16
+ @keys_empty_values = parse_empty_values_parameter unless @empty_keys.nil?
17
+ end
18
+
8
19
  def filter(tag, time, record)
9
- record.reject{ |k,v| (v.nil? || v.to_s.empty?) }
20
+ record.reject{ |k,v| (v.nil? || v.to_s.empty? || (!@keys_empty_values.nil? && v.to_s.eql?(@keys_empty_values[k]))) }
21
+ end
22
+
23
+ private
24
+
25
+ def parse_empty_values_parameter
26
+ keys_empty_values = {}
27
+
28
+ @empty_keys.split(@keys_delimiter).each do |pattern_name|
29
+ key, empty_value, format = pattern_name.split(@values_delimiter, 3)
30
+ raise ConfigError, "EmptyValue is needed" if empty_value.nil?
31
+ keys_empty_values[key] = empty_value
32
+ end
33
+
34
+ keys_empty_values
10
35
  end
11
36
  end
12
37
  end
@@ -23,14 +23,18 @@ class TypecastFilterTest < Test::Unit::TestCase
23
23
  end
24
24
 
25
25
  test 'test_empty_keys' do
26
- d = create_driver
26
+ d = create_driver(%[
27
+ empty_keys Undefined:Undefined,Remove:1
28
+ ])
27
29
  msg = {
28
- 'integer' => 1,
29
- 'nil' => nil,
30
- 'time' => '2013-02-12 22:01:15 UTC',
31
- 'bool' => 'true',
32
- 'array' => 'a,b,c',
33
- 'empty' => '',
30
+ 'integer' => 1,
31
+ 'nil' => nil,
32
+ 'time' => '2013-02-12 22:01:15 UTC',
33
+ 'bool' => 'true',
34
+ 'array' => 'a,b,c',
35
+ 'empty' => '',
36
+ 'Undefined' => 'Undefined',
37
+ 'Remove' => 1,
34
38
  }
35
39
  filtered = filter(d, [msg]).first[2]
36
40
  assert_equal 4, filtered.count
@@ -40,6 +44,7 @@ class TypecastFilterTest < Test::Unit::TestCase
40
44
  assert_equal true, filtered.key?("bool")
41
45
  assert_equal true, filtered.key?("array")
42
46
  assert_equal false, filtered.key?("empty")
43
-
47
+ assert_equal false, filtered.key?("Undefined")
48
+ assert_equal false, filtered.key?("Remove")
44
49
  end
45
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-filter_empty_keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Al-waleed Shihadeh