Sha256: 337d29ef5367d93bb30fca2bea4fb1504160b7cbedfbd32d6b98d3168904003d

Contents?: true

Size: 1.68 KB

Versions: 4

Compression:

Stored size: 1.68 KB

Contents

require "tilt"
require "yaml"

module Ykxutils
  module Erubyx
    module_function

    def erubi_render(template_hash, scope, value_hash = {})
      template_hash[:OBJ] = Tilt::ErubiTemplate.new { template_hash[:TEMPLATE] } unless template_hash[:OBJ]
      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({}) do |hash, path|
        # p path
        hash0 = YAML.load_file(path)
        # p hash0
        hash = hash.merge(hash0)
        # p hash
        hash
      end
      # puts value_hash
      erubi_render(template_hash, scope, value_hash)
    end

    def erubi_render_with_template_file(template_file_path, scope, value_hash = {})
      template_text = File.read(template_file_path)
      template_hash = make_template_hash(template_text)
      # puts value_hash
      erubi_render(template_hash, scope, value_hash)
    end

    def make_template_hash(text)
      { TEMPLATE: text,
        OBJ: nil }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ykxutils-0.1.14 lib/ykxutils/erubyx.rb
ykxutils-0.1.13 lib/ykxutils/erubyx.rb
ykxutils-0.1.12 lib/ykxutils/erubyx.rb
ykxutils-0.1.11 lib/ykxutils/erubyx.rb