normalize-for-search
Version:
Un-accents and un-umlauts characters in a string. Also preliminary converts the string to lower case. We use it for autocomplete: both for the matched strings -- on the server side, when indexing; and for the strings the user types into a text input in th
65 lines (50 loc) • 2.04 kB
JavaScript
(function (undefined) {
'use strict';
var assert = require('assert'),
normalizeForSearch = require('../src/normalize'),
testCases = function () {
it('converts the passed string to lower case', function () {
assert.strictEqual(normalizeForSearch('Ack'), 'ack');
});
it('normalizes ä', function () {
assert.strictEqual(normalizeForSearch('ä'), 'ae');
});
it('normalizes å', function () {
assert.strictEqual(normalizeForSearch('å'), 'aa');
});
it('normalizes â', function () {
assert.strictEqual(normalizeForSearch('â'), 'a');
});
it('normalizes ö', function () {
assert.strictEqual(normalizeForSearch('ö'), 'oe');
});
it('normalizes ô', function () {
assert.strictEqual(normalizeForSearch('ô'), 'o');
});
it('normalizes ü', function () {
assert.strictEqual(normalizeForSearch('ü'), 'ue');
});
it('normalizes ß', function () {
assert.strictEqual(normalizeForSearch('Straße'), 'strasse');
});
it('normalizes ё', function () {
assert.strictEqual(normalizeForSearch('ё'), 'е');
});
it('normalizes è', function () {
assert.strictEqual(normalizeForSearch('è'), 'e');
});
it('satisfies the end-to-end test from the README', function () {
assert.strictEqual(
normalizeForSearch('Dät ist naïve und ÜBERCOOL, ё-маё!'),
'daet ist naive und uebercool, е-мае!'
);
});
};
describe('works normally', testCases);
describe('works in IE7/8', function () {
beforeEach(function () {
delete Array.prototype.map;
});
testCases();
});
}());