textutils 0.8.2 → 0.8.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.
@@ -43,7 +43,7 @@ class ValuesReaderV2
43
43
  end
44
44
 
45
45
  ## fix: move Prop table to props gem - why? why not??
46
- WorldDb::Models::Prop.create_from_fixture!( name, path )
46
+ WorldDb::Model::Prop.create_from_fixture!( name, path )
47
47
  end
48
48
 
49
49
  end # class ValuesReaderV2
@@ -59,7 +59,7 @@ class ValuesReader
59
59
 
60
60
  def initialize( path, more_attribs={} )
61
61
  @more_attribs = more_attribs
62
-
62
+
63
63
  ### workaround/hack
64
64
  # if path includes newline assume it's a string buffer not a file name
65
65
  # fix: use from_file an from_string etc. for ctor
@@ -89,6 +89,16 @@ class ValuesReader
89
89
  blank_counter = 0 # count of number of blank lines (note: 1+ blank lines clear multi-line record)
90
90
  values = []
91
91
 
92
+ # keep track of last header
93
+ # e.g. lines like
94
+ # ___________________________________
95
+ # - Brauerei Schwechat (Brau Union)
96
+ #
97
+ # laster_header will be 'Brauerei Schwechat (Brau Union)'
98
+ # gets passed along as an attribue e.g. more_attribs[:header]='Brauerei Schwechat (Brau Union)'
99
+ last_header = nil
100
+
101
+
92
102
  @data.each_line do |line|
93
103
 
94
104
  ## allow alternative comment lines
@@ -126,8 +136,20 @@ class ValuesReader
126
136
  line = line.strip
127
137
 
128
138
 
129
- if line =~ /^-\s/ # check for group headers e.g. - St. James Brewery
130
- logger.info " skip group header #{line} for now (fix/add soon)"
139
+ if line =~ /^-\s+/ # check for group headers e.g. - St. James Brewery
140
+ if values.length > 0 # check if we already processed a record? if yes; yield last record (before reset)
141
+ attribs, more_values = find_key_n_title( values )
142
+ attribs = attribs.merge( @more_attribs ) # e.g. merge country_id and other defaults if present
143
+ attribs[:header] = last_header unless last_header.nil? # add optional header attrib
144
+ yield( attribs, more_values )
145
+ values = []
146
+ end
147
+ inside_record = false
148
+ blank_counter = 0
149
+
150
+ # update last_header
151
+ last_header = line.gsub( /^-\s/, '' ) # cut-off leading marker and space
152
+ logger.info " update group header >#{last_header}<"
131
153
  next
132
154
  elsif line =~ /^\[([a-z][a-z]+)\]/
133
155
  ### check for multiline record
@@ -137,10 +159,10 @@ class ValuesReader
137
159
  if values.length > 0 # check if we already processed a record? if yes; yield last record (before reset)
138
160
  attribs, more_values = find_key_n_title( values )
139
161
  attribs = attribs.merge( @more_attribs ) # e.g. merge country_id and other defaults if present
162
+ attribs[:header] = last_header unless last_header.nil? # add optional header attrib
140
163
  yield( attribs, more_values )
141
164
  values = []
142
165
  end
143
-
144
166
  inside_record = true
145
167
  blank_counter = 0
146
168
 
@@ -160,6 +182,7 @@ class ValuesReader
160
182
  if values.length > 0
161
183
  attribs, more_values = find_key_n_title( values )
162
184
  attribs = attribs.merge( @more_attribs ) # e.g. merge country_id and other defaults if present
185
+ attribs[:header] = last_header unless last_header.nil? # add optional header attrib
163
186
  yield( attribs, more_values )
164
187
  values = []
165
188
  end
@@ -175,6 +198,7 @@ class ValuesReader
175
198
  if values.length > 0
176
199
  attribs, more_values = find_key_n_title( values )
177
200
  attribs = attribs.merge( @more_attribs ) # e.g. merge country_id and other defaults if present
201
+ attribs[:header] = last_header unless last_header.nil? # add optional header attrib
178
202
  yield( attribs, more_values )
179
203
  end
180
204
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  module TextUtils
3
3
 
4
- VERSION = '0.8.2'
4
+ VERSION = '0.8.3'
5
5
 
6
6
  end # module TextUtils
7
7
 
@@ -10,6 +10,63 @@ require 'helper'
10
10
 
11
11
  class TestValuesReader < MiniTest::Unit::TestCase
12
12
 
13
+ def test_header
14
+ txt =<<EOS
15
+
16
+ Wieselburger Gold, 5.0%, 11.8°
17
+ ____________________________________________
18
+ - Zwettler Brauerei|Privatbrauerei Zwettl
19
+
20
+ Zwettler Original, 5.1 %, 11.9°
21
+ Zwettler Export Lager, 5.0 %, 11.8°
22
+
23
+ ______________________________________
24
+ - Brauerei Schwechat (Brau Union)
25
+
26
+ Schwechater, 5.0%, 11.5°, 41.0 kcal/100ml
27
+ Schwechater Zwickl, 5.4%, 12.5°, 45.0 kcal/100ml
28
+
29
+ EOS
30
+
31
+ reader = ValuesReader.new( txt )
32
+
33
+ i = 0
34
+ reader.each_line do |attribs, values|
35
+ i += 1
36
+
37
+ puts "attribs:"
38
+ pp attribs
39
+ puts "values:"
40
+ pp values
41
+
42
+ if i == 1
43
+ assert_equal attribs[:header], nil
44
+ assert_equal attribs[:key], 'wieselburgergold'
45
+ assert_equal attribs[:title], 'Wieselburger Gold'
46
+ elsif i == 2
47
+ assert_equal attribs[:header], 'Zwettler Brauerei|Privatbrauerei Zwettl'
48
+ assert_equal attribs[:key], 'zwettleroriginal'
49
+ assert_equal attribs[:title], 'Zwettler Original'
50
+ elsif i == 3
51
+ assert_equal attribs[:header], 'Zwettler Brauerei|Privatbrauerei Zwettl'
52
+ assert_equal attribs[:key], 'zwettlerexportlager'
53
+ assert_equal attribs[:title], 'Zwettler Export Lager'
54
+ elsif i == 4
55
+ assert_equal attribs[:header], 'Brauerei Schwechat (Brau Union)'
56
+ assert_equal attribs[:key], 'schwechater'
57
+ assert_equal attribs[:title], 'Schwechater'
58
+ elsif i == 5
59
+ assert_equal attribs[:header], 'Brauerei Schwechat (Brau Union)'
60
+ assert_equal attribs[:key], 'schwechaterzwickl'
61
+ assert_equal attribs[:title], 'Schwechater Zwickl'
62
+ else
63
+ assert false # should not get here
64
+ end
65
+ end
66
+
67
+ end # test_header
68
+
69
+
13
70
  def test_escape_comma
14
71
  # note: double espace comma e.g. \\, becomes literal \,
15
72
  txt =<<EOS
@@ -52,7 +109,7 @@ EOS
52
109
  assert_equal values[0], '1845'
53
110
  assert_equal values[1], 'The Griffin Brewery // Chiswick Lane South // London, W4 2QB'
54
111
  else
55
- assert_equal true, false # should not get here
112
+ assert false # should not get here
56
113
  end
57
114
  end
58
115
  end # test_escape_comma
@@ -150,7 +207,7 @@ EOS
150
207
  assert_equal values[1], 'www.egger-bier.at'
151
208
  assert_equal values[2], '3105 Unterradlberg // Tiroler Straße 18'
152
209
  else
153
- assert_equal true, false # should not get here
210
+ assert false # should not get here
154
211
  end
155
212
  end
156
213
  end # test_mixed
@@ -212,7 +269,7 @@ EOS
212
269
  assert_equal values[2], '3910 Zwettl // Syrnauer Straße 22-25'
213
270
  assert_equal values[3], 'brands: Zwettler'
214
271
  else
215
- assert_equal true, false # should not get here
272
+ assert false # should not get here
216
273
  end
217
274
  end
218
275
  end # test_multi_line_records
@@ -247,7 +304,7 @@ EOS
247
304
  elsif i == 2
248
305
  elsif i == 3
249
306
  else
250
- assert_equal true, false # should not get here
307
+ assert false # should not get here
251
308
  end
252
309
  end
253
310
  end # test_classic_csv_records
@@ -302,7 +359,7 @@ EOS
302
359
  assert_equal values[1], '11.8°'
303
360
  assert_equal values[-1], 'bio'
304
361
  else
305
- assert_equal true, false # should not get here
362
+ assert false # should not get here
306
363
  end
307
364
  end
308
365
  end # test_autogen_keys
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: textutils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-22 00:00:00.000000000 Z
12
+ date: 2014-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: logutils
16
- requirement: &20656452 !ruby/object:Gem::Requirement
16
+ requirement: &21298812 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.5'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20656452
24
+ version_requirements: *21298812
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &20655864 !ruby/object:Gem::Requirement
27
+ requirement: &21298416 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '4.0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *20655864
35
+ version_requirements: *21298416
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: hoe
38
- requirement: &20655132 !ruby/object:Gem::Requirement
38
+ requirement: &21297996 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '3.7'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *20655132
46
+ version_requirements: *21297996
47
47
  description: textutils - Text Filters, Helpers, Readers and More
48
48
  email: ruby-talk@ruby-lang.org
49
49
  executables: []