Skip to content

Commit

Permalink
Merge ca84dc1 into de15d74
Browse files Browse the repository at this point in the history
  • Loading branch information
tormozz48 committed Jun 8, 2015
2 parents de15d74 + ca84dc1 commit ae712f5
Show file tree
Hide file tree
Showing 6 changed files with 808 additions and 390 deletions.
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ npm install --save-dev enb-bem-i18n

* [i18n-keysets-xml](#i18n-keysets-xml)
* [i18n-lang-js](#i18n-lang-js)
* [i18n-merge-keysets](#i18n-merge-keysets)
* [keysets](#keysets)
* [i18n-bemjson-to-html](#i18n-bemjson-to-html)

### i18n-lang-js
Expand All @@ -48,7 +48,7 @@ nodeConfig.addTechs([
]);
```

### i18n-merge-keysets
### keysets

Собирает `?.keysets.<язык>.js`-файлы на основе `*.i18n`-папок для указанных языков.

Expand All @@ -61,8 +61,7 @@ nodeConfig.addTechs([

```javascript
nodeConfig.addTechs([
[ require('enb-bem-i18n/techs/i18n-merge-keysets'), { lang: 'all' } ],
[ require('enb-bem-i18n/techs/i18n-merge-keysets'), { lang: '{lang}' } ]
[ require('enb-bem-i18n/techs/keysets'), { lang: '{lang}' } ]
]);
```

Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@
},
"dependencies": {
"dom-js": "0.0.9",
"vow": "0.4.9"
"vow": "0.4.9",
"serialize-javascript": "1.0.0"
},
"devDependencies": {
"enb": ">= 0.11.0 < 1.0.0",
Expand Down
83 changes: 0 additions & 83 deletions techs/i18n-merge-keysets.js

This file was deleted.

93 changes: 93 additions & 0 deletions techs/keysets.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/**
* keysets
* ==================
*
* Собирает `?.keysets.<язык>.js`-файлы на основе `*.i18n`-папок для указанных языков.
*
* **Опции**
*
* * *String* **target** — Результирующий таргет. По умолчанию — `?.keysets.{lang}.js`.
* * *String* **lang** — Язык, для которого небходимо собрать файл.
*
* **Пример**
*
* ```javascript
* nodeConfig.addTechs([
* [ require('enb-bem-i18n/techs/keysets'), { lang: '{lang}' } ]
* ]);
* ```
*/

var path = require('path'),
format = require('util').format,
vow = require('vow'),
serialize = require('serialize-javascript'),
asyncRequire = require('enb/lib/fs/async-require'),
dropRequireCache = require('enb/lib/fs/drop-require-cache');

module.exports = require('enb/lib/build-flow.js').create()
.name('i18n-merge-keysets')
.target('target', '?.keysets.{lang}.js')
.defineRequiredOption('lang')
.useFileList(['i18n.js'])
.useDirList(['i18n'])
.builder(function (i18nFiles, i18nDirs) {
var node = this.node,
cache = node.getNodeCache(this._target),
lang = this._lang,
langname = lang + '.js',
result = {},
files = [].concat(i18nFiles).concat(i18nDirs
.reduce(function (prev, dir) {
return prev.concat(dir.files);
}, [])
.filter(function (file) {
return [langname, 'all.js'].indexOf(file.name) > -1;
})
.sort(function (file1, file2) {
if (file1.suffix === 'all.js') {
return -1;
}
if (file2.suffix === 'all.js') {
return 1;
}
return 0;
})
);

return vow.all(files.map(function (file) {
var promise,
filename = file.fullname,
cacheKey = (function (f) {
var relative = path.relative(process.cwd(), f);
return format('keyset-file-%s', relative);
})(filename);

if (cache.needRebuildFile(cacheKey, filename)) {
dropRequireCache(require, filename);
promise = asyncRequire(filename)
.then(function (keysets) {
cache.cacheFileInfo(cacheKey, filename);
return keysets;
});
} else {
promise = asyncRequire(filename);
}

return promise
.then(function (keysets) {
Object.keys(keysets).forEach(function (scope) {
var keyset = keysets[scope];

result[scope] || (result[scope] = {});
Object.keys(keyset).forEach(function (name) {
result[scope][name] = keyset[name];
});
});
});
}))
.then(function () {
return 'module.exports = ' + serialize(result) + ';';
});
})
.createTech();
Loading

0 comments on commit ae712f5

Please sign in to comment.