class WsdlMapper::DomParsing::Parser
Attributes
default_namespace[R]
import_resolver[R]
log_msgs[R]
namespaces[R]
parsers[R]
schema[R]
target_namespace[R]
Public Class Methods
new(import_resolver: nil)
click to toggle source
@param [WsdlMapper::DomParsing::AbstractResolver] import_resolver
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 27 def initialize(import_resolver: nil) @base = self @schema = WsdlMapper::Dom::Schema.new @parsers = { COMPLEX_TYPE => ComplexTypeParser.new(self), ANNOTATION => AnnotationParser.new(self), SIMPLE_TYPE => SimpleTypeParser.new(self), IMPORT => ImportParser.new(self), ELEMENT => ElementParser.new(self), ATTRIBUTE => AttributeParser.new(self) } @import_resolver = import_resolver @namespaces = Namespaces.new @target_namespace = nil @default_namespace = nil @linker = Linker.new schema end
Public Instance Methods
dup()
click to toggle source
@return [WsdlMapper::DomParsing::Parser]
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 64 def dup self.class.new import_resolver: @import_resolver end
parse(doc, parse_only: false)
click to toggle source
@param [Nokogiri::XML::Document] doc @return [WsdlMapper::Dom::Schema]
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 49 def parse(doc, parse_only: false) # Phase 1: Parsing parse_doc doc # Phase 2: Linking unless parse_only @linker.link end collect_logs @schema end
Protected Instance Methods
collect_logs()
click to toggle source
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 69 def collect_logs @log_msgs ||= [] @parsers.values.each do |parser| @log_msgs += parser.log_msgs end @log_msgs += @linker.log_msgs end
get_schema_node(doc)
click to toggle source
@param [Nokogiri::XML::Document] doc
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 111 def get_schema_node(doc) return doc if is_element?(doc) && get_name(doc) == SCHEMA schema_node = first_element doc if schema_node.namespace.nil? || schema_node.namespace.href != NS raise InvalidNsException end unless name_matches? schema_node, SCHEMA raise InvalidRootException end schema_node end
parse_attribute_form_default(node)
click to toggle source
@param [Nokogiri::XML::Node] node
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 95 def parse_attribute_form_default(node) attr = node.attributes[ATTRIBUTE_FORM_DEFAULT] if attr && attr.value == 'qualified' @schema.qualified_attributes = true end end
parse_attributes(schema_node)
click to toggle source
@param [Nokogiri::XML::Node] schema_node
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 88 def parse_attributes(schema_node) @schema.target_namespace = parse_target_namespace schema_node parse_element_form_default schema_node parse_attribute_form_default schema_node end
parse_doc(doc)
click to toggle source
@param [Nokogiri::XML::Document] doc
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 78 def parse_doc(doc) parse_namespaces doc schema_node = get_schema_node doc parse_attributes schema_node each_element schema_node do |node| parse_node node end end
parse_element_form_default(node)
click to toggle source
@param [Nokogiri::XML::Node] node
# File lib/wsdl_mapper/dom_parsing/parser.rb, line 103 def parse_element_form_default(node) attr = node.attributes[ELEMENT_FORM_DEFAULT] if attr && attr.value == 'qualified' @schema.qualified_elements = true end end