1 import {createFrame, extend, toString} from './utils';
2 import Exception from './exception';
3 import {registerDefaultHelpers} from './helpers';
4 import {registerDefaultDecorators} from './decorators';
5 import logger from './logger';
7 export const VERSION = '4.0.6';
8 export const COMPILER_REVISION = 7;
10 export const REVISION_CHANGES = {
11 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
15 5: '== 2.0.0-alpha.x',
20 const objectType = '[object Object]';
22 export function HandlebarsEnvironment(helpers, partials, decorators) {
23 this.helpers = helpers || {};
24 this.partials = partials || {};
25 this.decorators = decorators || {};
27 registerDefaultHelpers(this);
28 registerDefaultDecorators(this);
31 HandlebarsEnvironment.prototype = {
32 constructor: HandlebarsEnvironment,
37 registerHelper: function(name, fn) {
38 if (toString.call(name) === objectType) {
39 if (fn) { throw new Exception('Arg not supported with multiple helpers'); }
40 extend(this.helpers, name);
42 this.helpers[name] = fn;
45 unregisterHelper: function(name) {
46 delete this.helpers[name];
49 registerPartial: function(name, partial) {
50 if (toString.call(name) === objectType) {
51 extend(this.partials, name);
53 if (typeof partial === 'undefined') {
54 throw new Exception(`Attempting to register a partial called "${name}" as undefined`);
56 this.partials[name] = partial;
59 unregisterPartial: function(name) {
60 delete this.partials[name];
63 registerDecorator: function(name, fn) {
64 if (toString.call(name) === objectType) {
65 if (fn) { throw new Exception('Arg not supported with multiple decorators'); }
66 extend(this.decorators, name);
68 this.decorators[name] = fn;
71 unregisterDecorator: function(name) {
72 delete this.decorators[name];
76 export let log = logger.log;
78 export {createFrame, logger};