Sha256: d360591d37f6362f8fe6080d2e4f0a6d6968bbe744448179be376aca7ea455b3

Contents?: true

Size: 854 Bytes

Versions: 1

Compression:

Stored size: 854 Bytes

Contents

require 'tilt' unless defined? Tilt
require 'json' unless defined? JSON

module Tilt
  class MujTemplate < Template
    def initialize_engine
    end

    def prepare
    end

    def evaluate(scope, locals, &block)
      Muj.eval(data,locals.to_json)
    end
  end
  register 'muj', MujTemplate
end

module Muj

  def self.eval(data,json)
    require 'v8' unless defined? ::V8
    cxt = ::V8::Context.new
    cxt.eval('var locals='+json+'; for(var attrname in locals) {this[attrname] = locals[attrname]; }');
    cxt.load(File.dirname(__FILE__)+"/mustache.js")
    cxt.eval(data)
  end

  def self.render(str,locals={})
    self.eval(str,locals.to_json)
  end

  def self.render_with_json(str,json)
    self.eval(str,json)
  end

  def self.render_with_yaml(str,yml)
    require 'yaml' unless defined? YAML
    self.render(str,YAML.load(yml))
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
muj-0.0.1 lib/muj.rb