sluggo
Version:
High-speed, unicode-aware, browser-friendly slug generator
49 lines (42 loc) • 1.12 kB
JavaScript
// This program outputs the Unicode character ranges
// we don't want in slugs:
//
// Control characters, Misc characters, Punctuation, Space and
// Unassigned characters.
//
// unicode-7.0.0 must be temporarily "npm install"ed. More than
// likely you'll be installing 8.0.0 (or whatever is the latest
// version of Unicode) and changing the next line whenever
// you do this.
//
// Pipe the output to a file and paste it into index.js. Done!
//
// -Tom
var categoriesByCode = require('unicode-7.0.0/categories');
var i;
var previousBad;
var start;
var end;
var ranges = [];
for (var i = 0; (i < categoriesByCode.length); i++) {
var category = categoriesByCode[i];
var first = category.substr(0, 1);
var bad = false;
if ((first === 'C') || (first === 'M') || (first === 'P') || (first === 'S') || (first === 'Z')) {
bad = true;
}
if (bad !== previousBad) {
end = i - 1;
if (end !== -1) {
if (previousBad) {
ranges.push([ start, end ]);
}
}
start = i;
}
previousBad = bad;
}
if (previousBad) {
ranges.push([ start, i ]);
}
console.log(JSON.stringify(ranges));