diff --git a/doc/builders.md b/doc/builders.md index 485ecd0..113f050 100644 --- a/doc/builders.md +++ b/doc/builders.md @@ -24,6 +24,7 @@ JavaScript specific builders: Aria Templates specific builders: * [Create an Aria Templates multi-part file](#create-an-aria-templates-multi-part-file-atmultipart-) +* [Create an Aria Templates cache update package file](#create-an-aria-templates-cache-update-package-file-atfillcache-) @@ -139,6 +140,30 @@ where: For the full process, please refer to the `Concat` builder. +# Create an Aria Templates cache update package file: `ATFillCache` + +This builder creates packages which can be used to fill the cache of Aria Templates. It extends the `Concat` builder, so please refer to it as well. +The packages created with this builder can be loaded with a script tag to make some classes available synchronously. + +## Configuration + +There is no extra configuration parameter (only the parameters inherited from `Concat`) + +## Build process + +For each input file, the builder generates a line in the output package with the following format: + +```javascript +aria.core.DownloadMgr.loadFileContent("{path}","{content}"); +``` + +where: + +* `"{path}"` is the "stringified" logical path of the input file, with backslashes replaced by normal slashes +* `"{content}"` is the "stringified" content of the input file + +For the full process, please refer to the `Concat` builder. + # Create custom builders diff --git a/lib/builders/ATFillCache.js b/lib/builders/ATFillCache.js new file mode 100644 index 0000000..3bcfbba --- /dev/null +++ b/lib/builders/ATFillCache.js @@ -0,0 +1,47 @@ +/* + * Copyright 2015 Amadeus s.a.s. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var Concat = require('./Concat'); +var pathSep = /\\/g; + +/** + * This builder creates files in a format which allows the script to be inserted with a script tag and fills the Aria + * Templates cache. + * @param {Object} cfg configuration + */ +var ATFillCache = function (cfg) { + cfg = cfg || {}; + Concat.call(this, cfg); // parent constructor +}; + +// ATFillCache extends Concat: +ATFillCache.prototype = new Concat(); + +/** + * Writes the given input file. It overrides the method from Concat to write calls to + * aria.core.DownloadMgr.loadFileContent. + * @param {Object} outputFile output file + * @param {Object} sourceFile source file + * @param {Array} out array of strings with the content of the file, which will be concatenated to produce the final + * file. + */ +ATFillCache.prototype.writeInputFile = function (outputFile, sourceFile, out) { + outputFile.packaging.callVisitors('onWriteInputFile', [outputFile, sourceFile]); + var content = sourceFile.getTextContent(); + out.push('aria.core.DownloadMgr.loadFileContent(', JSON.stringify(sourceFile.logicalPath.replace(pathSep, '/')), ',', JSON.stringify(content), ');\n'); + sourceFile.clearContent(); // clear files once packaged +}; + +module.exports = ATFillCache;