Class: SepaFileParser::Xml
- Inherits:
-
Object
- Object
- SepaFileParser::Xml
- Defined in:
- lib/sepa_file_parser/xml.rb
Constant Summary collapse
- PARSER_MAPPING =
{ camt052: SepaFileParser::Camt052::Base, camt053: SepaFileParser::Camt053::Base, camt054: SepaFileParser::Camt054::Base, pain001: SepaFileParser::Pain001::Base, pain002: SepaFileParser::Pain002::Base, pain008: SepaFileParser::Pain008::Base, }.freeze
- SUPPORTED_PARSERS =
PARSER_MAPPING.keys.freeze
Class Method Summary collapse
Class Method Details
.parse(doc) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/sepa_file_parser/xml.rb', line 30 def self.parse(doc) if !doc.is_a?(Nokogiri::XML::Document) raise SepaFileParser::Errors::NotXMLError, doc.class end namespace = doc.namespaces['xmlns'] doc.remove_namespaces! parser_class = @namespace_parsers[namespace] if parser_class == nil raise SepaFileParser::Errors::UnsupportedNamespaceError, namespace end return parser_class.new(doc.xpath('Document')) end |
.register(namespace, parser) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/sepa_file_parser/xml.rb', line 18 def self.register(namespace, parser) if !SUPPORTED_PARSERS.include?(parser) raise SepaFileParser::Errors::UnsupportedParserClass, parser.to_s end if @namespace_parsers.key?(namespace) # Prevent overwriting existing registrations raise SepaFileParser::Errors::NamespaceAlreadyRegistered, namespace end @namespace_parsers[namespace] = PARSER_MAPPING[parser] end |