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 return self.resource.classname unless @manifest.engine_resource_extend_column_name
27 self.resource.attributes[@manifest.engine_resource_extend_column_name]
30 # get snake_case engine name
31 # ex) circle_speech_balloon
32 # use to url, model_name generating
34 self.my_engine_resource.resource_items[self.engine_classname]
38 self.engine_name + '_' + @manifest.extend_item_name
42 self.my_engine_resource.resource_items.include? self.class_name
45 # get engine's module name
47 @item.attributes[@manifest.extend_column_name]
51 @item.attributes[@manifest.settings_column_name]
54 # name space for engine
56 Object.const_get self.class_name
60 self.engine_module.constants.include? @manifest.extend_module_name.to_sym
63 # extend module in engine
64 # ex) CircleSpeechBalloon::SpeechBalloonModule
65 def engine_extend_module
66 self.engine_module.const_get @manifest.extend_module_name
69 # extend settings data model in engine
70 # ex) CircleSpeechBalloon::SpeechBalloon
71 def engine_extend_model
72 self.engine_module.const_get @manifest.extend_model_name
76 @item.attributes[@manifest.foreign_key].blank? == false
79 # get system resource instance
81 raise 'blank foreign_key ' + @manifest.name unless self.check_resource
82 r = @item.__send__ @manifest.resource_name
83 raise 'resource not found' + @manifest.resource_name unless r
89 @item.__send__ @manifest.getter_method_name
93 if self.settings.blank?
96 JSON.parse(self.settings)