yaml_converters 0.1.0 → 0.2.0
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.
- data/.travis.yml +8 -0
- data/CHANGELOG.md +4 -0
- data/README.md +51 -1
- data/lib/yaml_converters/version.rb +1 -1
- data/lib/yaml_converters/yaml_file_reader.rb +11 -0
- data/lib/yaml_converters/yaml_to_segments_converter.rb +3 -4
- data/lib/yaml_converters.rb +1 -0
- data/spec/integration/yaml_to_segments_spec.rb +15 -0
- data/spec/{segment_to_hash_writer_spec.rb → unit/segment_to_hash_writer_spec.rb} +0 -0
- data/spec/{segments_to_yaml_converter_spec.rb → unit/segments_to_yaml_converter_spec.rb} +0 -0
- data/spec/unit/yaml_file_reader_spec.rb +13 -0
- data/spec/{yaml_to_segments_converter_spec.rb → unit/yaml_to_segments_converter_spec.rb} +8 -5
- data/spec/{yaml_to_string_writer_spec.rb → unit/yaml_to_string_writer_spec.rb} +0 -0
- metadata +17 -11
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# YamlConverters
|
1
|
+
# YamlConverters [](http://travis-ci.org/tomekw/yaml_converters)
|
2
2
|
|
3
3
|
Convert YAML to segments and back.
|
4
4
|
|
@@ -16,11 +16,26 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
$ gem install yaml_converters
|
18
18
|
|
19
|
+
Supported Ruby versions:
|
20
|
+
|
21
|
+
* `1.9.3`
|
22
|
+
* `1.9.2`
|
23
|
+
|
19
24
|
## Usage
|
20
25
|
|
26
|
+
### Converting YAML into segments
|
27
|
+
|
21
28
|
Use `YamlConverters::YamlToSegmentsConverter#convert` to split YAML file
|
22
29
|
into flat key-value pairs.
|
23
30
|
|
31
|
+
``` ruby
|
32
|
+
yaml_reader = YamlConverters::YamlFileReader.new('path/to/file.yml')
|
33
|
+
converter = YamlConverters::YamlToSegmentsConverter.new(
|
34
|
+
yaml_reader, YamlConverters::SegmentToHashWriter.new
|
35
|
+
)
|
36
|
+
converter.convert # => { 'key' => 'value', ... }
|
37
|
+
```
|
38
|
+
|
24
39
|
You can pass custom `segment_writer` to dump generated segments
|
25
40
|
somewhere (database, for example). Custom writer should respond to
|
26
41
|
two public methods:
|
@@ -47,9 +62,40 @@ module YamlConverters
|
|
47
62
|
end
|
48
63
|
```
|
49
64
|
|
65
|
+
You can pass custom `yaml_reader` to read YAML file from
|
66
|
+
a different source (AWS, for example). Custom reader should respond to
|
67
|
+
one public method:
|
68
|
+
|
69
|
+
* `read` - returns string containing YAML file contents
|
70
|
+
|
71
|
+
Example `yaml_reader`:
|
72
|
+
|
73
|
+
``` ruby
|
74
|
+
module YamlConverters
|
75
|
+
class YamlFileReader
|
76
|
+
def initialize(file_path)
|
77
|
+
@file_path = file_path
|
78
|
+
end
|
79
|
+
|
80
|
+
def read
|
81
|
+
File.read(@file_path)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
```
|
86
|
+
|
87
|
+
### Converting segments into YAML
|
88
|
+
|
50
89
|
Use `YamlConverters::SegmentsToYamlConverter#convert` to dump segments
|
51
90
|
(key-value pairs) to YAML file.
|
52
91
|
|
92
|
+
``` ruby
|
93
|
+
converter = YamlConverters::SegmentsToYamlConverter(
|
94
|
+
{ 'key' => 'value' }, YamlConverters::YamlToStringWriter.new
|
95
|
+
)
|
96
|
+
converter.convert # => "---\nkey: value\n"
|
97
|
+
```
|
98
|
+
|
53
99
|
You can pass custom `yaml_writer` to dump generated YAML file
|
54
100
|
somewhere (file, for example). Custom writer should respond to
|
55
101
|
two public methods:
|
@@ -81,6 +127,10 @@ end
|
|
81
127
|
Implementation of flattening a YAML file and generating a YAML file
|
82
128
|
from key-value pairs taken (I hope, for now) from Tolk codebase.
|
83
129
|
|
130
|
+
## Warning
|
131
|
+
|
132
|
+
Until version `1.0.0` is reached API may be changed without any notice!
|
133
|
+
|
84
134
|
## Contributing
|
85
135
|
|
86
136
|
1. Fork it
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module YamlConverters
|
2
2
|
class YamlToSegmentsConverter
|
3
|
-
def initialize(
|
4
|
-
@
|
3
|
+
def initialize(yaml_reader, segment_writer = YamlConverters::SegmentToHashWriter.new)
|
4
|
+
@yaml_reader = yaml_reader
|
5
5
|
@segment_writer = segment_writer
|
6
6
|
end
|
7
7
|
|
@@ -14,8 +14,7 @@ module YamlConverters
|
|
14
14
|
private
|
15
15
|
|
16
16
|
def file_contents
|
17
|
-
|
18
|
-
@file_contents ||= File.read(@file_path)
|
17
|
+
@file_contents ||= @yaml_reader.read
|
19
18
|
end
|
20
19
|
|
21
20
|
def raw_yaml_hash
|
data/lib/yaml_converters.rb
CHANGED
@@ -5,6 +5,7 @@ require 'yaml_converters/yaml_to_segments_converter'
|
|
5
5
|
require 'yaml_converters/segments_to_yaml_converter'
|
6
6
|
require 'yaml_converters/segment_to_hash_writer'
|
7
7
|
require 'yaml_converters/yaml_to_string_writer'
|
8
|
+
require 'yaml_converters/yaml_file_reader'
|
8
9
|
|
9
10
|
module YamlConverters
|
10
11
|
SEGMENT_KEY_DELIMITER = '.'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'YAML to segments conversion' do
|
4
|
+
subject { YamlConverters::YamlToSegmentsConverter.new(yaml_reader) }
|
5
|
+
let(:yaml_reader) { YamlConverters::YamlFileReader.new(file_path) }
|
6
|
+
let(:file_path) { 'spec/fixtures/deeply_nested_key_value_pairs.yml' }
|
7
|
+
|
8
|
+
its(:convert) do
|
9
|
+
should eq({
|
10
|
+
'grandmother.mother.daughter' => 'olga',
|
11
|
+
'grandmother.mother.sister' => 'ania',
|
12
|
+
'grandfather' => 'eugeniusz'
|
13
|
+
})
|
14
|
+
end
|
15
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe YamlConverters::YamlFileReader do
|
4
|
+
subject { described_class.new(file_path) }
|
5
|
+
let(:file_path) { 'spec/fixtures/one_key_value_pair.yml' }
|
6
|
+
let(:expected_yaml_string) { "---\nparent:\n child: value\n" }
|
7
|
+
|
8
|
+
before do
|
9
|
+
File.stub(:read).with(file_path).and_return(expected_yaml_string)
|
10
|
+
end
|
11
|
+
|
12
|
+
its(:read) { should eq(expected_yaml_string) }
|
13
|
+
end
|
@@ -1,28 +1,31 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe YamlConverters::YamlToSegmentsConverter do
|
4
|
-
subject { described_class.new(
|
4
|
+
subject { described_class.new(yaml_reader) }
|
5
|
+
let(:yaml_reader) { stub(read: file_contents) }
|
5
6
|
|
6
7
|
context 'simple one key-value pair file' do
|
7
|
-
let(:
|
8
|
+
let(:file_contents) { "---\nkey: value\n" }
|
8
9
|
|
9
10
|
its(:convert) { should eq({ 'key' => 'value' }) }
|
10
11
|
end
|
11
12
|
|
12
13
|
context 'simple two key-value pairs file' do
|
13
|
-
let(:
|
14
|
+
let(:file_contents) { "---\nkey1: value1\nkey2: value2\n" }
|
14
15
|
|
15
16
|
its(:convert) { should eq({ 'key1' => 'value1', 'key2' => 'value2' }) }
|
16
17
|
end
|
17
18
|
|
18
19
|
context 'nested key-value pair file' do
|
19
|
-
let(:
|
20
|
+
let(:file_contents) { "---\nparent:\n child: value\n" }
|
20
21
|
|
21
22
|
its(:convert) { should eq({ 'parent.child' => 'value' }) }
|
22
23
|
end
|
23
24
|
|
24
25
|
context 'deeply ested key-value pairs file' do
|
25
|
-
let(:
|
26
|
+
let(:file_contents) do
|
27
|
+
"---\ngrandmother:\n mother:\n daughter: olga\n sister: ania\ngrandfather: eugeniusz\n"
|
28
|
+
end
|
26
29
|
|
27
30
|
its(:convert) do
|
28
31
|
should eq({
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yaml_converters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -100,6 +100,7 @@ extra_rdoc_files: []
|
|
100
100
|
files:
|
101
101
|
- .gitignore
|
102
102
|
- .rspec
|
103
|
+
- .travis.yml
|
103
104
|
- CHANGELOG.md
|
104
105
|
- Gemfile
|
105
106
|
- LICENSE.txt
|
@@ -109,17 +110,20 @@ files:
|
|
109
110
|
- lib/yaml_converters/segment_to_hash_writer.rb
|
110
111
|
- lib/yaml_converters/segments_to_yaml_converter.rb
|
111
112
|
- lib/yaml_converters/version.rb
|
113
|
+
- lib/yaml_converters/yaml_file_reader.rb
|
112
114
|
- lib/yaml_converters/yaml_to_segments_converter.rb
|
113
115
|
- lib/yaml_converters/yaml_to_string_writer.rb
|
114
116
|
- spec/fixtures/deeply_nested_key_value_pairs.yml
|
115
117
|
- spec/fixtures/nested_key_value_pair.yml
|
116
118
|
- spec/fixtures/one_key_value_pair.yml
|
117
119
|
- spec/fixtures/two_key_value_pairs.yml
|
118
|
-
- spec/
|
119
|
-
- spec/segments_to_yaml_converter_spec.rb
|
120
|
+
- spec/integration/yaml_to_segments_spec.rb
|
120
121
|
- spec/spec_helper.rb
|
121
|
-
- spec/
|
122
|
-
- spec/
|
122
|
+
- spec/unit/segment_to_hash_writer_spec.rb
|
123
|
+
- spec/unit/segments_to_yaml_converter_spec.rb
|
124
|
+
- spec/unit/yaml_file_reader_spec.rb
|
125
|
+
- spec/unit/yaml_to_segments_converter_spec.rb
|
126
|
+
- spec/unit/yaml_to_string_writer_spec.rb
|
123
127
|
- yaml_converters.gemspec
|
124
128
|
homepage: https://github.com/tomekw/yaml_converters
|
125
129
|
licenses: []
|
@@ -135,7 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
135
139
|
version: '0'
|
136
140
|
segments:
|
137
141
|
- 0
|
138
|
-
hash:
|
142
|
+
hash: -1522767103268194722
|
139
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
144
|
none: false
|
141
145
|
requirements:
|
@@ -144,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
148
|
version: '0'
|
145
149
|
segments:
|
146
150
|
- 0
|
147
|
-
hash:
|
151
|
+
hash: -1522767103268194722
|
148
152
|
requirements: []
|
149
153
|
rubyforge_project:
|
150
154
|
rubygems_version: 1.8.24
|
@@ -156,8 +160,10 @@ test_files:
|
|
156
160
|
- spec/fixtures/nested_key_value_pair.yml
|
157
161
|
- spec/fixtures/one_key_value_pair.yml
|
158
162
|
- spec/fixtures/two_key_value_pairs.yml
|
159
|
-
- spec/
|
160
|
-
- spec/segments_to_yaml_converter_spec.rb
|
163
|
+
- spec/integration/yaml_to_segments_spec.rb
|
161
164
|
- spec/spec_helper.rb
|
162
|
-
- spec/
|
163
|
-
- spec/
|
165
|
+
- spec/unit/segment_to_hash_writer_spec.rb
|
166
|
+
- spec/unit/segments_to_yaml_converter_spec.rb
|
167
|
+
- spec/unit/yaml_file_reader_spec.rb
|
168
|
+
- spec/unit/yaml_to_segments_converter_spec.rb
|
169
|
+
- spec/unit/yaml_to_string_writer_spec.rb
|