Sha256: cd369ac86f56cbb4bdb874f9848b215f8fe35737aa165d9bf930ea996065d948

Contents?: true

Size: 991 Bytes

Versions: 3

Compression:

Stored size: 991 Bytes

Contents

require 'data_provider'

class XsdExplanationProvider
  include DataProvider::Base

  provider_missing do
    raise 'XsdExplanationProvider needs an xsd reader' if (reader = get_data(:xsd_reader)).nil?

    logger.debug "XsdExplanationProvider got provider id: #{missing_provider}"
    item = reader[missing_provider]

    if item.is_a?(XsdReader::Attribute)
      item.type
    elsif item.is_a?(XsdReader::Element) && item.child_elements?
      # return self, the data provider, so the populator can continue with the child elements
      self
    elsif item
      if item.complex_type && item.complex_type.simple_content && item.complex_type.simple_content.extension
        item.complex_type.simple_content.extension.base
      else
        item.type
      end
    else
      logger.warn "XsdExplanationProvider could not find XSD information for provider `#{missing_provider.inspect}` in XSD file `#{reader.options[:xsd_file]}`"
      nil
    end
  end
end # class XsdExplanationProvider

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xsd-populator-0.2.1 lib/xsd_explanation_provider.rb
xsd-populator-0.2.0 lib/xsd_explanation_provider.rb
xsd-populator-0.1.0 lib/xsd_explanation_provider.rb