module HasTemplates
HasTemplates
provides methods for a class to contain and query a set of templates
Public Instance Methods
all_template_resources()
click to toggle source
# File lib/geoengineer/utils/has_templates.rb, line 28 def all_template_resources templates.values.map(&:all_resources).flatten end
find_template(type)
click to toggle source
Templating Methods
# File lib/geoengineer/utils/has_templates.rb, line 10 def find_template(type) clazz_name = type.split('_').collect(&:capitalize).join return Object.const_get(clazz_name) if Object.const_defined? clazz_name module_clazz = "GeoEngineer::Templates::#{clazz_name}" return Object.const_get(module_clazz) if Object.const_defined? module_clazz throw "undefined template '#{type}' for '#{clazz_name}' or '#{module_clazz}'" end
from_template(type, name, parameters = {}, &block)
click to toggle source
# File lib/geoengineer/utils/has_templates.rb, line 20 def from_template(type, name, parameters = {}, &block) throw "Template '#{name}' already defined" if templates[name] clazz = find_template(type) template = clazz.new(name, self, parameters) template.instance_exec(*template.template_resources, &block) if block_given? templates[name] = template end
templates()
click to toggle source
# File lib/geoengineer/utils/has_templates.rb, line 5 def templates @_templates ||= {} end