ubl2cii 0.1.0 → 0.1.1

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: 68bc2e8c31e1a17603f44aa80f368556abde55d3effc219bb24ee5d1b5bebb0e
4
- data.tar.gz: '0884d09700c2272b8dc9b6f6d3fc8343af8bb149f37460cc305a2ea20b189831'
3
+ metadata.gz: 87fac9a1267abda0c916dd626256513c7ef8e3a3755a9e548c88d644429c7717
4
+ data.tar.gz: 0c95c1e20d9617f1c0c8798f727e93f5521ff1fdf9bf7e706fb2f03d6ec380c4
5
5
  SHA512:
6
- metadata.gz: 99b41bd3a25d7f2fea9c4eea8ee2e3997e543d95174ed32ae9d2af94d27d6fcc4608e7efb9830f6234247631d9efeabfad5be8c5a973b13b09ed2cfcec68d328
7
- data.tar.gz: ab99056e35f4a08a71eeea02f4a00d0227564ab844fd6ce0c0362f05cc6f2309923011dfcad1e95165368750b0c74592401c9c7acc00852a3ec96b90a0e242ce
6
+ metadata.gz: 181026d7c19f49c8c87bcfd1ec515be11ae52759d2223438ea689d647416e2604d29e1ab9130c1acf21df8f81160479025e44b3f382d9d47e8fa42003173b48d
7
+ data.tar.gz: 0fafd965a5ff0eca6ad3da332514df0b2e223f0dde3c6956258467d90c3be096a5bed9833caa39201e4a7541ec2ff069c6c9102a43750bb56a0a15b51f59b697
data/bin/console CHANGED
@@ -9,7 +9,7 @@ ubl_file_path = gets.chomp
9
9
 
10
10
  ubl_xml = File.read(ubl_file_path)
11
11
  converter = Ubl2Cii::Converter.new(ubl_xml)
12
- cii_xml = converter.convert
12
+ cii_xml = converter.convert_to_cii
13
13
 
14
14
  puts "Converted CII XML content:"
15
15
  puts cii_xml
@@ -23,6 +23,7 @@ module Ubl2Cii
23
23
 
24
24
  def clean_empty_elements(node)
25
25
  pending = node.children.to_a
26
+ # rubocop:disable Lint/AssignmentInCondition
26
27
  while element = pending.pop
27
28
  pending.concat(element.children.to_a)
28
29
 
@@ -30,6 +31,7 @@ module Ubl2Cii
30
31
 
31
32
  element.remove if element.children.empty? && element.attributes.empty?
32
33
  end
34
+ # rubocop:enable Lint/AssignmentInCondition
33
35
  node
34
36
  end
35
37
 
@@ -7,7 +7,10 @@ module Ubl2Cii
7
7
  attr_reader :node, :namespaces
8
8
 
9
9
  def initialize(xml)
10
- @doc = Nokogiri::XML(xml, nil, OUTPUT_ENCODING)
10
+ @doc = Nokogiri::XML(xml, nil, OUTPUT_ENCODING) do |config|
11
+ config.noblanks # Remove blank nodes
12
+ config.recover # Try to parse even if there are errors
13
+ end
11
14
  @node = @doc
12
15
  @namespaces = {
13
16
  PREFIX_RSM => NAMESPACE_RSM,
@@ -16,6 +19,8 @@ module Ubl2Cii
16
19
  PREFIX_CBC => NAMESPACE_CBC,
17
20
  PREFIX_CAC => NAMESPACE_CAC
18
21
  }
22
+
23
+ raise ArgumentError, "Invalid XML: Document is empty" if @doc.root.nil?
19
24
  end
20
25
 
21
26
  def xpath(path, multiple: false)
@@ -28,7 +33,7 @@ module Ubl2Cii
28
33
  end
29
34
  end
30
35
 
31
- alias_method :at_xpath, :xpath
36
+ alias at_xpath xpath
32
37
 
33
38
  def content_at(path)
34
39
  xpath(path)&.content
@@ -45,7 +50,7 @@ module Ubl2Cii
45
50
  def self.new_from_node(node, namespaces)
46
51
  doc = Document.allocate
47
52
  doc.instance_variable_set(:@node, node)
48
- doc.instance_variable_set(:@doc, node)
53
+ doc.instance_variable_set(:@doc, node&.document || node)
49
54
  doc.instance_variable_set(:@namespaces, namespaces)
50
55
  doc
51
56
  end
@@ -53,7 +53,7 @@ module Ubl2Cii
53
53
  def build_attributes(document, element_def)
54
54
  attributes = {}
55
55
  if element_def[:source_properties]
56
- attributes.merge!(handle_properties(element_def[:source_properties], element_def[:source], document))
56
+ attributes.merge!(handle_properties(element_def[:source_properties], document, element_def[:source]))
57
57
  end
58
58
  attributes.merge!(handle_properties(element_def[:properties], document)) if element_def[:properties]
59
59
  attributes
@@ -72,7 +72,7 @@ module Ubl2Cii
72
72
  xml[prefix].send(element_def[:name], value, attributes)
73
73
  end
74
74
 
75
- def handle_properties(properties, source = nil, document)
75
+ def handle_properties(properties, document, source=nil)
76
76
  resolved_properties = {}
77
77
  properties.each do |key, value|
78
78
  resolved_properties[key] = if value.is_a?(Proc)
@@ -91,7 +91,7 @@ module Ubl2Cii
91
91
  when 'DateTimeString'
92
92
  date_value = begin
93
93
  DateTime.parse(value)
94
- rescue StandardError
94
+ rescue ArgumentError
95
95
  nil
96
96
  end
97
97
  date_value&.strftime('%Y%m%d')
@@ -141,6 +141,7 @@ module Ubl2Cii
141
141
  class NestedMapping < Dsl
142
142
  end
143
143
 
144
+ # rubocop:disable Metrics/BlockLength
144
145
  class Cii < Dsl
145
146
  element 'ExchangedDocumentContext', prefix: PREFIX_RSM do
146
147
  element 'GuidelineSpecifiedDocumentContextParameter', prefix: PREFIX_RAM do
@@ -390,5 +391,6 @@ prefix: PREFIX_UDT
390
391
  end
391
392
  end
392
393
  end
394
+ # rubocop:enable Metrics/BlockLength
393
395
  end
394
396
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ubl2Cii
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ubl2cii
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wolfgang Fournes
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-26 00:00:00.000000000 Z
10
+ date: 2025-05-26 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: nokogiri
@@ -23,62 +23,6 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '1.18'
26
- - !ruby/object:Gem::Dependency
27
- name: bundler
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '2.0'
33
- type: :development
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '2.0'
40
- - !ruby/object:Gem::Dependency
41
- name: pry
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- type: :development
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- - !ruby/object:Gem::Dependency
55
- name: rake
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '13.0'
61
- type: :development
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '13.0'
68
- - !ruby/object:Gem::Dependency
69
- name: rspec
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '3.0'
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '3.0'
82
26
  description: This Gem provides a simple way to convert UBL XML files to CII XML files.
83
27
  email:
84
28
  - w.wohanka@gmail.com