Class: IMW::Metadata

Inherits:
Hash
  • Object
show all
Defined in:
lib/imw/metadata.rb,
lib/imw/metadata/dsl.rb,
lib/imw/metadata/field.rb,
lib/imw/metadata/schema.rb,
lib/imw/metadata/schematized.rb,
lib/imw/metadata/contains_metadata.rb

Overview

A collection of classes for describing the metadata associated with a dataset’s fields.

Defined Under Namespace

Modules: ContainsMetadata, DSL, Schematized Classes: Field, Schema

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Hash

#assoc, #compact, #compact!, #deep_merge, #deep_merge!, #dispatch, #emit, #from_pairs, #keep_merge, #quote_keys_with, #rassoc, #reverse_merge, #reverse_merge!, #slice, #slice!, #terminals, #to_openstruct, zip

Constructor Details

#initialize(obj = nil, options = {}) ⇒ Metadata

Returns a new instance of Metadata.



31
32
33
34
35
# File 'lib/imw/metadata.rb', line 31

def initialize obj=nil, options={}
  super()
  self.base = options[:base] if options[:base]
  obj.each_pair { |resource, schema| self[resource] = Schema.new(schema) } if obj
end

Instance Attribute Details

#baseIMW::Resource

The resource this Schema is anchored to.

This attribute is useful for letting relative paths in a schema file refer to a common base URL.

Returns:



19
20
21
# File 'lib/imw/metadata.rb', line 19

def base
  @base
end

Class Method Details

.load(metadata_resource, options) ⇒ Object



37
38
39
40
# File 'lib/imw/metadata.rb', line 37

def self.load , options
  resource = IMW.open()
  new(resource.load, {:base => resource.dirname}.merge(options))
end

Instance Method Details

#[](resource_spec) ⇒ Object



47
48
49
# File 'lib/imw/metadata.rb', line 47

def [] resource_spec
  super(absolute_uri(resource_spec))
end

#[]=(resource_spec, schema_spec) ⇒ Object



42
43
44
45
# File 'lib/imw/metadata.rb', line 42

def []= resource_spec, schema_spec
  schema = schema_spec.is_a?(Schema) ? schema_spec : Schema.new(schema_spec)
  super(absolute_uri(resource_spec), schema_spec)
end

#describe?(resource_spec) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/imw/metadata.rb', line 51

def describe? resource_spec
  has_key?(absolute_uri(resource_spec))
end