Add CLI option to enable alphabetical sorting of extracted keys
This commit is contained in:
parent
94e6416c76
commit
c18b7dc9c7
@ -16,6 +16,7 @@ const options = cli.parse({
|
||||
output: ['o', 'Path you would like to save extracted strings to', 'dir', process.env.PWD],
|
||||
format: ['f', 'Output format', ['json', 'pot'], 'json'],
|
||||
replace: ['r', 'Replace the contents of output file if it exists (Merges by default)', 'boolean', false],
|
||||
sort: ['s', 'Sort translations in the output file in alphabetical order', 'boolean', false],
|
||||
clean: ['c', 'Remove obsolete strings when merging', 'boolean', false]
|
||||
});
|
||||
|
||||
@ -77,6 +78,10 @@ try {
|
||||
}
|
||||
}
|
||||
|
||||
if (options.sort) {
|
||||
collection = collection.sort();
|
||||
}
|
||||
|
||||
fs.writeFileSync(outputPath, compiler.compile(collection));
|
||||
cli.ok(`* Saved to '${outputPath}'`);
|
||||
} catch (e) {
|
||||
|
@ -75,4 +75,17 @@ export class TranslationCollection {
|
||||
return Object.keys(this.values).length === 0;
|
||||
}
|
||||
|
||||
public sort(compareFn?: (a: string, b: string) => number): TranslationCollection {
|
||||
if (!compareFn) {
|
||||
// if no compare functions is provided use a case insensitive sorting function
|
||||
compareFn = (a, b) => a.toLowerCase().localeCompare(b.toLowerCase());
|
||||
}
|
||||
|
||||
let collection = new TranslationCollection();
|
||||
let sortedKeys = this.keys().sort(compareFn);
|
||||
sortedKeys.forEach((key) => {
|
||||
collection = collection.add(key, this.get(key));
|
||||
});
|
||||
return collection;
|
||||
}
|
||||
}
|
||||
|
@ -79,4 +79,10 @@ describe('StringCollection', () => {
|
||||
expect(collection.intersect(newCollection).values).to.deep.equal({ red: 'rød', blue: 'blå' });
|
||||
});
|
||||
|
||||
it('should sort translations in alphabetical order', () => {
|
||||
collection = new TranslationCollection({ red: 'rød', green: 'grøn', blue: 'blå' });
|
||||
collection = collection.sort();
|
||||
expect(collection.keys()).deep.equal(['blue', 'green', 'red']);
|
||||
});
|
||||
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user