Sha256: 7e2b0d4ba4f5b20a3ec87c40552c1b64f9c9a5289a2bda19aa3bd9c4edac6334

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

require 'commonjs'
require 'v8'

module Handlebars
  class Context
    def initialize
      @js = CommonJS::Environment.new V8::Context.new, :path => [
        File.expand_path('../../../vendor/bootstrap', __FILE__),
        File.expand_path('../../../vendor/handlebars/lib', __FILE__)
      ]
      
      # This is a slightly modified version of handlebars.js found in the main
      # distribution. The Ruby commonjs environment does not support full directory
      # requires, so we expand them by hand. Eventually this may be fixed upstream
      # but right now I'm not sure if this is a node-specific extension.

      @js.require('handlebars/base')
      @js.require('handlebars/utils')
      for compiler_module in %w(ast base compiler index parser printer visitor)
        @js.require("handlebars/compiler/#{compiler_module}")
      end
      @js.require('handlebars/runtime')
    end
    
    def compile(*args)
      handlebars.compile(*args)
    end

    def register_helper(name, &fn)
      handlebars.registerHelper(name, fn)
    end

    def handlebars
      @js.require('handlebars/base')
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
handlebars-0.2.2 lib/handlebars/context.rb
handlebars-0.2.1 lib/handlebars/context.rb