Sha256: ba6da0b22f8e71a4a2bb0fe54392a388b6256d6b24cc7a018306e987f14da52d

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

require 'tilt'
require 'yaml'

module Ykutils
  module Erubyx
    module_function

    def erubi_render(template_hash, scope, value_hash)
      unless template_hash[:OBJ]
        template_hash[:OBJ] = Tilt::ErubiTemplate.new{ template_hash[:TEMPLATE] }
      end
      template_hash[:OBJ].render( scope, value_hash )
    end

##
# `erubi_render_with_file` takes a template file path, a scope, and a value file path, reads the
# template file, loads the value file, and then calls `erubi_render` with the template hash, scope,
# and value hash
# 
# Args:
#   template_file_path: The path to the template file.
#   scope: the scope of the template. This is the name of the directory that the template is in.
#   value_file_path: The path to the YAML file that contains the values to be used in the template.
    def erubi_render_with_file(template_file_path, scope, value_file_path_array)
      template_text = File.read(template_file_path)
      template_hash = { TEMPLATE: template_text,
                        OBJ: nil
                      }
      value_hash = value_file_path_array.reduce({}){ |hash, path|
        #p path
        hash0 = YAML.load_file(path)
        #p hash0
        hash = hash.merge(hash0)
        #p hash
        hash
      }
      #puts value_hash
      erubi_render(template_hash, scope, value_hash)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ykutils-0.1.4 lib/ykutils/erubyx.rb