UNPKG

cmpstr

Version:

CmpStr is a lightweight, fast and well performing package for calculating string similarity

119 lines (115 loc) 4.08 kB
// CmpStr v3.2.2 build-bb61120-260311 by Paul Köhler @komed3 / MIT License 'use strict'; var Phonetic = require('./Phonetic.cjs'); class Caverphone extends Phonetic.Phonetic { static REGEX = { uppercase: /[^A-Z]/gi }; static default = { map: 'en2', delimiter: ' ', length: -1, pad: '', dedupe: false }; constructor(opt = {}) { super('caverphone', opt); } encode(word) { word = word.replace(Caverphone.REGEX.uppercase, '').toLowerCase(); return super.encode(word); } mapChar = (char) => char; adjustCode = (code) => code.toUpperCase(); } Phonetic.PhoneticRegistry.add('caverphone', Caverphone); Phonetic.PhoneticMappingRegistry.add('caverphone', 'en1', { options: { length: 6, pad: '1' }, map: {}, patterns: [ { pattern: /^(c|r|t|en)ough/, replace: '$1ou2f' }, { pattern: /^gn/, replace: '2n' }, { pattern: /mb$/, replace: 'm2' }, { pattern: /cq/g, replace: '2q' }, { pattern: /c(e|i|y)/g, replace: 's$1' }, { pattern: /tch/g, replace: '2ch' }, { pattern: /[cqx]/g, replace: 'k' }, { pattern: /v/g, replace: 'f' }, { pattern: /dg/g, replace: '2g' }, { pattern: /ti(a|o)/g, replace: 'si$1' }, { pattern: /d/g, replace: 't' }, { pattern: /ph/g, replace: 'fh' }, { pattern: /b/g, replace: 'p' }, { pattern: /sh/g, replace: 's2' }, { pattern: /z/g, replace: 's' }, { pattern: /^[aeiou]/, replace: 'A' }, { pattern: /[aeiou]/g, replace: '3' }, { pattern: /3gh3/g, replace: '3kh3' }, { pattern: /gh/g, replace: '22' }, { pattern: /g/g, replace: 'k' }, { pattern: /s+/g, replace: 'S' }, { pattern: /t+/g, replace: 'T' }, { pattern: /p+/g, replace: 'P' }, { pattern: /k+/g, replace: 'K' }, { pattern: /f+/g, replace: 'F' }, { pattern: /m+/g, replace: 'M' }, { pattern: /n+/g, replace: 'N' }, { pattern: /j/g, replace: 'y' }, { pattern: /l3/g, replace: 'L3' }, { pattern: /r3/g, replace: 'R3' }, { pattern: /w3/g, replace: 'W3' }, { pattern: /y3/g, replace: 'Y3' }, { pattern: /ly/g, replace: 'Ly' }, { pattern: /ry/g, replace: 'Ry' }, { pattern: /wy/g, replace: 'Wy' }, { pattern: /wh3/g, replace: 'Wh3' }, { pattern: /why/g, replace: 'Why' }, { pattern: /^h/, replace: 'A' }, { pattern: /[hlrwy23]/g, replace: '' } ] }); Phonetic.PhoneticMappingRegistry.add('caverphone', 'en2', { options: { length: 10, pad: '1' }, map: {}, patterns: [ { pattern: /e$/, replace: '' }, { pattern: /^(c|r|t|en|tr)ough/, replace: '$1ou2f' }, { pattern: /^gn/, replace: '2n' }, { pattern: /mb$/, replace: 'm2' }, { pattern: /cq/g, replace: '2q' }, { pattern: /c(e|i|y)/g, replace: 's$1' }, { pattern: /tch/g, replace: '2ch' }, { pattern: /[cqx]/g, replace: 'k' }, { pattern: /v/g, replace: 'f' }, { pattern: /dg/g, replace: '2g' }, { pattern: /ti(a|o)/g, replace: 'si$1' }, { pattern: /d/g, replace: 't' }, { pattern: /ph/g, replace: 'fh' }, { pattern: /b/g, replace: 'p' }, { pattern: /sh/g, replace: 's2' }, { pattern: /z/g, replace: 's' }, { pattern: /^[aeiou]/, replace: 'A' }, { pattern: /[aeiou]/g, replace: '3' }, { pattern: /j/g, replace: 'y' }, { pattern: /^y3/, replace: 'Y3' }, { pattern: /^y/, replace: 'A' }, { pattern: /y/g, replace: '3' }, { pattern: /3gh3/g, replace: '3kh3' }, { pattern: /gh/g, replace: '22' }, { pattern: /g/g, replace: 'k' }, { pattern: /s+/g, replace: 'S' }, { pattern: /t+/g, replace: 'T' }, { pattern: /p+/g, replace: 'P' }, { pattern: /k+/g, replace: 'K' }, { pattern: /f+/g, replace: 'F' }, { pattern: /m+/g, replace: 'M' }, { pattern: /n+/g, replace: 'N' }, { pattern: /l3/g, replace: 'L3' }, { pattern: /r3/g, replace: 'R3' }, { pattern: /w3/g, replace: 'W3' }, { pattern: /wh3/g, replace: 'Wh3' }, { pattern: /[lrw]$/, replace: '3' }, { pattern: /^h/, replace: 'A' }, { pattern: /3$/, replace: 'A' }, { pattern: /[hlrw23]/g, replace: '' } ] }); exports.Caverphone = Caverphone;