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};