rightmove_blm 0.2.3 → 0.2.6

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: d47e3147eefd5503a6f72579b89a3009c2cd54f12e8103403d320b25f11aa414
4
- data.tar.gz: 1e74f8d0a87a1ba9896525eec622d4b86612ec4c218807740b3c1a90642bd423
3
+ metadata.gz: 27c31f1462ef7ed1cb02253396803510703b7a3f2d14678dd359bd002ff1f113
4
+ data.tar.gz: 2c08d19df9a78f7ceae30a97dbd2be7dba9e6e8d3636779d1cdc3e6db14e75bc
5
5
  SHA512:
6
- metadata.gz: '08f19c96d3dc41020b8d1750c3e1863745984128191911c3144319f7cbe884402288a9ef944f0f72c043cb7ce3246d2d87bebbbbdaec340243090aefcc65d0b1'
7
- data.tar.gz: 1a2f3a7879e88d59ed174d9b9c46905ab8c5280737b17050c04aa20c86d93fdaf0a3cd43a76dca0894a5c2f754ef3671527c3e9ef4163440f965a126ff1bee59
6
+ metadata.gz: b599bc06336d93a1102b5276debb05eb285599f4169dae7fa744070c362e637107221e18a31346af2b6971314f0f1120f095627869a7ac90806023fc129b0922
7
+ data.tar.gz: e1c457877d3163e5b19d2570eab8d07190936cce9132c1588e5f4d8447065e45456c801df245fe8bee3d26142a585bf076e209526930fac0133d496b88f7828d
@@ -2,7 +2,9 @@
2
2
 
3
3
  module RightmoveBLM
4
4
  # A BLM document including its header, definition, and data content.
5
- class Document
5
+ class Document # rubocop:disable Metrics/ClassLength
6
+ BLM_4_FILE_KEYWORDS = %w[HEADER VERSION EOF EOR DEFINITION DATA END].freeze
7
+
6
8
  def self.from_array_of_hashes(array)
7
9
  date = Time.now.utc.strftime('%d-%b-%Y %H:%M').upcase
8
10
  header = { version: '3', eof: '^', eor: '~', 'property count': array.size.to_s, 'generated date': date }
@@ -15,6 +17,7 @@ module RightmoveBLM
15
17
  @definition = definition
16
18
  @name = name
17
19
  initialize_with_data(data) unless data.nil?
20
+ verify_source_file_structure(source) unless source.nil?
18
21
  end
19
22
 
20
23
  def inspect(safe: false, error: nil)
@@ -92,9 +95,11 @@ module RightmoveBLM
92
95
 
93
96
  def contents(section = :data)
94
97
  marker = "##{section.to_s.upcase}#"
95
- start = verify(:start, @source.index(marker)) + marker.size
96
- finish = verify(:end, @source.index('#END#', start)) - 1
98
+ start = verify_marker_presence(:start, @source.index(marker)) + marker.size
99
+ finish = verify_marker_presence(:end, @source.index('#END#', start)) - 1
97
100
  @source[start..finish].strip
101
+ rescue Encoding::CompatibilityError => e
102
+ raise_parser_error 'Unable to parse document due to encoding error.', e
98
103
  end
99
104
 
100
105
  def normalized_key(key)
@@ -103,12 +108,22 @@ module RightmoveBLM
103
108
  raise_parser_error "Unable to parse document. Error found in header for key `#{key}`", e
104
109
  end
105
110
 
106
- def verify(type, val)
111
+ # INFO : for reverse compatibility. can remove this method and it's calls within this update.
112
+ # verify_file_structure should cover all cases of this method calls
113
+ def verify_marker_presence(type, val)
107
114
  return val unless val.nil?
108
115
 
109
116
  raise_parser_error "Unable to parse document: could not detect #{type} marker."
110
117
  end
111
118
 
119
+ def verify_source_file_structure(source)
120
+ BLM_4_FILE_KEYWORDS.each do |keyword|
121
+ next if source.index(keyword)
122
+
123
+ raise_parser_error "Unable to process document with this structure: could not detect #{keyword} marker."
124
+ end
125
+ end
126
+
112
127
  def generated_date
113
128
  header[:'generated date'] || Time.now.utc.strftime('%d-%b-%Y %H:%M').upcase
114
129
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RightmoveBLM
4
- VERSION = '0.2.3'
4
+ VERSION = '0.2.6'
5
5
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
 
11
11
  spec.summary
12
12
  spec.description = 'Parse and generate Rightmove BLM files'
13
- spec.required_ruby_version = '>= 2.7'
13
+ spec.required_ruby_version = '>= 2.7.1'
14
14
 
15
15
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
16
16
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
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.3
4
+ version: 0.2.6
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-26 00:00:00.000000000 Z
11
+ date: 2024-01-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Parse and generate Rightmove BLM files
14
14
  email: git@bob.frl
@@ -45,7 +45,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '2.7'
48
+ version: 2.7.1
49
49
  required_rubygems_version: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="