class MyData::Xsd::Element
Attributes
element[R]
namespace[R]
Public Class Methods
new(element, namespace: nil, force_collection: nil)
click to toggle source
# File lib/my_data/xsd/element.rb, line 6 def initialize(element, namespace: nil, force_collection: nil) @element = element @namespace = namespace force_collection && @collection = force_collection end
Public Instance Methods
collection?()
click to toggle source
# File lib/my_data/xsd/element.rb, line 28 def collection? return @collection if defined? @collection @collection = element.to_s.include? "maxOccurs" end
collection_element_name()
click to toggle source
# File lib/my_data/xsd/element.rb, line 34 def collection_element_name return @collection_element_name if defined? @collection_element_name @collection_element_name = if collection? nested_element = element.at_xpath(".//xs:element") nested_element ? nested_element.attributes["name"].value : nil end end
inspect()
click to toggle source
# File lib/my_data/xsd/element.rb, line 48 def inspect "Element: { name: #{name.to_json}, type: #{type.to_json}, collection: #{collection?} }" end
name()
click to toggle source
# File lib/my_data/xsd/element.rb, line 12 def name @name ||= element.attributes["name"].value end
required?()
click to toggle source
# File lib/my_data/xsd/element.rb, line 44 def required? element.attributes["minOccurs"]&.value != "0" end
type()
click to toggle source
# File lib/my_data/xsd/element.rb, line 16 def type @type = begin extracted_type = element.attributes["type"] || element.at_xpath(".//xs:element[@type]")&.attributes.try(:[], "type") || element.at_xpath(".//xs:restriction[@base]")&.attributes.try(:[], "base") camelize_type(extracted_type.value) end end
Private Instance Methods
camelize_type(extracted_type)
click to toggle source
# File lib/my_data/xsd/element.rb, line 54 def camelize_type(extracted_type) return extracted_type if extracted_type.starts_with?("xs:") ns, name = extracted_type.include?(":") ? extracted_type.split(":") : [nil, extracted_type] [ns, name.camelize].compact.join(":") end