fluent-plugin-nested-hash-filter 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 64f83a066f2e3c8d2a3453f62615abc36a1d664a
4
+ data.tar.gz: 5da7b8ef0de45bf917245a3eb5fac1867b33d659
5
+ SHA512:
6
+ metadata.gz: 2f009f27550f02a2f6333ef8ffca7d8925ccc6b45e3763abc2827af2fa4cd440cd87b273cf6359739d87f11a097d29c61b02e452313d74cb880231d6fcdda651
7
+ data.tar.gz: 0dde134af29ad68a084ea62431b12ac2bef0c2c972a228cbd5053ace7bb549e72888a3d232f83cdebb3dec337880e0c57ccba2c44b892e7c8d95e3fc7b6ef08d
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /vendor/
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
4
+ - 2.1
5
+ - 2.0.0
6
+ - 1.9.3
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fluent-plugin-nested-hash-filter.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,5 @@
1
+ guard :test do
2
+ watch(%r{^test/.+_test\.rb$})
3
+ watch('test/test_helper.rb') { 'test' }
4
+ watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
5
+ end
data/README.md ADDED
@@ -0,0 +1,42 @@
1
+ # fluent-plugin-nested-hash-filter
2
+
3
+ [![Build Status](https://travis-ci.org/sugilog/fluent-plugin-nested-hash-filter.png?branch=master)](https://travis-ci.org/sugilog/fluent-plugin-nested-hash-filter.svg)
4
+
5
+
6
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/fluent/plugin/filter_nested_hash`.
7
+
8
+ TODO: Delete this and the text above, and describe your gem
9
+
10
+ ## Installation
11
+
12
+ Add this line to your application's Gemfile:
13
+
14
+ ```ruby
15
+ gem 'fluent-plugin-nested-hash-filter'
16
+ ```
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install fluent-plugin-nested-hash-filter
25
+
26
+ ## Usage
27
+
28
+ TODO: Write usage instructions here
29
+
30
+ ## Development
31
+
32
+ After checking out the repo, run `bundle install` to install dependencies.
33
+
34
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
35
+
36
+ ## Contributing
37
+
38
+ 1. Fork it ( https://github.com/sugilog/fluent-plugin-nested-hash-filter/fork )
39
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
40
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
41
+ 4. Push to the branch (`git push origin my-new-feature`)
42
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ desc "Run tests"
5
+ Rake::TestTask.new do |test|
6
+ test.name = :test
7
+ test.libs = ["lib", "test"]
8
+ test.test_files = FileList["test/**/*_test.rb"]
9
+ test.verbose = true
10
+ end
11
+
12
+ task :default => :test
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "fluent-plugin-nested-hash-filter"
7
+ spec.version = "0.0.1"
8
+ spec.authors = ["sugilog"]
9
+ spec.email = ["sugilog@gmail.com"]
10
+
11
+ spec.summary = %q{Fluent Plugin for converting nested hash into flatten key-value pair.}
12
+ spec.description = %q{Fluent Plugin for converting nested hash into flatten key-value pair.}
13
+ spec.homepage = "https://github.com/sugilog/fluent-plugin-nested-hash-filter"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.require_paths = ["lib"]
17
+
18
+ spec.add_development_dependency "bundler"
19
+ spec.add_development_dependency "rake", "~> 10.0"
20
+ spec.add_runtime_dependency "fluentd"
21
+ spec.add_development_dependency "test-unit"
22
+ spec.add_development_dependency "guard"
23
+ spec.add_development_dependency "guard-test"
24
+ end
@@ -0,0 +1,23 @@
1
+ require "fluent/plugin/nested_hash_filter/nested_object"
2
+
3
+ module Fluent
4
+ class FilterNestedHash < Filter
5
+ Plugin.register_filter("nested_hash_filter", self)
6
+
7
+ def configure conf
8
+ super
9
+ end
10
+
11
+ def start
12
+ super
13
+ end
14
+
15
+ def shutdown
16
+ super
17
+ end
18
+
19
+ def filter tag, time, record
20
+ Fluent::NestedHashFilter::NestedObject.convert record
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,72 @@
1
+ module Fluent
2
+ module NestedHashFilter
3
+ module NestedObject
4
+ CONNECTOR = "."
5
+
6
+ def self.init
7
+ @output = {}
8
+ @output_keys = []
9
+ end
10
+
11
+ def self.convert object
12
+ init
13
+ select object
14
+
15
+ @output
16
+ end
17
+
18
+ def self.select object
19
+ case object
20
+ when Hash
21
+ convert_hash object
22
+ when Array
23
+ convert_array object
24
+ else
25
+ update object
26
+ end
27
+ end
28
+
29
+ def self.add_key key
30
+ @output_keys.push key
31
+ end
32
+
33
+ def self.pop_key
34
+ @output_keys.pop
35
+ end
36
+
37
+ def self.current_key
38
+ @output_keys.join CONNECTOR
39
+ end
40
+
41
+ def self.update value
42
+ unless current_key.empty?
43
+ @output.update current_key => value
44
+ end
45
+ end
46
+
47
+ def self.convert_hash hash
48
+ if hash.keys.empty?
49
+ update nil
50
+ end
51
+
52
+ hash.each do |key, value|
53
+ add_key key
54
+ select value
55
+ pop_key
56
+ end
57
+ end
58
+
59
+ def self.convert_array array
60
+ if array.empty?
61
+ update nil
62
+ end
63
+
64
+ array.each_with_index do |value, index|
65
+ add_key index
66
+ select value
67
+ pop_key
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,28 @@
1
+ require "fluent/plugin/nested_hash_filter/nested_object"
2
+
3
+ module Fluent
4
+ class OutNestedHash < Output
5
+ Plugin.register_output("nested_hash_filter", self)
6
+
7
+ def configure conf
8
+ super
9
+ end
10
+
11
+ def start
12
+ super
13
+ end
14
+
15
+ def shutdown
16
+ super
17
+ end
18
+
19
+ def emit tag, es, chain
20
+ es.each do |time, record|
21
+ record = Fluent::NestedHashFilter::NestedObject.convert record
22
+ Fluent::Engine.emit tag, time, record
23
+ end
24
+
25
+ chain.next
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,70 @@
1
+ require "test_helper"
2
+ require "fluent/plugin/filter_nested_hash"
3
+
4
+ class FilterNestedHashTest < Test::Unit::TestCase
5
+ include Fluent
6
+
7
+ setup do
8
+ Fluent::Test.setup
9
+ @time = Fluent::Engine.now
10
+ end
11
+
12
+ def create_driver config = ""
13
+ driver = Test::FilterTestDriver.new FilterNestedHash
14
+ driver.configure config, true
15
+ end
16
+
17
+ def emit config, messages
18
+ driver = create_driver config
19
+
20
+ driver.run do
21
+ messages.each do |message|
22
+ driver.emit message, @time
23
+ end
24
+ end
25
+
26
+ driver
27
+ end
28
+
29
+ def filtered driver, index
30
+ result = driver.filtered_as_array[index]
31
+ {tag: result[0], time: result[1], message: result[2]}
32
+ end
33
+
34
+ sub_test_case "configure" do
35
+ test "check default" do
36
+ assert_nothing_raised do
37
+ create_driver "default"
38
+ end
39
+ end
40
+ end
41
+
42
+ sub_test_case "filter" do
43
+ test "with valid record" do
44
+ driver = emit "", [
45
+ {a: 1, b: {c: 2, d: {e: 3, f:4}, g: [10, 20, 30]}, h: [], i: {}},
46
+ {a: {b: {c: 1, d: {e: 2, f:3}, g: [10, 20, 30]}, h: [], i: {}}}
47
+ ]
48
+
49
+ expect_message = {"a" => 1, "b.c" => 2, "b.d.e" => 3, "b.d.f" => 4, "b.g.0" => 10, "b.g.1" => 20, "b.g.2" => 30, "h" => nil, "i" => nil}
50
+ result = filtered driver, 0
51
+ assert_equal expect_message, result[:message]
52
+
53
+ expect_message = {"a.b.c" => 1, "a.b.d.e" => 2, "a.b.d.f" => 3, "a.b.g.0" => 10, "a.b.g.1" => 20, "a.b.g.2" => 30, "a.h" => nil, "a.i" => nil}
54
+ result = filtered driver, 1
55
+ assert_equal expect_message, result[:message]
56
+ end
57
+
58
+ test "with invalid record" do
59
+ driver = emit "", ["message", {hoge: 1, fuga: {"test0" => 2, "test1" => 3}}]
60
+
61
+ expect_message = {}
62
+ result = filtered driver, 0
63
+ assert_equal expect_message, result[:message]
64
+
65
+ expect_message = {"hoge" => 1, "fuga.test0" => 2, "fuga.test1" => 3}
66
+ result = filtered driver, 1
67
+ assert_equal expect_message, result[:message]
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,209 @@
1
+ require "test_helper"
2
+ require "fluent/plugin/nested_hash_filter/nested_object"
3
+
4
+ class NestedObjectTest < Test::Unit::TestCase
5
+ setup do
6
+ klass.init
7
+ end
8
+
9
+ sub_test_case "constants" do
10
+ test "::CONNECTOR" do
11
+ assert_equal ".", klass::CONNECTOR
12
+ end
13
+ end
14
+
15
+ sub_test_case "convert" do
16
+ test "convert by multi time" do
17
+ hash = {"a" => 1, "b" => {"c" => 2, "d" => 3}, "e" => [4, 5], "f" => {}, "g" => []}
18
+ output = klass.convert hash
19
+ assert_equal Set["a", "b.c", "b.d", "e.0", "e.1", "f", "g"], output.keys.to_set
20
+ assert_equal 1, output["a"]
21
+ assert_equal 2, output["b.c"]
22
+ assert_equal 3, output["b.d"]
23
+ assert_equal 4, output["e.0"]
24
+ assert_equal 5, output["e.1"]
25
+ assert_equal nil, output["f"]
26
+ assert_equal nil, output["g"]
27
+
28
+ hash = {"a" => {"b" => {"c" => 1, "d" => 2}, "e" => [3, 4]}}
29
+ output = klass.convert hash
30
+ assert_equal Set["a.b.c", "a.b.d", "a.e.0", "a.e.1"], output.keys.to_set
31
+ assert_equal 1, output["a.b.c"]
32
+ assert_equal 2, output["a.b.d"]
33
+ assert_equal 3, output["a.e.0"]
34
+ assert_equal 4, output["a.e.1"]
35
+ end
36
+ end
37
+
38
+ sub_test_case "select" do
39
+ test "object is hash" do
40
+ klass.add_key "test"
41
+ object = {hoge: 1, fuga: "2"}
42
+ klass.select object
43
+
44
+ assert_equal Set["test.hoge", "test.fuga"], output.keys.to_set
45
+ assert_equal 1, output["test.hoge"]
46
+ assert_equal "2", output["test.fuga"]
47
+ end
48
+
49
+ test "object is array" do
50
+ klass.add_key "test"
51
+ object = [:hoge, "fuga"]
52
+ klass.select object
53
+
54
+ assert_equal Set["test.0", "test.1"], output.keys.to_set
55
+ assert_equal :hoge, output["test.0"]
56
+ assert_equal "fuga", output["test.1"]
57
+ end
58
+
59
+ test "object is string" do
60
+ klass.add_key "test"
61
+ object = "hoge"
62
+ klass.select object
63
+
64
+ assert_equal Set["test"], output.keys.to_set
65
+ assert_equal "hoge", output["test"]
66
+ end
67
+
68
+ test "object is number" do
69
+ klass.add_key "test"
70
+ object = 12345
71
+ klass.select object
72
+
73
+ assert_equal Set["test"], output.keys.to_set
74
+ assert_equal 12345, output["test"]
75
+ end
76
+
77
+ test "object is nil" do
78
+ klass.add_key "test"
79
+ object = nil
80
+ klass.select object
81
+
82
+ assert_equal Set["test"], output.keys.to_set
83
+ assert_equal nil, output["test"]
84
+ end
85
+ end
86
+
87
+ sub_test_case "add_key" do
88
+ test "add" do
89
+ klass.add_key "test"
90
+ assert_equal ["test"], output_keys
91
+ klass.add_key 1
92
+ assert_equal ["test", 1], output_keys
93
+ klass.add_key "hoge"
94
+ assert_equal ["test", 1, "hoge"], output_keys
95
+ end
96
+ end
97
+
98
+ sub_test_case "pop_key" do
99
+ test "remove key by pop" do
100
+ klass.add_key "test"
101
+ klass.add_key 1
102
+ klass.add_key "hoge"
103
+ assert_equal ["test", 1, "hoge"], output_keys
104
+
105
+ klass.pop_key
106
+ assert_equal ["test", 1], output_keys
107
+
108
+ klass.pop_key
109
+ assert_equal ["test"], output_keys
110
+
111
+ klass.pop_key
112
+ assert_equal [], output_keys
113
+ end
114
+
115
+ test "without output_keys" do
116
+ assert_nothing_raised do
117
+ klass.pop_key
118
+ end
119
+ end
120
+ end
121
+
122
+ sub_test_case "current_key" do
123
+ test "with output_keys" do
124
+ klass.add_key "test"
125
+ klass.add_key 1
126
+ assert_equal "test.1", klass.current_key
127
+ end
128
+
129
+ test "without output_keys" do
130
+ assert_equal "", klass.current_key
131
+ end
132
+ end
133
+
134
+ sub_test_case "update" do
135
+ test "with current_key" do
136
+ klass.add_key "test"
137
+ klass.add_key 1
138
+ klass.update 12345
139
+
140
+ assert_equal ["test.1"], output.keys
141
+ assert_equal 12345, output["test.1"]
142
+ end
143
+
144
+ test "without current_key" do
145
+ assert klass.current_key.empty?
146
+ klass.update 12345
147
+
148
+ assert_equal [], output.keys
149
+ end
150
+ end
151
+
152
+ sub_test_case "convert_hash" do
153
+ test "hash is blank" do
154
+ klass.add_key "test"
155
+ object = {}
156
+ klass.convert_hash object
157
+ assert_equal ["test"], output.keys
158
+ assert_equal nil, output["test"]
159
+ end
160
+
161
+ test "convert" do
162
+ klass.add_key "test"
163
+ object = {"a" => "hoge", "b" => 1, "c" => {"hoge" => "fuga"}, "d" => [10, 20], "e" => nil}
164
+ klass.convert_hash object
165
+ assert_equal ["test.a", "test.b", "test.c.hoge", "test.d.0", "test.d.1", "test.e"], output.keys
166
+ assert_equal "hoge", output["test.a"]
167
+ assert_equal 1, output["test.b"]
168
+ assert_equal "fuga", output["test.c.hoge"]
169
+ assert_equal 10, output["test.d.0"]
170
+ assert_equal 20, output["test.d.1"]
171
+ assert_equal nil, output["test.e"]
172
+ end
173
+ end
174
+
175
+ sub_test_case "convert_array" do
176
+ test "array is empty" do
177
+ klass.add_key "test"
178
+ object = []
179
+ klass.convert_array object
180
+ assert_equal ["test"], output.keys
181
+ assert_equal nil, output["test"]
182
+ end
183
+
184
+ test "convert" do
185
+ klass.add_key "test"
186
+ object = ["hoge", 1, {"hoge" => "fuga"}, [10, 20], nil]
187
+ klass.convert_array object
188
+ assert_equal ["test.0", "test.1", "test.2.hoge", "test.3.0", "test.3.1", "test.4"], output.keys
189
+ assert_equal "hoge", output["test.0"]
190
+ assert_equal 1, output["test.1"]
191
+ assert_equal "fuga", output["test.2.hoge"]
192
+ assert_equal 10, output["test.3.0"]
193
+ assert_equal 20, output["test.3.1"]
194
+ assert_equal nil, output["test.4"]
195
+ end
196
+ end
197
+
198
+ def output
199
+ klass.instance_variable_get :@output
200
+ end
201
+
202
+ def output_keys
203
+ klass.instance_variable_get :@output_keys
204
+ end
205
+
206
+ def klass
207
+ Fluent::NestedHashFilter::NestedObject
208
+ end
209
+ end
@@ -0,0 +1,71 @@
1
+ require "test_helper"
2
+ require "fluent/plugin/out_nested_hash"
3
+
4
+ class OutNestedHashTest < Test::Unit::TestCase
5
+ include Fluent
6
+
7
+ setup do
8
+ Fluent::Test.setup
9
+ @time = Fluent::Engine.now
10
+ end
11
+
12
+ def create_driver config = "", tag = "test"
13
+ driver = Fluent::Test::OutputTestDriver.new OutNestedHash, tag
14
+ driver.configure config
15
+ end
16
+
17
+ def emit config, tag, messages
18
+ driver = create_driver config, tag
19
+
20
+ driver.run do
21
+ messages.each do |message|
22
+ driver.emit message
23
+ end
24
+ end
25
+
26
+ driver
27
+ end
28
+
29
+ def emitted driver, index
30
+ result = driver.emits[index]
31
+ {tag: result[0], time: result[1], message: result[2]}
32
+ end
33
+
34
+ sub_test_case "configure" do
35
+ test "check_default" do
36
+ create_driver "default"
37
+ end
38
+ end
39
+
40
+ sub_test_case "emit" do
41
+ test "with valid record" do
42
+ driver = emit "", "test", [
43
+ {a: 1, b: {c: 2, d: {e: 3, f:4}, g: [10, 20, 30]}, h: [], i: {}},
44
+ {a: {b: {c: 1, d: {e: 2, f:3}, g: [10, 20, 30]}, h: [], i: {}}}
45
+ ]
46
+
47
+ expect_message = {"a" => 1, "b.c" => 2, "b.d.e" => 3, "b.d.f" => 4, "b.g.0" => 10, "b.g.1" => 20, "b.g.2" => 30, "h" => nil, "i" => nil}
48
+ result = emitted driver, 0
49
+ assert_equal "test", result[:tag]
50
+ assert_equal expect_message, result[:message]
51
+
52
+ expect_message = {"a.b.c" => 1, "a.b.d.e" => 2, "a.b.d.f" => 3, "a.b.g.0" => 10, "a.b.g.1" => 20, "a.b.g.2" => 30, "a.h" => nil, "a.i" => nil}
53
+ result = emitted driver, 1
54
+ assert_equal "test", result[:tag]
55
+ assert_equal expect_message, result[:message]
56
+ end
57
+
58
+ test "with invalid record" do
59
+ driver = emit "", "test", ["message", {hoge: 1, fuga: {"test0" => 2, "test1" => 3}}]
60
+
61
+ expect_message = {}
62
+ result = emitted driver, 0
63
+ assert_equal expect_message, result[:message]
64
+
65
+ expect_message = {"hoge" => 1, "fuga.test0" => 2, "fuga.test1" => 3}
66
+ result = emitted driver, 1
67
+ assert_equal "test", result[:tag]
68
+ assert_equal expect_message, result[:message]
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require "test/unit"
4
+ require "fluent/test"
5
+ require "fluent/log"
6
+ require "fluent/load"
7
+
8
+ class Test::Unit::TestCase
9
+ end
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-nested-hash-filter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - sugilog
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: fluentd
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard-test
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Fluent Plugin for converting nested hash into flatten key-value pair.
98
+ email:
99
+ - sugilog@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".travis.yml"
106
+ - Gemfile
107
+ - Guardfile
108
+ - README.md
109
+ - Rakefile
110
+ - fluent-plugin-nested-hash-filter.gemspec
111
+ - lib/fluent/plugin/filter_nested_hash.rb
112
+ - lib/fluent/plugin/nested_hash_filter/nested_object.rb
113
+ - lib/fluent/plugin/out_nested_hash.rb
114
+ - test/fluent/plugin/filter_nested_hash_test.rb
115
+ - test/fluent/plugin/nested_hash_filter/nested_object_test.rb
116
+ - test/fluent/plugin/out_nested_hash_test.rb
117
+ - test/test_helper.rb
118
+ homepage: https://github.com/sugilog/fluent-plugin-nested-hash-filter
119
+ licenses: []
120
+ metadata: {}
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubyforge_project:
137
+ rubygems_version: 2.4.5
138
+ signing_key:
139
+ specification_version: 4
140
+ summary: Fluent Plugin for converting nested hash into flatten key-value pair.
141
+ test_files: []