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 def engine_resource_name
17 @manifest.engine_resource_name || self.resource.table_name
20 # get engine resource from system resource manifest
21 def my_engine_resource
22 Manifest.manifest.system_resources.engine_resources[self.engine_resource_name]
26 @item.attributes[@manifest.extend_column_name]
29 # get snake_case engine name
30 # ex) circle_speech_balloon
31 # use to url, model_name generating
33 self.my_engine_resource.resource_items[self.engine_classname]
37 self.engine_name + '_' + @manifest.extend_item_name
41 self.my_engine_resource.resource_items.include? self.class_name
44 # get engine's module name
46 @item.attributes[@manifest.extend_column_name]
50 @item.attributes[@manifest.settings_column_name]
53 # name space for engine
55 Object.const_get self.class_name
59 self.engine_module.constants.include? @manifest.extend_module_name.to_sym
62 # extend module in engine
63 # ex) CircleSpeechBalloon::SpeechBalloonModule
64 def engine_extend_module
65 self.engine_module.const_get @manifest.extend_module_name
68 # extend settings data model in engine
69 # ex) CircleSpeechBalloon::SpeechBalloon
70 def engine_extend_model
71 self.engine_module.const_get @manifest.extend_model_name
75 @item.attributes[@manifest.foreign_key].blank? == false
78 # get system resource instance
80 Manifest.manifest.models[@manifest.resource_name].classify
85 @item.__send__ @manifest.getter_method_name
89 if self.settings.blank?
92 JSON.parse(self.settings)