Add actual tag values as comments for Transifex in presets.yaml

(re: #2646)
This commit is contained in:
Bryan Housel
2015-05-29 23:50:16 -04:00
parent deb968dba8
commit 549a14fd55
3 changed files with 1371 additions and 181 deletions

View File

@@ -3,7 +3,6 @@ var fs = require('fs'),
glob = require('glob'),
YAML = require('js-yaml'),
_ = require('./js/lib/lodash'),
d3 = require('d3'),
jsonschema = require('jsonschema'),
fieldSchema = require('./data/presets/schema/field.json'),
presetSchema = require('./data/presets/schema/preset.json'),
@@ -151,16 +150,50 @@ function generatePresets() {
});
presets = _.merge(presets, suggestionsToPresets(presets));
return presets;
var presetsYaml = _.cloneDeep(translations);
_.forEach(presetsYaml.presets, function(preset) {
preset.terms = "<translate with synonyms or related terms for '" + preset.name + "', separated by commas>"
}
function generateTranslate(fields, presets) {
var translate = _.cloneDeep(translations);
_.forEach(translate.fields, function(field, id) {
var f = fields[id];
if (f.keys) {
field['label#'] = _.each(f.keys).map(function(key) { return key + '=*'; }).join(', ');
if (!_.isEmpty(field.options)) {
_.each(field.options, function(v,k) {
if (id === 'access') {
field.options[k]['title#'] = field.options[k]['description#'] = 'access=' + k;
} else {
field.options[k + '#'] = k + '=yes';
}
});
}
} else if (f.key) {
field['label#'] = f.key + '=*';
if (!_.isEmpty(field.options)) {
_.each(field.options, function(v,k) {
field.options[k + '#'] = f.key + '=' + k;
});
}
}
if (f.placeholder) {
field['placeholder#'] = id + ' field placeholder';
}
});
return {
presets: presets,
presetsYaml: presetsYaml
};
_.forEach(translate.presets, function(preset, id) {
var p = presets[id];
if (!_.isEmpty(p.tags))
preset['name#'] = _.pairs(p.tags).map(function(pair) { return pair[0] + '=' + pair[1]; }).join(', ');
if (p.terms && p.terms.length)
preset['terms#'] = 'terms: ' + p.terms.join();
preset.terms = "<translate with synonyms or related terms for '" + preset.name + "', separated by commas>";
});
return translate;
}
function validateCategoryPresets(categories, presets) {
@@ -189,19 +222,30 @@ function validatePresetFields(presets, fields) {
});
}
// comment keys end with '#' and should sort immediately before their related key.
function sortKeys(a, b) {
return (a === b + '#') ? -1
: (b === a + '#') ? 1
: (a > b ? 1 : a < b ? -1 : 0);
}
var categories = generateCategories(),
fields = generateFields(),
presets = generatePresets();
presets = generatePresets(),
translate = generateTranslate(fields, presets);
// additional consistency checks
validateCategoryPresets(categories, presets.presets);
validatePresetFields(presets.presets, fields);
validateCategoryPresets(categories, presets);
validatePresetFields(presets, fields);
// Save individual data files
fs.writeFileSync('data/presets/categories.json', stringify(categories));
fs.writeFileSync('data/presets/fields.json', stringify(fields));
fs.writeFileSync('data/presets/presets.json', stringify(presets.presets));
fs.writeFileSync('data/presets.yaml', YAML.dump({en: {presets: presets.presetsYaml}}));
fs.writeFileSync('data/presets/presets.json', stringify(presets));
fs.writeFileSync('data/presets.yaml',
YAML.dump({en: {presets: translate}}, {sortKeys: sortKeys})
.replace(/\'.*#\':/g, '#')
);
// Write taginfo data
var taginfo = {
@@ -220,7 +264,7 @@ var taginfo = {
"tags": []
};
_.forEach(presets.presets, function(preset) {
_.forEach(presets, function(preset) {
if (preset.suggestion)
return;

File diff suppressed because it is too large Load Diff

View File

@@ -33,7 +33,7 @@
"sinon-chai": "~2.3.1",
"happen": "0.1.2",
"glob": "~3.1.21",
"js-yaml": "~3.1.0",
"js-yaml": "~3.3.1",
"request": "~2.16.2",
"jsonschema": "~0.3.2",
"editor-imagery-index": "git://github.com/osmlab/editor-imagery-index.git#gh-pages",