Class: AppleData::DSL::DataFileDefinition
- Inherits:
-
Object
- Object
- AppleData::DSL::DataFileDefinition
- Defined in:
- lib/apple_data/dsl/data_file_definition.rb
Overview
The DSL that is used when defining a data file
Instance Attribute Summary collapse
-
#default_filename ⇒ Object
writeonly
Sets the attribute default_filename.
Instance Method Summary collapse
- #build! ⇒ Object
- #collection(collection_name, mapper = nil) ⇒ Object
- #define_method(name, &proc) ⇒ Object
-
#initialize ⇒ DataFileDefinition
constructor
A new instance of DataFileDefinition.
Constructor Details
#initialize ⇒ DataFileDefinition
Returns a new instance of DataFileDefinition.
7 8 9 10 |
# File 'lib/apple_data/dsl/data_file_definition.rb', line 7 def initialize @collections = {} @methods = {} end |
Instance Attribute Details
#default_filename=(value) ⇒ Object (writeonly)
Sets the attribute default_filename
33 34 35 |
# File 'lib/apple_data/dsl/data_file_definition.rb', line 33 def default_filename=(value) @default_filename = value end |
Instance Method Details
#build! ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/apple_data/dsl/data_file_definition.rb', line 35 def build! klass = Class.new(DataFile) klass.const_set(:DEFAULT_FILENAME, @default_filename) klass.const_set(:COLLECTIONS, @collections) @collections.each_value do |collection_definition| collection_definition.build!(klass) end @methods.each do |name, proc| klass.define_method(name, &proc) end klass end |
#collection(collection_name, mapper = nil) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/apple_data/dsl/data_file_definition.rb', line 12 def collection(collection_name, mapper = nil, &) data_collection_name = self.class.name @collections[collection_name] = AppleData::DSL::CollectionDefinition.new(collection_name, mapper) if block_given? && @collections[collection_name].mapper.nil? @collections[collection_name].mapper = Class.new(AppleData::SchemaBase) @collections[collection_name].mapper.const_set(:DATA_COLLECTION_NAME, data_collection_name) @collections[collection_name].mapper.const_set(:COLLECTION_NAME, collection_name) @collections[collection_name].mapper.instance_eval do def name "#{self.class.const_get(:DATA_COLLECTION_NAME)}:#{self.class.const_get(:COLLECTION_NAME)}" end end @collections[collection_name].mapper.class_eval(&) end @collections[collection_name] end |
#define_method(name, &proc) ⇒ Object
29 30 31 |
# File 'lib/apple_data/dsl/data_file_definition.rb', line 29 def define_method(name, &proc) @methods[name] = proc end |