Module: Peanuts::XML::LibXML

Defined in:
lib/peanuts/xml/libxml.rb

Defined Under Namespace

Classes: Reader, Schema, Writer

Class Method Summary collapse

Class Method Details

.schema(schema_type, source, source_type = :string) ⇒ Object



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/peanuts/xml/libxml.rb', line 186

def self.schema(schema_type, source, source_type = :string)
  schema_class = case schema_type
  when :xml_schema
    ::LibXML::XML::Schema
  when :relax_ng
    ::LibXML::XML::RelaxNG
  else
    raise ArgumentError, "unrecognized schema type #{schema_type}"
  end
  schema = case source_type
  when :string
    schema_class.string(source)
  when :io
    schema_class.string(source.read)
  when :uri
    schema_class.new(source)
  when :document
    schema_class.document(source)
  else
    raise ArgumentError, "unrecognized source type #{source_type}"
  end

  Schema.new(schema_type, schema)
end