Sha256: 23e882a4d2c9e459865b24977ec6d37a837bdf755c7e8a3a08f5e17391b11541
Contents?: true
Size: 1.39 KB
Versions: 2
Compression:
Stored size: 1.39 KB
Contents
module XsdModel module Elements class Schema include BaseElement extend AttributeMethods attribute_method 'targetNamespace' def collect_imported_schemas(options = {}) _collect_imported_schemas(self, options) end def _collect_imported_schemas(original_schema, options, already_collected = []) imports = original_schema.imports imports.each do |import| unless already_collected.map { |d| d.target_namespace }.include? import.namespace new_schema = import.load(options) already_collected << new_schema _collect_imported_schemas(new_schema, options, already_collected) end end already_collected end def collect_included_schemas(options = {}) _collect_included_schemas(self, options) end def _collect_included_schemas(original_schema, options, collected_schemas = [], collected_paths = []) includes = original_schema.includes includes.each do |incl| unless collected_paths.include? incl.schema_location new_schema = incl.load(options) collected_schemas << new_schema collected_paths << incl.schema_location _collect_included_schemas(new_schema, options, collected_schemas, collected_paths) end end collected_schemas end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
xsd_model-0.6.0 | lib/xsd_model/elements/schema.rb |
xsd_model-0.5.0 | lib/xsd_model/elements/schema.rb |