cjk-slug
Version:
[](https://npm.im/cjk-slug) [](#License) [](https://bundlephobia.com/package/c
8 lines (7 loc) • 2.25 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../src/index.ts"],
"sourcesContent": ["import { normalize as normalizeCjk } from 'normalize-cjk';\n\ninterface CjkSlug {\n (\n title: string,\n options?: {\n lowercase?: boolean,\n normalize?: (input: string) => string,\n },\n ): string;\n}\n\nconst cjkSlug: CjkSlug = (\n title,\n {\n lowercase = true,\n normalize = normalizeCjk,\n } = {},\n) => {\n let slug = normalize(title)\n // strip half-width quotation marks\n // - 0022: quotation mark (\")\n // - 0027: apostrophe (')\n // - 02bc: modifier letter apostrophe\n // - 0060: grave accent\n // - 00b4: acute accent\n // - 2018: left single quotation mark\n // - 2019: right single quotation mark\n // - 201c: left double quotation mark\n // - 201d: right double quotation mark\n .replace(/[\\u0022\\u0027\\u02bc\\u0060\\u00b4\\u2018\\u2019\\u201c\\u201d]/g, '')\n // replace all whitespaces with a dash\n .replace(/[\\s_]+/g, '-')\n // replace non-allowed sequences with a dash\n // allowed sequences:\n // - Alphanumeric\n // - Dash\n // - SEO-friendly CJK character sequences\n // 3040 - 309f: Hiragana\n // 30a0 - 30ff: Katakana\n // 3400 - 4dbf: CJK unified ideographs Extension A - Rare Kanji\n // 4e00 - 9faf: CJK unified ideographs - Common and uncommon Kanji\n // ac00 - d7a3: Korean completed words (\uAC00-\uD7A3)\n // ff00 - ff9f: Full-width Roman characters and half-width Katakana\n .replace(/[^a-z\\d\\-\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4dbf\\u4e00-\\u9faf\\uac00-\\ud7a3\\uff00-\\uff9f]/gi, '-')\n // replace multiple dashes with a single dash\n .replace(/-+/g, '-')\n // remove leading / trailing dashes\n .replace(/^-|-$/g, '');\n\n if (lowercase) {\n slug = slug.toLowerCase();\n }\n\n return slug;\n};\n\nexport default cjkSlug;\n"],
"mappings": ";;;;AAAA,SAAS,aAAa,oBAAoB;AAY1C,IAAM,UAAmB,wBACvB,OACA;AAAA,EACE,YAAY;AAAA,EACZ,YAAY;AACd,IAAI,CAAC,MACF;AACH,MAAI,OAAO,UAAU,KAAK,EAWvB,QAAQ,6DAA6D,EAAE,EAEvE,QAAQ,WAAW,GAAG,EAYtB,QAAQ,8FAA8F,GAAG,EAEzG,QAAQ,OAAO,GAAG,EAElB,QAAQ,UAAU,EAAE;AAEvB,MAAI,WAAW;AACb,WAAO,KAAK,YAAY;AAAA,EAC1B;AAEA,SAAO;AACT,GA3CyB;AA6CzB,IAAO,cAAQ;",
"names": []
}