81 lines
1.9 KiB
JavaScript
81 lines
1.9 KiB
JavaScript
import {createFrame, extend, toString} from './utils';
|
|
import Exception from './exception';
|
|
import {registerDefaultHelpers} from './helpers';
|
|
|
|
export const VERSION = '3.0.1';
|
|
export const COMPILER_REVISION = 6;
|
|
|
|
export const REVISION_CHANGES = {
|
|
1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
|
|
2: '== 1.0.0-rc.3',
|
|
3: '== 1.0.0-rc.4',
|
|
4: '== 1.x.x',
|
|
5: '== 2.0.0-alpha.x',
|
|
6: '>= 2.0.0-beta.1'
|
|
};
|
|
|
|
const objectType = '[object Object]';
|
|
|
|
export function HandlebarsEnvironment(helpers, partials) {
|
|
this.helpers = helpers || {};
|
|
this.partials = partials || {};
|
|
|
|
registerDefaultHelpers(this);
|
|
}
|
|
|
|
HandlebarsEnvironment.prototype = {
|
|
constructor: HandlebarsEnvironment,
|
|
|
|
logger: logger,
|
|
log: log,
|
|
|
|
registerHelper: function(name, fn) {
|
|
if (toString.call(name) === objectType) {
|
|
if (fn) { throw new Exception('Arg not supported with multiple helpers'); }
|
|
extend(this.helpers, name);
|
|
} else {
|
|
this.helpers[name] = fn;
|
|
}
|
|
},
|
|
unregisterHelper: function(name) {
|
|
delete this.helpers[name];
|
|
},
|
|
|
|
registerPartial: function(name, partial) {
|
|
if (toString.call(name) === objectType) {
|
|
extend(this.partials, name);
|
|
} else {
|
|
if (typeof partial === 'undefined') {
|
|
throw new Exception('Attempting to register a partial as undefined');
|
|
}
|
|
this.partials[name] = partial;
|
|
}
|
|
},
|
|
unregisterPartial: function(name) {
|
|
delete this.partials[name];
|
|
}
|
|
};
|
|
|
|
export let logger = {
|
|
methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' },
|
|
|
|
// State enum
|
|
DEBUG: 0,
|
|
INFO: 1,
|
|
WARN: 2,
|
|
ERROR: 3,
|
|
level: 1,
|
|
|
|
// Can be overridden in the host environment
|
|
log: function(level, message) {
|
|
if (typeof console !== 'undefined' && logger.level <= level) {
|
|
let method = logger.methodMap[level];
|
|
(console[method] || console.log).call(console, message); // eslint-disable-line no-console
|
|
}
|
|
}
|
|
};
|
|
|
|
export let log = logger.log;
|
|
|
|
export {createFrame};
|