class Templatable::Core
Constants
- CLASS_TEMPLATE
- TEMPLATABLE_FILE
- TEMPLATABLE_TEMPLATE
Public Instance Methods
execute()
click to toggle source
generate TemplateApplayClass
# File lib/templatable_core.rb, line 62 def execute src = read_dsl dsl = Templatable::Dsl.new dsl.instance_eval src template = get_template dsl methods = get_methods dsl output_src = get_templatable_class_code(dsl.templatable.class_name.camelize, template.chop, methods) File.open(dsl.templatable.output_fullpath, "w:UTF-8") {|f|f.print output_src} end
init()
click to toggle source
generate Templatablefile to current directory.
# File lib/templatable_core.rb, line 57 def init File.open(TEMPLATABLE_FILE, "w") {|f|f.puts TEMPLATABLE_TEMPLATE} end
Private Instance Methods
get_methods(dsl)
click to toggle source
# File lib/templatable_core.rb, line 81 def get_methods(dsl) ret = [] dsl.templatable.placeholders.each do |placeholder| ret << " def manufactured_#{placeholder}" ret << " # TODO: implement your logic" ret << " end" ret << "" end ret.join("\n").chop end
get_templatable_class_code(class_name, template, methods)
click to toggle source
# File lib/templatable_core.rb, line 92 def get_templatable_class_code(class_name, template, methods) erb = ERB.new(CLASS_TEMPLATE) erb.result(binding) end
get_template(dsl)
click to toggle source
# File lib/templatable_core.rb, line 77 def get_template(dsl) dsl.templatable.template.gsub(/<%=/, "<%=placeholders\[:").gsub(/%>/, "\]%>") end
read_dsl()
click to toggle source
# File lib/templatable_core.rb, line 73 def read_dsl File.open(TEMPLATABLE_FILE) {|f|f.read} end