Sha256: c2d9bc2d35969da77aaa76cf527a4c1047828a7e59e01407e9415ecff8b0f9df

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 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::Template.new(self, handlebars.compile(*args))
    end

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

    def register_partial(name, content)
      handlebars.registerPartial(name, content)
    end

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

    class << self
      attr_accessor :current
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
handlebars-0.3.0 lib/handlebars/context.rb