ad_hoc_template 0.0.1 → 0.1.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.
@@ -0,0 +1,377 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'ad_hoc_template'
5
+
6
+ describe AdHocTemplate do
7
+ describe AdHocTemplate::RecordReader do
8
+ it "can read key-value pairs and empty lines at the head should be ignored" do
9
+ data = <<CONFIG
10
+
11
+ key1: value1
12
+ key2: value2
13
+ key3: value3
14
+
15
+
16
+ CONFIG
17
+
18
+ expect(AdHocTemplate::RecordReader.read_record(data)).to eq({ "key1" => "value1", "key2" => "value2", "key3" => "value3", })
19
+ end
20
+
21
+ it "can accept an empty string as its input" do
22
+ expect(AdHocTemplate::RecordReader.read_record('')).to eq({})
23
+ end
24
+
25
+ it "can read several header type configurations at once." do
26
+ data = <<CONFIGS
27
+ //@#configs
28
+
29
+ key1-1: value1-1
30
+ key1-2: value1-2
31
+
32
+ key2-1: value2-1
33
+ key2-2: value2-2
34
+
35
+ key3-1: value3-1
36
+ key3-2: value3-2
37
+
38
+ CONFIGS
39
+
40
+ expected_config = {
41
+ "#configs" => [
42
+ {"key1-1" => "value1-1", "key1-2" => "value1-2"},
43
+ {"key2-1" => "value2-1", "key2-2" => "value2-2"},
44
+ {"key3-1" => "value3-1", "key3-2" => "value3-2"}
45
+ ]}
46
+ expect(AdHocTemplate::RecordReader.read_record(data)).to eq(expected_config)
47
+ end
48
+
49
+ it "can read sets of several header type configurations at once." do
50
+ data = <<CONFIGS
51
+ //@#configs
52
+
53
+ key1-1: value1-1
54
+ key1-2: value1-2
55
+
56
+ key2-1: value2-1
57
+ key2-2: value2-2
58
+
59
+ key3-1: value3-1
60
+ key3-2: value3-2
61
+
62
+ //@#configs2
63
+
64
+ key1-1: value1-1
65
+ key1-2: value1-2
66
+
67
+ key2-1: value2-1
68
+ key2-2: value2-2
69
+
70
+ key3-1: value3-1
71
+ key3-2: value3-2
72
+
73
+ CONFIGS
74
+
75
+ expected_config = {
76
+ "#configs" => [
77
+ {"key1-1" => "value1-1", "key1-2" => "value1-2"},
78
+ {"key2-1" => "value2-1", "key2-2" => "value2-2"},
79
+ {"key3-1" => "value3-1", "key3-2" => "value3-2"}
80
+ ],
81
+ "#configs2" => [
82
+ {"key1-1" => "value1-1", "key1-2" => "value1-2"},
83
+ {"key2-1" => "value2-1", "key2-2" => "value2-2"},
84
+ {"key3-1" => "value3-1", "key3-2" => "value3-2"}
85
+ ]
86
+ }
87
+ expect(AdHocTemplate::RecordReader.read_record(data)).to eq(expected_config)
88
+ end
89
+
90
+ it "reads configuration data and turns them into a hash object" do
91
+ data = <<CONFIG
92
+ key1: value1
93
+ key2: value2
94
+ key3: value3
95
+
96
+ //@block1
97
+
98
+ the first line of block1
99
+ the second line of block1
100
+
101
+ the second paragraph in block1
102
+
103
+ //@block2
104
+ the first line of block2
105
+ the second line of block2
106
+
107
+ the second paragraph of block2
108
+ CONFIG
109
+
110
+ expected_config = {
111
+ "key1" => "value1",
112
+ "key2" => "value2",
113
+ "key3" => "value3",
114
+ "block1" => "the first line of block1\nthe second line of block1\n\nthe second paragraph in block1\n",
115
+ "block2" => "the first line of block2\nthe second line of block2\n\nthe second paragraph of block2\n"
116
+ }
117
+ expect(AdHocTemplate::RecordReader.read_record(data)).to eq(expected_config)
118
+ end
119
+
120
+ it "can read configuration data with 3 different kind of sections" do
121
+ data = <<CONFIG
122
+ key1: value1
123
+ key2: value2
124
+ key3: value3
125
+
126
+ //@#subconfigs
127
+
128
+ key1-1: value1-1
129
+ key1-2: value1-2
130
+
131
+ key2-1: value2-1
132
+ key2-2: value2-2
133
+
134
+ //@block
135
+
136
+ the first line of block
137
+ the second line of block
138
+
139
+ the second paragraph in block
140
+
141
+ CONFIG
142
+
143
+ expected_config = {
144
+ "key1" => "value1",
145
+ "key2" => "value2",
146
+ "key3" => "value3",
147
+ "#subconfigs" => [{"key1-1"=>"value1-1", "key1-2"=>"value1-2"}, {"key2-1"=>"value2-1", "key2-2"=>"value2-2"}],
148
+ "block" => "the first line of block\nthe second line of block\n\nthe second paragraph in block\n"
149
+ }
150
+ expect(AdHocTemplate::RecordReader.read_record(data)).to eq(expected_config)
151
+ end
152
+ end
153
+
154
+ describe AdHocTemplate::RecordReader::YAMLReader do
155
+ before do
156
+ @config_source = <<CONFIG
157
+ key1: value1
158
+ key2: value2
159
+ key3: value3
160
+
161
+ //@#subconfigs
162
+
163
+ key1-1: value1-1
164
+ key1-2: value1-2
165
+
166
+ key2-1: value2-1
167
+ key2-2: value2-2
168
+
169
+ //@block
170
+
171
+ the first line of block
172
+ the second line of block
173
+
174
+ the second paragraph in block
175
+
176
+ CONFIG
177
+
178
+ @yaml_source = <<YAML
179
+ key1: value1
180
+ key2: value2
181
+ key3: value3
182
+ '#subconfigs':
183
+ - key1-1: value1-1
184
+ key1-2: value1-2
185
+ - key2-1: value2-1
186
+ key2-2: value2-2
187
+ block: |
188
+ the first line of block
189
+ the second line of block
190
+
191
+ the second paragraph in block
192
+ YAML
193
+
194
+ @yaml_dump = <<YAML
195
+ ---
196
+ key1: value1
197
+ key2: value2
198
+ key3: value3
199
+ "#subconfigs":
200
+ - key1-1: value1-1
201
+ key1-2: value1-2
202
+ - key2-1: value2-1
203
+ key2-2: value2-2
204
+ block: |
205
+ the first line of block
206
+ the second line of block
207
+
208
+ the second paragraph in block
209
+ YAML
210
+ end
211
+
212
+ it 'reads yaml data and turns it into a Ruby object' do
213
+ config = AdHocTemplate::RecordReader.read_record(@config_source)
214
+ yaml = AdHocTemplate::RecordReader::YAMLReader.read_record(@yaml_source)
215
+
216
+ expect(yaml).to eq(config)
217
+ end
218
+
219
+ it '.read_record is called from RecordReader.read_record if the format of source data is specified' do
220
+ yaml_reader = AdHocTemplate::RecordReader::YAMLReader.read_record(@yaml_source)
221
+ record_reader = AdHocTemplate::RecordReader.read_record(@yaml_source, :yaml)
222
+
223
+ expect(yaml_reader).to eq(record_reader)
224
+ end
225
+
226
+ it '.to_yaml converts the format of data from default to yaml' do
227
+ yaml = AdHocTemplate::RecordReader::YAMLReader.to_yaml(@config_source)
228
+
229
+ expect(yaml).to eq(@yaml_dump)
230
+ end
231
+ end
232
+
233
+ describe AdHocTemplate::RecordReader::JSONReader do
234
+ before do
235
+ @config_source = <<CONFIG
236
+ key1: value1
237
+ key2: value2
238
+ key3: value3
239
+
240
+ //@#subconfigs
241
+
242
+ key1-1: value1-1
243
+ key1-2: value1-2
244
+
245
+ key2-1: value2-1
246
+ key2-2: value2-2
247
+
248
+ //@block
249
+
250
+ the first line of block
251
+ the second line of block
252
+
253
+ the second paragraph in block
254
+
255
+ CONFIG
256
+
257
+ @json_source = <<JSON
258
+ {
259
+ "key1":"value1",
260
+ "key2":"value2",
261
+ "key3":"value3",
262
+ "#subconfigs":
263
+ [
264
+ {
265
+ "key1-1":"value1-1",
266
+ "key1-2":"value1-2"
267
+ },
268
+ {
269
+ "key2-1":"value2-1",
270
+ "key2-2":"value2-2"
271
+ }
272
+ ],
273
+ "block":"the first line of block\\nthe second line of block\\n\\nthe second paragraph in block\\n"
274
+ }
275
+ JSON
276
+
277
+ @json_dump = <<JSON
278
+ {"key1":"value1","key2":"value2","key3":"value3","#subconfigs":[{"key1-1":"value1-1","key1-2":"value1-2"},{"key2-1":"value2-1","key2-2":"value2-2"}],"block":"the first line of block\\nthe second line of block\\n\\nthe second paragraph in block\\n"}
279
+ JSON
280
+ end
281
+
282
+ it 'reads JSON data and turns it into a Ruby object' do
283
+ config = AdHocTemplate::RecordReader.read_record(@config_source)
284
+ json = AdHocTemplate::RecordReader::JSONReader.read_record(@json_source)
285
+
286
+ expect(json).to eq(config)
287
+ end
288
+
289
+ it '.read_record is called from RecordReader.read_record if the format of source data is specified' do
290
+ json_reader = AdHocTemplate::RecordReader::JSONReader.read_record(@json_source)
291
+ record_reader = AdHocTemplate::RecordReader.read_record(@json_source, :json)
292
+
293
+ expect(json_reader).to eq(record_reader)
294
+ end
295
+
296
+ it '.to_yaml converts the format of data from default to yaml' do
297
+ json = AdHocTemplate::RecordReader::JSONReader.to_json(@config_source)
298
+
299
+ expect(json).to eq(@json_dump.chomp)
300
+ end
301
+ end
302
+
303
+ describe AdHocTemplate::RecordReader::CSVReader do
304
+ before do
305
+ @config_source = <<CONFIG
306
+ //@#subconfigs
307
+
308
+ key1: value1-1
309
+ key2: value1-2
310
+ key3: value1-3
311
+
312
+ key1: value2-1
313
+ key2: value2-2
314
+ key3: value2-3
315
+
316
+ key1: value3-1
317
+ key2: value3-2
318
+ key3: value3-3
319
+
320
+ CONFIG
321
+
322
+ @csv_source = <<CSV
323
+ key1,key2,key3
324
+ value1-1,value1-2,value1-3
325
+ value2-1,value2-2,value2-3
326
+ value3-1,value3-2,value3-3
327
+ CSV
328
+
329
+ @tsv_source =<<TSV
330
+ key1 key2 key3
331
+ value1-1 value1-2 value1-3
332
+ value2-1 value2-2 value2-3
333
+ value3-1 value3-2 value3-3
334
+ TSV
335
+ end
336
+
337
+ it 'reads CSV data and turns it into a Ruby object' do
338
+ config = AdHocTemplate::RecordReader.read_record(@config_source)
339
+ csv = AdHocTemplate::RecordReader::CSVReader.read_record(@csv_source, "subconfigs")
340
+
341
+ expect(csv).to eq(config)
342
+ end
343
+
344
+ it '.read_record is called from RecordReader.read_record if the format of source data is specified' do
345
+ csv_reader = AdHocTemplate::RecordReader::CSVReader.read_record(@csv_source, "subconfigs")
346
+ record_reader = AdHocTemplate::RecordReader.read_record(@csv_source, csv: "subconfigs")
347
+
348
+ csv_reader_without_label = AdHocTemplate::RecordReader::CSVReader.read_record(@csv_source)
349
+ record_reader_without_label = AdHocTemplate::RecordReader.read_record(@csv_source, :csv)
350
+
351
+
352
+ expect(csv_reader).to eq(record_reader)
353
+ expect(csv_reader_without_label).to eq(record_reader_without_label)
354
+ end
355
+
356
+ describe "TSV" do
357
+ it 'reads TSV data and turns it into a Ruby object' do
358
+ config = AdHocTemplate::RecordReader.read_record(@config_source)
359
+ tsv = AdHocTemplate::RecordReader::CSVReader.read_record(@tsv_source, tsv: "subconfigs")
360
+
361
+ expect(tsv).to eq(config)
362
+ end
363
+
364
+ it '.read_record is called from RecordReader.read_record if the format of source data is specified' do
365
+ csv_reader = AdHocTemplate::RecordReader::CSVReader.read_record(@csv_source, tsv: "subconfigs")
366
+ record_reader = AdHocTemplate::RecordReader.read_record(@csv_source, tsv: "subconfigs")
367
+
368
+ csv_reader_without_label = AdHocTemplate::RecordReader::CSVReader.read_record(@csv_source, :tsv)
369
+ record_reader_without_label = AdHocTemplate::RecordReader.read_record(@csv_source, :tsv)
370
+
371
+
372
+ expect(csv_reader).to eq(record_reader)
373
+ expect(csv_reader_without_label).to eq(record_reader_without_label)
374
+ end
375
+ end
376
+ end
377
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ad_hoc_template
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - HASHIMOTO, Naoki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-15 00:00:00.000000000 Z
11
+ date: 2016-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pseudohikiparser
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.2
19
+ version: 0.0.5.develop
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.0.2
26
+ version: 0.0.5.develop
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -86,9 +86,13 @@ files:
86
86
  - bin/ad_hoc_template
87
87
  - lib/ad_hoc_template.rb
88
88
  - lib/ad_hoc_template/command_line_interface.rb
89
+ - lib/ad_hoc_template/parser.rb
90
+ - lib/ad_hoc_template/record_reader.rb
89
91
  - lib/ad_hoc_template/version.rb
90
92
  - spec/ad_hoc_template_spec.rb
91
93
  - spec/command_line_interface_spec.rb
94
+ - spec/parser_spec.rb
95
+ - spec/record_reader_spec.rb
92
96
  - spec/spec_helper.rb
93
97
  homepage: https://github.com/nico-hn/AdHocTemplate
94
98
  licenses:
@@ -110,12 +114,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
114
  version: '0'
111
115
  requirements: []
112
116
  rubyforge_project:
113
- rubygems_version: 2.2.2
117
+ rubygems_version: 2.2.0
114
118
  signing_key:
115
119
  specification_version: 4
116
120
  summary: A tiny template processor
117
121
  test_files:
118
122
  - spec/ad_hoc_template_spec.rb
119
123
  - spec/command_line_interface_spec.rb
124
+ - spec/parser_spec.rb
125
+ - spec/record_reader_spec.rb
120
126
  - spec/spec_helper.rb
121
- has_rdoc: