UNPKG

vietnamese-text-search

Version:
1 lines 3.44 kB
"use strict";var _charmap=_interopRequireDefault(require("./charmap.json"));Object.defineProperty(exports,"__esModule",{value:!0}),exports.containsSpecialChars=containsSpecialChars,exports.slugifyText=slugifyText,exports.intersect=intersect,exports.removeAccents=removeAccents,exports.parseObjectOfArrays=parseObjectOfArrays,exports.shuffleArray=shuffleArray,exports.getNestedObjValues=getNestedObjValues,exports.countNestedObjectKeys=countNestedObjectKeys,exports.log=log,exports.getLigatures=getLigatures,exports.tokenize=tokenize,exports.compare2Objs=compare2Objs;function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}const pattern=/[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/gi,ligatures=["ch","gh","gi","kh","ng","ngh","nh","ph","th","tr"],specialCharacters=["/","\\","@","#","$","%","^","&","*","(",")","{","}","[","]","+","-","=","_",",",".","!","`","!","<",">","?",";",":","\"","'","NULLL"],textPattern=/[a-zA-Z0-9_]/g;function containsSpecialChars(rawText){if("string"!=typeof rawText)throw new Error("argument must be a string");return rawText.trim().split("").some(char=>specialCharacters.includes(char))}function slugifyText(rawText,toLower=!1){if("string"!=typeof rawText)throw new Error("argument must be a string");let text="";const length=rawText.trim().length;for(let i=0;i<length;i+=1){const char=rawText[i];_charmap.default[char]?text+=char:specialCharacters.includes(char)&&(text+=" ")}return toLower?text.toLowerCase():text}function intersect(arr1,arr2){if(!arr1.length)return{same:[],diff1:arr2,diff2:arr2};if(!arr2.length)return{same:[],diff1:arr1,diff2:arr1};const result={same:[],diff1:[],diff2:[]};return result.same=arr1.filter(item=>arr2.includes(item)),result.diff1=arr1.filter(item=>!arr2.includes(item)),result.diff2=arr2.filter(item=>!result.same.includes(item)),result}function removeAccents(rawText){if("string"!=typeof rawText)throw new Error("argument must be a string");return rawText.normalize("NFD").replace(/[\u0300-\u036f\u2000-\u200f]/g,"").replace(/đ/g,"d").replace(/Đ/g,"D")}function parseObjectOfArrays(obj){let results=[];for(const val of Object.values(obj))results=results.concat([...val]);return[...new Set([...results])]}function shuffleArray(arr){const array=[...arr];for(let i=array.length-1;0<i;i--){const j=Math.floor(Math.random()*(i+1));[array[i],array[j]]=[array[j],array[i]]}return array}function getNestedObjValues(obj,values){return obj?obj instanceof Set?void values.push(...obj):void Object.values(obj).forEach(childObj=>getNestedObjValues(childObj,values)):void 0}function countNestedObjectKeys(obj={}){return Object.keys(obj).reduce((acc,cur)=>"object"==typeof obj[cur]?++acc+countNestedObjectKeys(obj[cur]):++acc,0)}function log(message,...rest){if("development"===process.env.NODE_ENV)return console.log(message,...rest)}function getLigatures(rawText){if("string"!=typeof rawText)throw new Error("argument must be a string");let text=rawText.trim();const end=+ligatures.includes(text.slice(0,2))+1;return text.slice(0,end)}function tokenize(rawText,toLower=!1){if("string"!=typeof rawText||!rawText.trim())return[];const text=slugifyText(rawText,toLower).replace(pattern," ").trim();return text.split(/\s+/g)}function compare2Objs(obj1={},obj2={}){if(Object.keys(obj1).length!==Object.keys(obj2).length)return!1;const keys=Object.keys(obj1),length=keys.length;for(let i=0;i<length;){const key=keys[i];if(obj1[key]!==obj2[key])return!1;i+=1}return!0}