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 +4 -4
- data/bin/console +1 -1
- data/lib/ubl2_cii/converter.rb +2 -0
- data/lib/ubl2_cii/document.rb +8 -3
- data/lib/ubl2_cii/mapper.rb +5 -3
- data/lib/ubl2_cii/version.rb +1 -1
- metadata +2 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87fac9a1267abda0c916dd626256513c7ef8e3a3755a9e548c88d644429c7717
|
4
|
+
data.tar.gz: 0c95c1e20d9617f1c0c8798f727e93f5521ff1fdf9bf7e706fb2f03d6ec380c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 181026d7c19f49c8c87bcfd1ec515be11ae52759d2223438ea689d647416e2604d29e1ab9130c1acf21df8f81160479025e44b3f382d9d47e8fa42003173b48d
|
7
|
+
data.tar.gz: 0fafd965a5ff0eca6ad3da332514df0b2e223f0dde3c6956258467d90c3be096a5bed9833caa39201e4a7541ec2ff069c6c9102a43750bb56a0a15b51f59b697
|
data/bin/console
CHANGED
data/lib/ubl2_cii/converter.rb
CHANGED
@@ -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
|
|
data/lib/ubl2_cii/document.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/ubl2_cii/mapper.rb
CHANGED
@@ -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]
|
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
|
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
|
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
|
data/lib/ubl2_cii/version.rb
CHANGED
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.
|
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-
|
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
|