diff options
Diffstat (limited to 'ext/js/templates/template-renderer.js')
-rw-r--r-- | ext/js/templates/template-renderer.js | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/ext/js/templates/template-renderer.js b/ext/js/templates/template-renderer.js index f72740d5..a7a4a842 100644 --- a/ext/js/templates/template-renderer.js +++ b/ext/js/templates/template-renderer.js @@ -29,8 +29,8 @@ class TemplateRenderer { this._dataTypes = new Map(); } - registerDataType(name, {modifier=null, modifierPost=null}) { - this._dataTypes.set(name, {modifier, modifierPost}); + registerDataType(name, {modifier=null}) { + this._dataTypes.set(name, {modifier}); } async render(template, data, type) { @@ -47,32 +47,38 @@ class TemplateRenderer { cache.set(template, instance); } - let modifier = null; - let modifierPost = null; - if (typeof type === 'string') { - const typeInfo = this._dataTypes.get(type); - if (typeof typeInfo !== 'undefined') { - ({modifier, modifierPost} = typeInfo); - } - } - try { - if (typeof modifier === 'function') { - data = modifier(data); - } - + data = this._getModifiedData(data, type); this._stateStack = [new Map()]; return instance(data).trim(); } finally { this._stateStack = null; + } + } - if (typeof modifierPost === 'function') { - modifierPost(data); + async getModifiedData(data, type) { + return this._getModifiedData(data, type); + } + + // Private + + _getModifier(type) { + if (typeof type === 'string') { + const typeInfo = this._dataTypes.get(type); + if (typeof typeInfo !== 'undefined') { + return typeInfo.modifier; } } + return null; } - // Private + _getModifiedData(data, type) { + const modifier = this._getModifier(type); + if (typeof modifier === 'function') { + data = modifier(data); + } + return data; + } _updateCacheSize(maxSize) { const cache = this._cache; |