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],
|
output: ['o', 'Path you would like to save extracted strings to', 'dir', process.env.PWD],
|
||||||
format: ['f', 'Output format', ['json', 'pot'], 'json'],
|
format: ['f', 'Output format', ['json', 'pot'], 'json'],
|
||||||
replace: ['r', 'Replace the contents of output file if it exists (Merges by default)', 'boolean', false],
|
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]
|
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));
|
fs.writeFileSync(outputPath, compiler.compile(collection));
|
||||||
cli.ok(`* Saved to '${outputPath}'`);
|
cli.ok(`* Saved to '${outputPath}'`);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -75,4 +75,17 @@ export class TranslationCollection {
|
|||||||
return Object.keys(this.values).length === 0;
|
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å' });
|
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