camt_parser 2.3.6 → 2.4.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/camt_parser.rb +1 -0
- data/lib/camt_parser/errors.rb +4 -5
- data/lib/camt_parser/register.rb +13 -0
- data/lib/camt_parser/version.rb +1 -1
- data/lib/camt_parser/xml.rb +28 -10
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ee854a1a9177454ea4abd0fdf594fe85b695b8e
|
4
|
+
data.tar.gz: f92858b851635154a0bbf0469881ee695fbf8de5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fd380768a96dbe8d449ba3378ca07594fc16f9d2f391ea9ca7d52b42aa2dd4d21e0536cee7641fc0430ee849896114d8b6d355c5841ed20bbfee9586239152a
|
7
|
+
data.tar.gz: 9ea12085d65528ce1be9760de4c114b7c9eaddbe8013fbdbfd909d4b80a48436e8847d842ffa377b0dac33faed8b072aab08eadeb2b4842c750729eb33947f74
|
data/lib/camt_parser.rb
CHANGED
data/lib/camt_parser/errors.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
module CamtParser
|
2
2
|
module Errors
|
3
|
-
class
|
4
|
-
end
|
5
|
-
|
6
|
-
class
|
7
|
-
end
|
3
|
+
class NamespaceAlreadyRegistered < StandardError; end
|
4
|
+
class NotXMLError < StandardError; end
|
5
|
+
class UnsupportedParserClass < StandardError; end
|
6
|
+
class UnsupportedNamespaceError < StandardError; end
|
8
7
|
end
|
9
8
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative './xml'
|
2
|
+
|
3
|
+
# Add registrations
|
4
|
+
## CAMT052
|
5
|
+
CamtParser::Xml.register('urn:iso:std:iso:20022:tech:xsd:camt.052.001.02', :camt052)
|
6
|
+
|
7
|
+
## CAMT053
|
8
|
+
CamtParser::Xml.register('urn:iso:std:iso:20022:tech:xsd:camt.053.001.02', :camt053)
|
9
|
+
CamtParser::Xml.register('urn:iso:std:iso:20022:tech:xsd:camt.053.001.04', :camt053)
|
10
|
+
|
11
|
+
## CAMT054
|
12
|
+
CamtParser::Xml.register('urn:iso:std:iso:20022:tech:xsd:camt.054.001.02', :camt054)
|
13
|
+
CamtParser::Xml.register('urn:iso:std:iso:20022:tech:xsd:camt.054.001.04', :camt054)
|
data/lib/camt_parser/version.rb
CHANGED
data/lib/camt_parser/xml.rb
CHANGED
@@ -1,21 +1,39 @@
|
|
1
1
|
module CamtParser
|
2
2
|
class Xml
|
3
|
+
PARSER_MAPPING = {
|
4
|
+
camt052: CamtParser::Format052::Base,
|
5
|
+
camt053: CamtParser::Format053::Base,
|
6
|
+
camt054: CamtParser::Format054::Base
|
7
|
+
}.freeze
|
8
|
+
|
9
|
+
SUPPORTED_PARSERS = PARSER_MAPPING.keys.freeze
|
10
|
+
|
11
|
+
@namespace_parsers = {}
|
12
|
+
|
13
|
+
def self.register(namespace, parser)
|
14
|
+
if !SUPPORTED_PARSERS.include?(parser)
|
15
|
+
raise CamtParser::Errors::UnsupportedParserClass, parser.to_s
|
16
|
+
end
|
17
|
+
|
18
|
+
if @namespace_parsers.key?(namespace) # Prevent overwriting existing registrations
|
19
|
+
raise CamtParser::Errors::NamespaceAlreadyRegistered, namespace
|
20
|
+
end
|
21
|
+
|
22
|
+
@namespace_parsers[namespace] = PARSER_MAPPING[parser]
|
23
|
+
end
|
24
|
+
|
3
25
|
def self.parse(doc)
|
4
26
|
raise CamtParser::Errors::NotXMLError, doc.class unless doc.is_a? Nokogiri::XML::Document
|
5
27
|
|
6
|
-
|
28
|
+
namespace = doc.namespaces['xmlns']
|
7
29
|
doc.remove_namespaces!
|
8
30
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
when 'urn:iso:std:iso:20022:tech:xsd:camt.053.001.02', 'urn:iso:std:iso:20022:tech:xsd:camt.053.001.04'
|
13
|
-
return CamtParser::Format053::Base.new(doc.xpath('Document'))
|
14
|
-
when 'urn:iso:std:iso:20022:tech:xsd:camt.054.001.02', 'urn:iso:std:iso:20022:tech:xsd:camt.054.001.04'
|
15
|
-
return CamtParser::Format054::Base.new(doc.xpath('Document'))
|
16
|
-
else
|
17
|
-
raise CamtParser::Errors::UnsupportedNamespaceError, namespaces
|
31
|
+
parser_class = @namespace_parsers[namespace]
|
32
|
+
if parser_class == nil
|
33
|
+
raise CamtParser::Errors::UnsupportedNamespaceError, namespace
|
18
34
|
end
|
35
|
+
|
36
|
+
return parser_class.new(doc.xpath('Document'))
|
19
37
|
end
|
20
38
|
end
|
21
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: camt_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Schoknecht
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 3.2.2
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec_junit_formatter
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.2.2
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 0.2.2
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: nokogiri
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,6 +95,7 @@ files:
|
|
109
95
|
- lib/camt_parser/general/type/code.rb
|
110
96
|
- lib/camt_parser/general/type/proprietary.rb
|
111
97
|
- lib/camt_parser/misc.rb
|
98
|
+
- lib/camt_parser/register.rb
|
112
99
|
- lib/camt_parser/string.rb
|
113
100
|
- lib/camt_parser/version.rb
|
114
101
|
- lib/camt_parser/xml.rb
|