UNPKG

8.19 kBSource Map (JSON)View Raw
1{"version":3,"file":"dict.js","sourceRoot":"","sources":["dict.ts"],"names":[],"mappings":";;;AAIA,6DAAqF;AAErF,qCAAwC;AACxC,iCAAwE;AACxE,kCAAoC;AAYpC;;GAEG;AACH,MAAa,SAAU,SAAQ,cAAoC;IAAnE;;QAIC,UAAK,GAAyB,EAAE,CAAC;QACjC,WAAM,GAA0B,EAAE,CAAC;IAqMpC,CAAC;IAjMA,MAAM,CAAC,IAA+B;QAErC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEZ,IAAI,OAAO,IAAI,IAAI,QAAQ,EAC3B;YACC,CAAC,GAAG,IAAI,CAAC;SACT;aACI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAC5B;YACC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;SACjB;aAED;YACC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;SACrB;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC9B,CAAC;IAES,aAAa,CAAC,IAA+B;QAEtD,IAAI,CAAS,EAAE,CAAS,EAAE,CAAS,CAAC;QACpC,IAAI,IAA4B,CAAC;QAEjC,IAAI,OAAO,IAAI,IAAI,QAAQ,EAC3B;YACC,CAAC,GAAG,IAAI,CAAC;SACT;aACI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAC5B;YACC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;SAC1B;aAED;YACC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;SACrB;QAED,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,EACrC;YACC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1C;QAED,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,OAAO;YACN,IAAI,EAAE;gBACL,CAAC,EAAE,CAAC,EAAE,CAAC;aACP;YACD,IAAI;SACJ,CAAA;IACF,CAAC;IAED,GAAG,CAAC,IAA+B,EAAE,UAAoB;QAExD,IAAI,CAAS,EAAE,CAAS,EAAE,CAAS,CAAC;QACpC,IAAI,IAA4B,CAAC;QAEjC;YACC,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAEnC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;SAChB;QAED,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAChC;YACC,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EACvB;YACC,qBAAqB;SACrB;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhC,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB;;;WAGG;QACH,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAC7B;YACC,IAAI,EAAE,GAAG,eAAS,CAAC,CAAC,CAAC,CAAC;YAEtB,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE;gBAEtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAC/B;oBACC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC3B;YACF,CAAC,CAAC,CAAC;YAEH;;;;;;;;;;;;;;;;;;;;;;;;;cAyBE;SACF;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAES,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAK1B;QAEA,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;QAEnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;YACf,CAAC;YACD,CAAC;YACD,CAAC;SACgB,CAAC;QAEnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,MAAiC;QAEvC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAA;IACZ,CAAC;IAES,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAS;QAEtC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;QAEnB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EACpB;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;SAC1B;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,IAAI;QAEH,OAAO,gBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,EAAE,GAAG,IAAI;QAElB,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;aAC/B,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAEjC,IAAI,IAAI,GAAG,uBAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO,CAAC,CAAA;QACT,CAAC,EAAE,EAAE,CAAC;aACL,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACxC;IACH,CAAC;CACD;AA1MD,8BA0MC;AAED,kBAAe,SAAS,CAAA","sourcesContent":["/**\n * Created by user on 2018/4/15/015.\n */\nimport { IWord } from '../segment/types';\nimport { IDictRow, serialize, stringifyLine } from 'segment-dict/lib/loader/segment';\nimport CjkConv from 'cjk-conv';\nimport { text_list } from '../util/cjk';\nimport AbstractTableDictCore, { IDICT, IDICT2, IOptions } from './core';\nimport { cloneDeep } from '../util';\n\ndeclare function _cloneDeep<T>(data: T): T\n\nexport type ITableDictRow = {\n\tp: number,\n\tf: number,\n\ts?: boolean,\n};\n\nexport { IDICT, IDICT2, IOptions }\n\n/**\n * @todo 掛接其他 dict\n */\nexport class TableDict extends AbstractTableDictCore<ITableDictRow>\n{\n\tpublic type: string;\n\n\tTABLE: IDICT<ITableDictRow> = {};\n\tTABLE2: IDICT2<ITableDictRow> = {};\n\n\toptions: IOptions;\n\n\texists(data: IWord | IDictRow | string): ITableDictRow\n\t{\n\t\tlet w, p, f;\n\n\t\tif (typeof data == 'string')\n\t\t{\n\t\t\tw = data;\n\t\t}\n\t\telse if (Array.isArray(data))\n\t\t{\n\t\t\t[w, p, f] = data;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t({ w, p, f } = data);\n\t\t}\n\n\t\treturn this.TABLE[w] || null;\n\t}\n\n\tprotected __handleInput(data: IWord | IDictRow | string)\n\t{\n\t\tlet w: string, p: number, f: number;\n\t\tlet plus: Array<string | number>;\n\n\t\tif (typeof data == 'string')\n\t\t{\n\t\t\tw = data;\n\t\t}\n\t\telse if (Array.isArray(data))\n\t\t{\n\t\t\t[w, p, f, ...plus] = data;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t({ w, p, f } = data);\n\t\t}\n\n\t\tif (typeof w !== 'string' || w === '')\n\t\t{\n\t\t\tthrow new TypeError(JSON.stringify(data));\n\t\t}\n\n\t\tp = (typeof p != 'number' || Number.isNaN(p)) ? 0 : p;\n\t\tf = (typeof f != 'number' || Number.isNaN(f)) ? 0 : f;\n\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tw, p, f,\n\t\t\t},\n\t\t\tplus,\n\t\t}\n\t}\n\n\tadd(data: IWord | IDictRow | string, skipExists?: boolean)\n\t{\n\t\tlet w: string, p: number, f: number;\n\t\tlet plus: Array<string | number>;\n\n\t\t{\n\t\t\tlet ret = this.__handleInput(data);\n\n\t\t\t({ w, p, f } = ret.data);\n\t\t\tplus = ret.plus;\n\t\t}\n\n\t\tif (skipExists && this.exists(w))\n\t\t{\n\t\t\treturn this;\n\t\t}\n\n\t\tif (plus && plus.length)\n\t\t{\n\t\t\t// @todo do something\n\t\t}\n\n\t\tthis._add({ w, p, f, s: true });\n\n\t\tlet self = this;\n\n\t\t/**\n\t\t * @todo 需要更聰明的作法 目前的做法實在太蠢\n\t\t * @BUG 在不明原因下 似乎不會正確的添加每個項目 如果遇到這種情形請手動添加簡繁項目\n\t\t */\n\t\tif (1 && this.options.autoCjk)\n\t\t{\n\t\t\tlet wa = text_list(w);\n\n\t\t\twa.forEach(function (w2)\n\t\t\t{\n\t\t\t\tif (w2 != w && !self.exists(w2))\n\t\t\t\t{\n\t\t\t\t\tself._add({ w: w2, p, f });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/*\n\t\t\tlet w2: string;\n\t\t\tw2 = CjkConv.zh2jp(w);\n\n\t\t\tif (w2 != w && !this.exists(w2))\n\t\t\t{\n\t\t\t\tthis._add({w: w2, p, f});\n\t\t\t\t//console.log(w2);\n\t\t\t}\n\n\t\t\tw2 = CjkConv.cjk2zht(w);\n\n\t\t\tif (w2 !== w && !this.exists(w2))\n\t\t\t{\n\t\t\t\tthis._add({w: w2, p, f});\n\t\t\t\t//console.log(w2);\n\t\t\t}\n\n\t\t\tw2 = CjkConv.cjk2zhs(w);\n\n\t\t\tif (w2 !== w && !this.exists(w2))\n\t\t\t{\n\t\t\t\tthis._add({w: w2, p, f});\n\t\t\t\t//console.log(w2);\n\t\t\t}\n\t\t\t*/\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprotected _add({ w, p, f, s }: {\n\t\tw: string,\n\t\tp: number,\n\t\tf: number,\n\t\ts?: boolean,\n\t})\n\t{\n\t\tlet len = w.length;\n\n\t\tthis.TABLE[w] = {\n\t\t\tp,\n\t\t\tf,\n\t\t\ts,\n\t\t} as ITableDictRow;\n\n\t\tif (!this.TABLE2[len]) this.TABLE2[len] = {};\n\n\t\tthis.TABLE2[len][w] = this.TABLE[w];\n\t}\n\n\tremove(target: IWord | IDictRow | string)\n\t{\n\t\tlet { data, plus } = this.__handleInput(target);\n\n\t\tthis._remove(data);\n\n\t\treturn this\n\t}\n\n\tprotected _remove({ w, p, f, s }: IWord)\n\t{\n\t\tlet len = w.length;\n\n\t\tdelete this.TABLE[w];\n\t\tif (this.TABLE2[len])\n\t\t{\n\t\t\tdelete this.TABLE2[len][w]\n\t\t}\n\n\t\treturn this\n\t}\n\n\tjson(): IDICT<ITableDictRow>\n\t{\n\t\treturn cloneDeep(this.TABLE)\n\t}\n\n\t/**\n\t * 將目前的 表格 匯出\n\t */\n\tstringify(LF = \"\\n\")\n\t{\n\t\tlet self = this;\n\n\t\treturn Object.entries(self.TABLE)\n\t\t\t.reduce(function (a, [w, { p, f }])\n\t\t\t{\n\t\t\t\tlet line = stringifyLine([w, p, f]);\n\n\t\t\t\ta.push(line);\n\n\t\t\t\treturn a\n\t\t\t}, [])\n\t\t\t.join(typeof LF === 'string' ? LF : \"\\n\")\n\t\t\t;\n\t}\n}\n\nexport default TableDict\n"]}
\No newline at end of file