Sha256: 8dcdaf0a488d5c0e7deee0b5f0d0dbf20383a0410bb1a6193447ad026cb1895a

Contents?: true

Size: 1018 Bytes

Versions: 3

Compression:

Stored size: 1018 Bytes

Contents

class Sekken
  class XS
    class SchemaCollection
      include Enumerable

      def initialize
        @schemas = []
      end

      def <<(schema)
        @schemas << schema
      end

      def push(schemas)
        @schemas += schemas
      end

      def each(&block)
        @schemas.each(&block)
      end

      def attribute(namespace, name)
        find_by_namespace(namespace).attributes[name]
      end

      def attribute_group(namespace, name)
        find_by_namespace(namespace).attribute_groups[name]
      end

      def element(namespace, name)
        find_by_namespace(namespace).elements[name]
      end

      def complex_type(namespace, name)
        find_by_namespace(namespace).complex_types[name]
      end

      def simple_type(namespace, name)
        find_by_namespace(namespace).simple_types[name]
      end

      # TODO: store by namespace instead?
      def find_by_namespace(namespace)
        find { |schema| schema.target_namespace == namespace }
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sekken-0.3.0 lib/sekken/xs/schema_collection.rb
sekken-0.2.0 lib/sekken/xs/schema_collection.rb
sekken-0.1.0 lib/sekken/xs/schema_collection.rb