UNPKG

vietnamese-search

Version:

Slugify and search Vietnamese text with diacritics support

2 lines (1 loc) 1.51 kB
"use strict";var u=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var r in t)u(e,r,{get:t[r],enumerable:!0})},C=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of S(t))!R.call(e,n)&&n!==r&&u(e,n,{get:()=>t[n],enumerable:!(s=y(t,n))||s.enumerable});return e};var w=e=>C(u({},"__esModule",{value:!0}),e);var I={};$(I,{search:()=>f,slugify:()=>a});module.exports=w(I);function a(e,t={}){let{separator:r="-"}=t;if(!e)return"";if(e=e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[đĐ]/g,"d").replace(/[^\w]|_|-/g,r),!r)return e.trim();let s=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`${s}+`,"g"),r).replace(new RegExp(`^${s}|${s}$`,"g"),"").trim()}var d={separator:" "};function f(e,t){let r=a(t,d),s=r.length,n={matches:[],positions:[]};if(!s)return n;let l=[...e.split("")].map((i,o)=>({originIndex:o,slugified:a(i,d),char:i})).filter((i,o,g)=>o===0?i.slugified:i.char===" "?g[o-1].slugified:1);if(l.length<s)return n;for(let i=0;i<l.length;){let o=l[i];if(o.slugified!==r[0]){++i;continue}let g=i+s;if(g>l.length)break;let c=l.slice(i,g);if(c.map(h=>h.slugified===""?" ":h.slugified).join("").replace(/\s+/g," ").trim()!==r){++i;continue}let m=c[c.length-1],p=e.substring(o.originIndex,m.originIndex+1),x=p.length;n.matches.push(p),n.positions.push({start:o.originIndex,length:x}),i=g+1}return n}0&&(module.exports={search,slugify});