textutils 1.0.1 → 1.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.
- checksums.yaml +4 -4
- data/lib/textutils/reader/values_reader.rb +34 -38
- data/lib/textutils/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5ec47749fc531cb8ffbc71fc152c2a31e53e637
|
4
|
+
data.tar.gz: eb485b1f3e40c1a8653f3a5d19e17a0d30b3079c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 574f8628d2bebd407b0ee4846be97833d840cc734dcccb137d8eb64cdc5b2498a70888e15b22a6f118501dbc8bf1cbf72ed1d01ab0f02d0f186b6bbcf3251d68
|
7
|
+
data.tar.gz: 59f803dc2c934437730986b542e11be3b79d96c563406badd80a5b06c70474d82c282b6565f1cd8f3733867b37385e2bcb1cf06407223b98675ac7bb8c9ae511
|
@@ -113,7 +113,13 @@ class ValuesReader
|
|
113
113
|
## NOTE: for now alternative comment lines not allowed as end of line style e.g
|
114
114
|
## some data, more data -- comment here
|
115
115
|
|
116
|
-
|
116
|
+
######
|
117
|
+
## note:
|
118
|
+
## # comment MUST follow a space or end-of-line e.g.
|
119
|
+
## #1 or #hello or #(hello) or #{hello} is NOT a comment
|
120
|
+
## ###### is however
|
121
|
+
|
122
|
+
if line =~ /^\s*#+(\s|$)/ || # old - simple rule -- /^\s*#/
|
117
123
|
line =~ /^\s*--/ ||
|
118
124
|
line =~ /^\s*%/ ||
|
119
125
|
line =~ /^\s*__/
|
@@ -129,26 +135,31 @@ class ValuesReader
|
|
129
135
|
next
|
130
136
|
end
|
131
137
|
|
132
|
-
### NOTE: skip sections lines (marked w/ at least ==) for now
|
133
|
-
### e.g. === Waldviertel ===
|
134
|
-
if line =~ /^\s*={2,}\s+/
|
135
|
-
logger.debug "skipping section line |»#{line}«|"
|
136
|
-
next
|
137
|
-
end
|
138
|
-
|
139
|
-
|
140
138
|
# pass 1) remove possible trailing eol comment
|
141
139
|
## e.g -> nyc, New York # Sample EOL Comment Here (with or without commas,,,,)
|
142
140
|
## becomes -> nyc, New York
|
141
|
+
#
|
142
|
+
## note - comment must follow a space or end-of-line
|
143
|
+
# #1 or #hello or #{hello} is NOT a comment !!!
|
144
|
+
# note ###### is a comment
|
143
145
|
|
144
|
-
line = line.sub( /\s
|
146
|
+
line = line.sub( /\s+#+(\s.+)?$/, '' )
|
145
147
|
|
146
148
|
# pass 2) remove leading and trailing whitespace
|
147
|
-
|
149
|
+
|
148
150
|
line = line.strip
|
149
151
|
|
150
152
|
|
151
|
-
|
153
|
+
|
154
|
+
|
155
|
+
### NOTE: skip sections lines (marked w/ at least ==) for now
|
156
|
+
### e.g. === Waldviertel ===
|
157
|
+
if line =~ /^\s*={2,}\s+/
|
158
|
+
logger.debug "skipping section line |»#{line}«|"
|
159
|
+
next
|
160
|
+
end
|
161
|
+
|
162
|
+
if line =~ /^-\s+/ # check for group headers (MUST start w/ dash (-) e.g. - St. James Brewery)
|
152
163
|
if values.length > 0 # check if we already processed a record? if yes; yield last record (before reset)
|
153
164
|
attribs, more_values = find_key_n_title( values )
|
154
165
|
attribs = attribs.merge( @more_attribs ) # e.g. merge country_id and other defaults if present
|
@@ -160,14 +171,16 @@ class ValuesReader
|
|
160
171
|
blank_counter = 0
|
161
172
|
|
162
173
|
# update last_header
|
163
|
-
last_header = line.
|
174
|
+
last_header = line.sub( /^-\s+/, '' ) # cut-off leading marker and space
|
164
175
|
logger.info " update group header >#{last_header}<"
|
165
176
|
next
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
177
|
+
end
|
178
|
+
|
179
|
+
|
180
|
+
if line =~ /^\[(.+)\]$/ # note: check for multiline record; MUST start w/ [ and end w/ ]
|
181
|
+
|
182
|
+
value = $1.strip # note: remove (allow) possible leading n trailing spaces
|
183
|
+
|
171
184
|
if values.length > 0 # check if we already processed a record? if yes; yield last record (before reset)
|
172
185
|
attribs, more_values = find_key_n_title( values )
|
173
186
|
attribs = attribs.merge( @more_attribs ) # e.g. merge country_id and other defaults if present
|
@@ -180,9 +193,9 @@ class ValuesReader
|
|
180
193
|
|
181
194
|
# NB: every additional line is one value e.g. city:wien, etc.
|
182
195
|
# allows you to use any chars
|
183
|
-
logger.debug " multi-line record w/
|
196
|
+
logger.debug " start multi-line record w/ »#{value}«"
|
184
197
|
|
185
|
-
values = [
|
198
|
+
values = [value] # add as first value in ary - note: find_key_n_title will check if value is a key or not
|
186
199
|
elsif inside_record && blank_counter == 0 && line =~ /\/{2}/ # check address line (must contain //)
|
187
200
|
values += [line.dup] # assume single value column (no need to escape commas)
|
188
201
|
elsif inside_record && blank_counter == 0 && line =~ /^[a-z][a-z0-9.]*[a-z0-9]:/ # check key: value pair
|
@@ -245,26 +258,9 @@ class ValuesReader
|
|
245
258
|
|
246
259
|
values = values.map { |value| value.strip }
|
247
260
|
|
248
|
-
|
249
|
-
##### todo/fix:
|
250
|
-
# !!!REMOVE!!!
|
251
|
-
# remove support of comment column? (NB: must NOT include commas)
|
252
|
-
# pass 2) remove comment columns
|
253
|
-
#
|
254
|
-
# todo/fix: check if still possible ?? - add an example here how it looks like/works
|
255
|
-
|
256
|
-
values = values.select do |value|
|
257
|
-
if value =~ /^#/ ## start with # treat it as a comment column; e.g. remove it
|
258
|
-
logger.info " removing column with value »#{value}«"
|
259
|
-
false
|
260
|
-
else
|
261
|
-
true
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
261
|
logger.debug " values: |»#{values.join('« »')}«|"
|
266
262
|
values
|
267
263
|
end
|
268
264
|
|
269
265
|
|
270
|
-
end # class ValuesReader
|
266
|
+
end # class ValuesReader
|
data/lib/textutils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: props
|