class Templatable::Core

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