Skip to content

Commit

Permalink
Adding the ATFillCache builder.
Browse files Browse the repository at this point in the history
  • Loading branch information
divdavem committed Feb 19, 2015
1 parent d7d3201 commit 9fe83ae
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
25 changes: 25 additions & 0 deletions doc/builders.md
Original file line number Diff line number Diff line change
Expand Up @@ -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-)



Expand Down Expand Up @@ -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

Expand Down
47 changes: 47 additions & 0 deletions lib/builders/ATFillCache.js
Original file line number Diff line number Diff line change
@@ -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;

0 comments on commit 9fe83ae

Please sign in to comment.