### 1.0.0 (2020-12-13)

* (bluefox) added the support of compact mode
This commit is contained in:
GermanBluefox
2020-12-13 17:50:27 +01:00
parent 09436c0929
commit d7adbddcc0
14 changed files with 658 additions and 407 deletions
+88 -86
View File
@@ -1,10 +1,10 @@
'use strict';
var gulp = require('gulp');
var fs = require('fs');
var pkg = require('./package.json');
var iopackage = require('./io-package.json');
var version = (pkg && pkg.version) ? pkg.version : iopackage.common.version;
const gulp = require('gulp');
const fs = require('fs');
const pkg = require('./package.json');
const iopackage = require('./io-package.json');
const version = (pkg && pkg.version) ? pkg.version : iopackage.common.version;
/*var appName = getAppName();
function getAppName() {
@@ -13,7 +13,7 @@ function getAppName() {
}
*/
const fileName = 'words.js';
var languages = {
let languages = {
en: {},
de: {},
ru: {},
@@ -22,24 +22,27 @@ var languages = {
fr: {},
it: {},
es: {},
pl: {}
pl: {},
'zh-cn': {}
};
function lang2data(lang, isFlat) {
var str = isFlat ? '' : '{\n';
var count = 0;
for (var w in lang) {
let str = isFlat ? '' : '{\n';
let count = 0;
for (const w in lang) {
if (lang.hasOwnProperty(w)) {
count++;
if (isFlat) {
str += (lang[w] === '' ? (isFlat[w] || w) : lang[w]) + '\n';
} else {
var key = ' "' + w.replace(/"/g, '\\"') + '": ';
const key = ' "' + w.replace(/"/g, '\\"') + '": ';
str += key + '"' + lang[w].replace(/"/g, '\\"') + '",\n';
}
}
}
if (!count) return isFlat ? '' : '{\n}';
if (!count) {
return isFlat ? '' : '{\n}';
}
if (isFlat) {
return str;
} else {
@@ -49,15 +52,15 @@ function lang2data(lang, isFlat) {
function readWordJs(src) {
try {
var words;
let words;
if (fs.existsSync(src + 'js/' + fileName)) {
words = fs.readFileSync(src + 'js/' + fileName).toString();
} else {
words = fs.readFileSync(src + fileName).toString();
}
var lines = words.split(/\r\n|\r|\n/g);
var i = 0;
const lines = words.split(/\r\n|\r|\n/g);
let i = 0;
while (!lines[i].match(/^systemDictionary = {/)) {
i++;
}
@@ -75,7 +78,7 @@ function readWordJs(src) {
lines[0] = lines[0].replace('systemDictionary = ', '');
lines[lines.length - 1] = lines[lines.length - 1].trim().replace(/};$/, '}');
words = lines.join('\n');
var resultFunc = new Function('return ' + words + ';');
const resultFunc = new Function('return ' + words + ';');
return resultFunc();
} catch (e) {
@@ -86,16 +89,16 @@ function padRight(text, totalLength) {
return text + (text.length < totalLength ? new Array(totalLength - text.length).join(' ') : '');
}
function writeWordJs(data, src) {
var text = '// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n\n';
let text = '// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n\n';
text += '/*global systemDictionary:true */\n';
text += '\'use strict\';\n\n';
text += 'systemDictionary = {\n';
for (var word in data) {
for (const word in data) {
if (data.hasOwnProperty(word)) {
text += ' ' + padRight('"' + word.replace(/"/g, '\\"') + '": {', 50);
var line = '';
for (var lang in data[word]) {
let line = '';
for (const lang in data[word]) {
if (data[word].hasOwnProperty(lang)) {
line += '"' + lang + '": "' + padRight(data[word][lang].replace(/"/g, '\\"') + '",', 50) + ' ';
}
@@ -120,16 +123,16 @@ function writeWordJs(data, src) {
const EMPTY = '';
function words2languages(src) {
var langs = Object.assign({}, languages);
var data = readWordJs(src);
const langs = Object.assign({}, languages);
const data = readWordJs(src);
if (data) {
for (var word in data) {
for (const word in data) {
if (data.hasOwnProperty(word)) {
for (var lang in data[word]) {
for (const lang in data[word]) {
if (data[word].hasOwnProperty(lang)) {
langs[lang][word] = data[word][lang];
// pre-fill all other languages
for (var j in langs) {
for (const j in langs) {
if (langs.hasOwnProperty(j)) {
langs[j][word] = langs[j][word] || EMPTY;
}
@@ -141,12 +144,12 @@ function words2languages(src) {
if (!fs.existsSync(src + 'i18n/')) {
fs.mkdirSync(src + 'i18n/');
}
for (var l in langs) {
for (const l in langs) {
if (!langs.hasOwnProperty(l)) continue;
var keys = Object.keys(langs[l]);
const keys = Object.keys(langs[l]);
//keys.sort();
var obj = {};
for (var k = 0; k < keys.length; k++) {
let obj = {};
for (let k = 0; k < keys.length; k++) {
obj[keys[k]] = langs[l][keys[k]];
}
if (!fs.existsSync(src + 'i18n/' + l)) {
@@ -160,16 +163,16 @@ function words2languages(src) {
}
}
function words2languagesFlat(src) {
var langs = Object.assign({}, languages);
var data = readWordJs(src);
let langs = Object.assign({}, languages);
const data = readWordJs(src);
if (data) {
for (var word in data) {
for (const word in data) {
if (data.hasOwnProperty(word)) {
for (var lang in data[word]) {
for (const lang in data[word]) {
if (data[word].hasOwnProperty(lang)) {
langs[lang][word] = data[word][lang];
// pre-fill all other languages
for (var j in langs) {
for (const j in langs) {
if (langs.hasOwnProperty(j)) {
langs[j][word] = langs[j][word] || EMPTY;
}
@@ -178,12 +181,12 @@ function words2languagesFlat(src) {
}
}
}
var keys = Object.keys(langs.en);
const keys = Object.keys(langs.en);
//keys.sort();
for (var l in langs) {
for (const l in langs) {
if (!langs.hasOwnProperty(l)) continue;
var obj = {};
for (var k = 0; k < keys.length; k++) {
let obj = {};
for (let k = 0; k < keys.length; k++) {
obj[keys[k]] = langs[l][keys[k]];
}
langs[l] = obj;
@@ -191,7 +194,7 @@ function words2languagesFlat(src) {
if (!fs.existsSync(src + 'i18n/')) {
fs.mkdirSync(src + 'i18n/');
}
for (var ll in langs) {
for (const ll in langs) {
if (!langs.hasOwnProperty(ll)) continue;
if (!fs.existsSync(src + 'i18n/' + ll)) {
fs.mkdirSync(src + 'i18n/' + ll);
@@ -205,13 +208,13 @@ function words2languagesFlat(src) {
}
}
function languagesFlat2words(src) {
var dirs = fs.readdirSync(src + 'i18n/');
var langs = {};
var bigOne = {};
var order = Object.keys(languages);
dirs.sort(function (a, b) {
var posA = order.indexOf(a);
var posB = order.indexOf(b);
const dirs = fs.readdirSync(src + 'i18n/');
let langs = {};
let bigOne = {};
const order = Object.keys(languages);
dirs.sort((a, b) => {
const posA = order.indexOf(a);
const posB = order.indexOf(b);
if (posA === -1 && posB === -1) {
if (a > b) return 1;
if (a < b) return -1;
@@ -226,19 +229,19 @@ function languagesFlat2words(src) {
return 0;
}
});
var keys = fs.readFileSync(src + 'i18n/flat.txt').toString().split('\n');
const keys = fs.readFileSync(src + 'i18n/flat.txt').toString().split('\n');
for (var l = 0; l < dirs.length; l++) {
for (let l = 0; l < dirs.length; l++) {
if (dirs[l] === 'flat.txt') continue;
var lang = dirs[l];
var values = fs.readFileSync(src + 'i18n/' + lang + '/flat.txt').toString().split('\n');
let lang = dirs[l];
const values = fs.readFileSync(src + 'i18n/' + lang + '/flat.txt').toString().split('\n');
langs[lang] = {};
keys.forEach(function (word, i) {
langs[lang][word] = values[i].replace(/<\/ i>/g, '</i>').replace(/<\/ b>/g, '</b>').replace(/<\/ span>/g, '</span>').replace(/% s/g, ' %s');
});
var words = langs[lang];
for (var word in words) {
const words = langs[lang];
for (const word in words) {
if (words.hasOwnProperty(word)) {
bigOne[word] = bigOne[word] || {};
if (words[word] !== EMPTY) {
@@ -248,12 +251,12 @@ function languagesFlat2words(src) {
}
}
// read actual words.js
var aWords = readWordJs();
const aWords = readWordJs();
var temporaryIgnore = ['pt', 'fr', 'nl', 'flat.txt'];
const temporaryIgnore = ['pt', 'fr', 'nl', 'flat.txt'];
if (aWords) {
// Merge words together
for (var w in aWords) {
for (const w in aWords) {
if (aWords.hasOwnProperty(w)) {
if (!bigOne[w]) {
console.warn('Take from actual words.js: ' + w);
@@ -273,13 +276,13 @@ function languagesFlat2words(src) {
writeWordJs(bigOne, src);
}
function languages2words(src) {
var dirs = fs.readdirSync(src + 'i18n/');
var langs = {};
var bigOne = {};
var order = Object.keys(languages);
dirs.sort(function (a, b) {
var posA = order.indexOf(a);
var posB = order.indexOf(b);
const dirs = fs.readdirSync(src + 'i18n/');
let langs = {};
let bigOne = {};
const order = Object.keys(languages);
dirs.sort((a, b) => {
const posA = order.indexOf(a);
const posB = order.indexOf(b);
if (posA === -1 && posB === -1) {
if (a > b) return 1;
if (a < b) return -1;
@@ -294,13 +297,13 @@ function languages2words(src) {
return 0;
}
});
for (var l = 0; l < dirs.length; l++) {
for (let l = 0; l < dirs.length; l++) {
if (dirs[l] === 'flat.txt') continue;
var lang = dirs[l];
const lang = dirs[l];
langs[lang] = fs.readFileSync(src + 'i18n/' + lang + '/translations.json').toString();
langs[lang] = JSON.parse(langs[lang]);
var words = langs[lang];
for (var word in words) {
const words = langs[lang];
for (const word in words) {
if (words.hasOwnProperty(word)) {
bigOne[word] = bigOne[word] || {};
if (words[word] !== EMPTY) {
@@ -310,12 +313,12 @@ function languages2words(src) {
}
}
// read actual words.js
var aWords = readWordJs();
const aWords = readWordJs();
var temporaryIgnore = ['pt', 'fr', 'nl', 'it'];
const temporaryIgnore = ['pt', 'fr', 'nl', 'it'];
if (aWords) {
// Merge words together
for (var w in aWords) {
for (const w in aWords) {
if (aWords.hasOwnProperty(w)) {
if (!bigOne[w]) {
console.warn('Take from actual words.js: ' + w);
@@ -335,33 +338,32 @@ function languages2words(src) {
writeWordJs(bigOne, src);
}
gulp.task('adminWords2languages', function (done) {
gulp.task('admin (words.js => json)', done => {
words2languages('./admin/');
done();
});
gulp.task('adminWords2languagesFlat', function (done) {
gulp.task('admin (words.js => flat)', done => {
words2languagesFlat('./admin/');
done();
});
gulp.task('adminLanguagesFlat2words', function (done) {
gulp.task('admin (flat => words.js)', done => {
languagesFlat2words('./admin/');
done();
});
gulp.task('adminLanguages2words', function (done) {
gulp.task('admin (json => words.js)', done => {
languages2words('./admin/');
done();
});
gulp.task('updatePackages', function (done) {
gulp.task('updatePackages', done => {
iopackage.common.version = pkg.version;
iopackage.common.news = iopackage.common.news || {};
if (!iopackage.common.news[pkg.version]) {
var news = iopackage.common.news;
var newNews = {};
const news = iopackage.common.news;
let newNews = {};
newNews[pkg.version] = {
en: 'news',
@@ -374,20 +376,20 @@ gulp.task('updatePackages', function (done) {
done();
});
gulp.task('updateReadme', function (done) {
var readme = fs.readFileSync('README.md').toString();
var pos = readme.indexOf('## Changelog\n');
gulp.task('updateReadme', done => {
const readme = fs.readFileSync('README.md').toString();
const pos = readme.indexOf('## Changelog\n');
if (pos !== -1) {
var readmeStart = readme.substring(0, pos + '## Changelog\n'.length);
var readmeEnd = readme.substring(pos + '## Changelog\n'.length);
let readmeStart = readme.substring(0, pos + '## Changelog\n'.length);
let readmeEnd = readme.substring(pos + '## Changelog\n'.length);
if (readme.indexOf(version) === -1) {
var timestamp = new Date();
var date = timestamp.getFullYear() + '-' +
const timestamp = new Date();
const date = timestamp.getFullYear() + '-' +
('0' + (timestamp.getMonth() + 1).toString(10)).slice(-2) + '-' +
('0' + (timestamp.getDate()).toString(10)).slice(-2);
var news = '';
let news = '';
if (iopackage.common.news && iopackage.common.news[pkg.version]) {
news += '* ' + iopackage.common.news[pkg.version].en;
}
@@ -398,4 +400,4 @@ gulp.task('updateReadme', function (done) {
done();
});
gulp.task('default', ['updatePackages', 'updateReadme']);
gulp.task('default', gulp.series('updatePackages', 'updateReadme'));