class CIMI::Model::Schema::Collection

Public Class Methods

new(name, opts = {}) click to toggle source
# File lib/cimi/models/schema.rb, line 220
def initialize(name, opts = {})
  params = {}
  params[:scope] = opts.delete(:scope)
  super(name, opts)
  unless opts[:class]
    raise "Specify the class of collection entries using :class"
  end
  params[:embedded] = true
  @collection_class = CIMI::Model::Collection.generate(opts[:class], params)
end

Public Instance Methods

convert(value) click to toggle source

Convert a Hash or Array to an instance of the collection class

# File lib/cimi/models/schema.rb, line 258
def convert(value)
  if value.is_a?(::Array)
    @collection_class.new(:entries => value)
  else
    @collection_class.new(value || {})
  end
end
from_json(json, model) click to toggle source
# File lib/cimi/models/schema.rb, line 235
def from_json(json, model)
  model[name] = @collection_class.schema.from_json(json[json_name], {})
end
from_xml(xml, model) click to toggle source
# File lib/cimi/models/schema.rb, line 231
def from_xml(xml, model)
  model[name] = @collection_class.schema.from_xml(xml[xml_name].first, {})
end
to_json(model, json) click to toggle source
# File lib/cimi/models/schema.rb, line 248
def to_json(model, json)
  model[name].prepare
  if model[name].entries.empty?
    json[json_name] = { "href" => model[name].href }
  else
    json[json_name] = @collection_class.schema.to_json(model[name])
  end
end
to_xml(model, xml) click to toggle source
# File lib/cimi/models/schema.rb, line 239
def to_xml(model, xml)
  model[name].prepare
  if model[name].entries.empty?
    xml[xml_name] = { "href" => model[name].href }
  else
    xml[xml_name] = @collection_class.schema.to_xml(model[name])
  end
end