rightmove_blm 0.2.2 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3397a4adccadcad8a3879a3590cd6b18ac9c563534a2b70804731402e71a3a5
4
- data.tar.gz: 78b3e9830e9b4959b73016b8f792389c9d04a3aac90a784da349341577c8f214
3
+ metadata.gz: d47e3147eefd5503a6f72579b89a3009c2cd54f12e8103403d320b25f11aa414
4
+ data.tar.gz: 1e74f8d0a87a1ba9896525eec622d4b86612ec4c218807740b3c1a90642bd423
5
5
  SHA512:
6
- metadata.gz: 813c20806d366937146dd7e208284a1c2551963f126fe826172c172b483d0927b8c9c8cd954e9e7c9eaae670cb9218c8380b9034dccf6a39b25efbc184d1eb28
7
- data.tar.gz: 4a525eaf7a4d0d64f432bacb44138a5ce1f68108c03fd57c9133a7dda7f3aea4ac9423109986894ed92ce46685df8601b47da0280285608bff99d5068a5a5a5e
6
+ metadata.gz: '08f19c96d3dc41020b8d1750c3e1863745984128191911c3144319f7cbe884402288a9ef944f0f72c043cb7ce3246d2d87bebbbbdaec340243090aefcc65d0b1'
7
+ data.tar.gz: 1a2f3a7879e88d59ed174d9b9c46905ab8c5280737b17050c04aa20c86d93fdaf0a3cd43a76dca0894a5c2f754ef3671527c3e9ef4163440f965a126ff1bee59
data/README.md CHANGED
@@ -18,6 +18,14 @@ Load a BLM file by passing the `source` parameter to `RightmoveBLM::Document.new
18
18
  blm = RightmoveBLM::Document.new(source: File.read('example_data.blm'))
19
19
  ```
20
20
 
21
+ `RightmoveBLM::Document.new` also receives an optional argument `name` which is recommended for all documents to assist in tracking errors when processing many documents, e.g.:
22
+
23
+ ```ruby
24
+ blm = RightmoveBLM::Document.new(source: File.read('example_data.blm'), name: 'example_data.blm')
25
+ ```
26
+
27
+ This name will be included in all parser error messages.
28
+
21
29
  The returned `RightmoveBLM::Document` instance implements:
22
30
 
23
31
  * `#header` - the header containing information about the document's structure.
@@ -9,15 +9,22 @@ module RightmoveBLM
9
9
  new(header: header, definition: array.first.keys.map(&:to_sym), data: array)
10
10
  end
11
11
 
12
- def initialize(source: nil, header: nil, definition: nil, data: nil)
13
- @source = source
12
+ def initialize(source: nil, header: nil, definition: nil, data: nil, name: nil)
13
+ @source = source || data
14
14
  @header = header
15
15
  @definition = definition
16
+ @name = name
16
17
  initialize_with_data(data) unless data.nil?
17
18
  end
18
19
 
19
- def inspect
20
- %(<##{self.class.name} version=#{version} rows=#{rows.size} valid=#{valid?} errors=#{errors.size}>)
20
+ def inspect(safe: false, error: nil)
21
+ name = @name.nil? ? nil : %( document="#{@name}")
22
+ error_string = error.nil? ? nil : %( error="#{error}")
23
+ basic = %(<##{self.class.name}#{name}#{error_string}>)
24
+ return basic if safe
25
+
26
+ "<##{self.class.name}#{name}#{error_string} version=#{version} " \
27
+ "rows=#{rows.size} valid=#{valid?} errors=#{errors.size}>"
21
28
  end
22
29
 
23
30
  def to_s
@@ -39,7 +46,7 @@ module RightmoveBLM
39
46
  key, _, value = line.partition(':')
40
47
  next nil if value.nil?
41
48
 
42
- [key.strip.downcase.to_sym, value.tr("'", '').strip]
49
+ [normalized_key(key), value.tr("'", '').strip]
43
50
  end.compact.to_h
44
51
  end
45
52
 
@@ -90,10 +97,16 @@ module RightmoveBLM
90
97
  @source[start..finish].strip
91
98
  end
92
99
 
100
+ def normalized_key(key)
101
+ key.strip.downcase.to_sym
102
+ rescue ArgumentError => e
103
+ raise_parser_error "Unable to parse document. Error found in header for key `#{key}`", e
104
+ end
105
+
93
106
  def verify(type, val)
94
107
  return val unless val.nil?
95
108
 
96
- raise ParserError, "Unable to parse document: could not detect #{type} marker."
109
+ raise_parser_error "Unable to parse document: could not detect #{type} marker."
97
110
  end
98
111
 
99
112
  def generated_date
@@ -112,5 +125,9 @@ module RightmoveBLM
112
125
  def data_string
113
126
  ['#DATA#', *data.map { |row| "#{row.attributes.values.join('|')}~" }, '#END#']
114
127
  end
128
+
129
+ def raise_parser_error(message, cause = nil)
130
+ raise ParserError, "#{inspect(safe: true)}: #{message} #{cause}"
131
+ end
115
132
  end
116
133
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RightmoveBLM
4
- VERSION = '0.2.2'
4
+ VERSION = '0.2.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rightmove_blm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Farrell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-12 00:00:00.000000000 Z
11
+ date: 2023-05-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Parse and generate Rightmove BLM files
14
14
  email: git@bob.frl
@@ -52,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  requirements: []
55
- rubygems_version: 3.1.6
55
+ rubygems_version: 3.4.13
56
56
  signing_key:
57
57
  specification_version: 4
58
58
  summary: A parser for the Rightmove .blm format