From 6c655599dd42bb2099b749759c10fc4400d34a6f Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 5 Dec 2013 18:25:47 +0800 Subject: [PATCH] loaded as worker detection and support starting at line 567, detect if running as worker, if so add message listener --- mustache.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/mustache.js b/mustache.js index ef892a1ad..55671c35b 100644 --- a/mustache.js +++ b/mustache.js @@ -564,4 +564,33 @@ mustache.Context = Context; mustache.Writer = Writer; + // Worker bee, conditional load as Worker support + if ( self.WorkerGlobalScope && self instanceof WorkerGlobalScope ) { + var _Partials = {}; + self.addEventListener( 'message', function( evt ) { + var data = evt.data, + t, tokens, template, + result = { }; + + if ( data.clearPartials ) + _Partials = {}; + + if ( ( t = data.partials ) ) + for ( var i in t ) + _Partials[i] = t[i]; + + if ( data.clearCache ) + defaultWriter.clearCache(); + + if ( ( template = data.template ) && ( tokens = defaultWriter.parse( template, data.tags ) ) ) { + if ( ( t = data.view ) ) + result.content = defaultWriter.render( template, t, ( t = data.partials ) === true ? _Partials : t ); + else + result.tokens = tokens; + } + + self.postMessage( result ); + }, false ); +} + }));