UNPKG

cjk-slug

Version:

[![Package Version](https://img.shields.io/npm/v/cjk-slug)](https://npm.im/cjk-slug) [![License](https://img.shields.io/npm/l/cjk-slug)](#License) [![NPM Bundle Size](https://img.shields.io/bundlephobia/minzip/cjk-slug)](https://bundlephobia.com/package/c

8 lines (7 loc) 2.3 kB
{ "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;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA0C;AAY1C,IAAM,UAAmB,wBACvB,OACA;AAAA,EACE,YAAY;AAAA,EACZ,YAAY,qBAAAA;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": ["normalizeCjk"] }