Sha256: 15d08cda8504884465919184a68692aac7036cba340522a1b52729f65726f288
Contents?: true
Size: 1.71 KB
Versions: 1
Compression:
Stored size: 1.71 KB
Contents
# encoding: UTF-8 module Spontaneous::Plugins module Boxes module ClassMethods def box(name, options = {}, &block) name = name.to_sym unless boxes.key?(name) box_prototypes[name] = Spontaneous::Prototypes::BoxPrototype.new(self, name, options, &block) unless method_defined?(name) class_eval <<-BOX def #{name} boxes[:#{name}] end BOX end end end def boxes box_prototypes end def box_prototypes @box_prototypes ||= Spontaneous::Collections::PrototypeSet.new(superclass, :box_prototypes) end def has_boxes? !box_prototypes.empty? end def box_order(*new_order) box_prototypes.order = new_order.flatten end def box?(box_name) box_prototypes.key?(box_name.to_sym) end end module InstanceMethods def reload @boxes = nil super end def boxes(*args) @boxes ||= Spontaneous::Collections::BoxSet.new(self) end def iterable boxes end def box?(box_name) self.class.box?(box_name.to_sym) end def box_data(box) # TODO: use schema id to retrieve box data box_id = box.schema_id.to_s (self.box_store || []).detect { |data| data[:box_id] == box_id } || {} end def box_field_store(box) box_data(box)[:fields] end def box_modified!(modified_box) self.box_store = serialize_boxes end def serialize_boxes boxes.map { |box| box.serialize_db } end def box_style_id(box_name) nil end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
spontaneous-0.1.0.alpha1 | lib/spontaneous/plugins/boxes.rb |