1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | exports.init = exports.ForeignOptimizer = void 0;
|
7 | const mod_1 = require("../mod");
|
8 | class ForeignOptimizer extends mod_1.SubSModuleOptimizer {
|
9 | constructor() {
|
10 | super(...arguments);
|
11 | this.name = 'ForeignOptimizer';
|
12 | }
|
13 | _cache() {
|
14 | super._cache();
|
15 | this._TABLE = this.segment.getDict('TABLE');
|
16 | this._POSTAG = this.segment.POSTAG;
|
17 | }
|
18 | doOptimize(words) {
|
19 | const self = this;
|
20 | const POSTAG = this._POSTAG;
|
21 | const TABLE = this._TABLE;
|
22 | let i = 0;
|
23 | let len = words.length - 1;
|
24 | while (i < len) {
|
25 | let w0 = words[i - 1];
|
26 | let w1 = words[i];
|
27 | let w2 = words[i + 1];
|
28 | if (!(w1.p === POSTAG.A_NX)) {
|
29 | i++;
|
30 | continue;
|
31 | }
|
32 | if (w2) {
|
33 | let nw = w1.w + w2.w;
|
34 | let mw = TABLE[nw];
|
35 | if (mw) {
|
36 | let new_w = self.debugToken({
|
37 | ...mw,
|
38 | w: nw,
|
39 | m: [w1, w2],
|
40 | }, {
|
41 | [this.name]: 1,
|
42 | }, true);
|
43 | this.sliceToken(words, i, 2, new_w);
|
44 | len--;
|
45 | continue;
|
46 | }
|
47 | }
|
48 | i++;
|
49 | }
|
50 | return words;
|
51 | }
|
52 | }
|
53 | exports.ForeignOptimizer = ForeignOptimizer;
|
54 | exports.init = ForeignOptimizer.init.bind(ForeignOptimizer);
|
55 | exports.default = ForeignOptimizer;
|
56 |
|
\ | No newline at end of file |