5 def initialize manifest, item
9 # return false unless self.resource.enable?
11 @item.extend self.engine_extend_module
12 @item.__send__ @manifest.setter_method_name, self.parsed_settings
16 # get engine resource from system resource manifest
17 def my_engine_resource
18 Manifest.manifest.system_resources.engine_resources[@item.table_name]
21 # get snake_case engine name
22 # ex) circle_speech_balloon
23 # use to url, model_name generating
25 self.my_engine_resource.resource_items[@item.classname]
29 self.engine_name + '_' + @manifest.extend_item_name
33 self.my_engine_resource.resource_items.include? @item.classname
36 # get engine's module name
38 @item.attributes[@manifest.extend_column_name]
42 @item.attributes[@manifest.settings_column_name]
45 # name space for engine
47 Object.const_get self.class_name
51 self.engine_module.constants.include? @manifest.extend_module_name.to_sym
54 # extend module in engine
55 # ex) CircleSpeechBalloon::SpeechBalloonModule
56 def engine_extend_module
57 self.engine_module.const_get @manifest.extend_module_name
60 # extend settings data model in engine
61 # ex) CircleSpeechBalloon::SpeechBalloon
62 def engine_extend_model
63 self.engine_module.const_get @manifest.extend_model_name
67 @item.attributes[@manifest.foreign_key].blank? == false
70 # get system resource instance
72 raise 'blank foreign_key ' + @manifest.name unless self.check_resource
73 r = @item.__send__ @manifest.resource_name
74 raise 'resource not found' + @manifest.resource_name unless r
80 @item.__send__ @manifest.getter_method_name
84 if self.settings.blank?
87 JSON.parse(self.settings)