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/has_summary.rb,
lib/imw/metadata/has_metadata.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, HasMetadata, HasSummary 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
36
37
38
39
# File 'lib/imw/metadata.rb', line 31

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

Instance Attribute Details

#baseIMW::Resource

The resource this metadata 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(obj, options = {}) ⇒ Object



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

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

Instance Method Details

#[](resource) ⇒ Object



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

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

#[]=(resource, metadata) ⇒ Object



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

def []= resource, 
  super(absolute_uri(resource), )
end

#describe?(resource) ⇒ Boolean Also known as: describes?

Returns:

  • (Boolean)


54
55
56
# File 'lib/imw/metadata.rb', line 54

def describe? resource
  self[(absolute_uri(resource))]
end

#description_for(resource) ⇒ Object



59
60
61
62
# File 'lib/imw/metadata.rb', line 59

def description_for resource
  return unless describes?(resource)
  self[resource]['description']
end

#fields_for(resource) ⇒ Object



64
65
66
67
# File 'lib/imw/metadata.rb', line 64

def fields_for resource
  return unless describes?(resource)
  (self[resource]['fields'] || []).map { |f| Metadata::Field.new(f) }
end