prh 5.4.4 → 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/rule.js CHANGED
@@ -1,16 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var regexp_1 = require("./utils/regexp");
4
- var options_1 = require("./options");
5
- var ruleSpec_1 = require("./ruleSpec");
6
- var diff_1 = require("./changeset/diff");
7
- var changeset_1 = require("./changeset");
8
- var Rule = /** @class */ (function () {
9
- function Rule(src) {
3
+ exports.Rule = void 0;
4
+ const regexp_1 = require("./utils/regexp");
5
+ const options_1 = require("./options");
6
+ const ruleSpec_1 = require("./ruleSpec");
7
+ const diff_1 = require("./changeset/diff");
8
+ const changeset_1 = require("./changeset");
9
+ class Rule {
10
+ constructor(src) {
10
11
  if (!src) {
11
- throw new Error("src is requried");
12
+ throw new Error("src is required");
12
13
  }
13
- var rawRule;
14
+ let rawRule;
14
15
  if (typeof src === "string") {
15
16
  rawRule = {
16
17
  expected: src,
@@ -23,11 +24,13 @@ var Rule = /** @class */ (function () {
23
24
  if (patterns === "") {
24
25
  throw new Error("pattern can't be empty");
25
26
  }
26
- Array.isArray(patterns) && patterns.forEach(function (pattern) {
27
- if (pattern === "") {
28
- throw new Error("patterns can't be empty");
29
- }
30
- });
27
+ if (Array.isArray(patterns)) {
28
+ patterns.forEach((pattern) => {
29
+ if (pattern === "") {
30
+ throw new Error("patterns can't be empty");
31
+ }
32
+ });
33
+ }
31
34
  }
32
35
  checkEmptyPattern(rawRule.pattern);
33
36
  checkEmptyPattern(rawRule.patterns);
@@ -42,46 +45,45 @@ var Rule = /** @class */ (function () {
42
45
  }
43
46
  this.regexpMustEmpty = rawRule.regexpMustEmpty;
44
47
  // for JSON order
45
- var options = this.options;
48
+ const options = this.options;
46
49
  delete this.options;
47
50
  this.options = options;
48
- this.specs = (rawRule.specs || []).map(function (spec) { return new ruleSpec_1.RuleSpec(spec); });
51
+ this.specs = (rawRule.specs || []).map((spec) => new ruleSpec_1.RuleSpec(spec));
49
52
  this.raw = rawRule;
50
53
  this.check();
51
54
  }
52
55
  /* @internal */
53
- Rule.prototype._patternToRegExp = function (pattern) {
54
- var _this = this;
56
+ _patternToRegExp(pattern) {
55
57
  if (pattern === "") {
56
58
  throw new Error("pattern can't be empty");
57
59
  }
58
60
  else if (pattern == null) {
59
- var result = regexp_1.spreadAlphaNum(this.expected);
61
+ let result = (0, regexp_1.spreadAlphaNum)(this.expected);
60
62
  if (this.options.wordBoundary) {
61
- result = regexp_1.addBoundary(result);
63
+ result = (0, regexp_1.addBoundary)(result);
62
64
  }
63
- return regexp_1.addDefaultFlags(result);
65
+ return (0, regexp_1.addDefaultFlags)(result);
64
66
  }
65
67
  else if (typeof pattern === "string") {
66
- var result = regexp_1.parseRegExpString(pattern);
68
+ let result = (0, regexp_1.parseRegExpString)(pattern);
67
69
  if (!result) {
68
- result = new RegExp(regexp_1.escapeSpecialChars(pattern));
70
+ result = new RegExp((0, regexp_1.escapeSpecialChars)(pattern));
69
71
  }
70
72
  if (this.options.wordBoundary) {
71
- result = regexp_1.addBoundary(result);
73
+ result = (0, regexp_1.addBoundary)(result);
72
74
  }
73
- return regexp_1.addDefaultFlags(result);
75
+ return (0, regexp_1.addDefaultFlags)(result);
74
76
  }
75
77
  else if (pattern instanceof Array) {
76
- var result = regexp_1.combine(pattern.map(function (p) { return _this._patternToRegExp(p); }));
77
- return regexp_1.addDefaultFlags(result);
78
+ const result = (0, regexp_1.combine)(pattern.map((p) => this._patternToRegExp(p)));
79
+ return (0, regexp_1.addDefaultFlags)(result);
78
80
  }
79
81
  else {
80
- throw new Error("unexpected pattern: " + pattern);
82
+ throw new Error(`unexpected pattern: ${pattern}`);
81
83
  }
82
- };
84
+ }
83
85
  /* @internal */
84
- Rule.prototype._shouldIgnore = function (ignoreRule) {
86
+ _shouldIgnore(ignoreRule) {
85
87
  // NOTE 考え方:--rules-yaml で表示されるpattern or expectedで指定する
86
88
  // patternは配列で指定できて、そのうちの1つのパターンが指定された時に
87
89
  // そのルール全体が無視されるのか該当の1パターンだけ無視されるのか予想できないため
@@ -92,60 +94,58 @@ var Rule = /** @class */ (function () {
92
94
  return true;
93
95
  }
94
96
  return false;
95
- };
96
- Rule.prototype.reset = function () {
97
+ }
98
+ reset() {
97
99
  this.pattern.lastIndex = 0;
98
- };
99
- Rule.prototype.check = function () {
100
- var _this = this;
101
- this.specs.forEach(function (spec) {
102
- var diffs = _this.applyRule(spec.from);
103
- var changeSet = new changeset_1.ChangeSet({ content: spec.from, diffs: diffs });
104
- var result = changeSet.applyChangeSets(spec.from);
100
+ }
101
+ check() {
102
+ this.specs.forEach((spec) => {
103
+ const diffs = this.applyRule(spec.from);
104
+ const changeSet = new changeset_1.ChangeSet({ content: spec.from, diffs });
105
+ const result = changeSet.applyChangeSets(spec.from);
105
106
  if (spec.to !== result) {
106
- throw new Error(_this.expected + " spec failed. \"" + spec.from + "\", expected \"" + spec.to + "\", but got \"" + result + "\", " + _this.pattern);
107
+ throw new Error(`${this.expected} spec failed. "${spec.from}", expected "${spec.to}", but got "${result}", ${this.pattern}`);
107
108
  }
108
109
  });
109
- };
110
- Rule.prototype.applyRule = function (content) {
111
- var _this = this;
110
+ }
111
+ applyRule(content) {
112
112
  this.reset();
113
- var resultList = regexp_1.collectAll(this.pattern, content);
113
+ const resultList = (0, regexp_1.collectAll)(this.pattern, content);
114
114
  return resultList
115
- .map(function (matches) {
115
+ .map((matches) => {
116
116
  // JavaScriptでの正規表現では /(?<!記|大)事/ のような書き方ができない
117
117
  // /(記|大)事/ で regexpMustEmpty $1 の場合、第一グループが空じゃないとマッチしない、というルールにして回避
118
- if (_this.regexpMustEmpty) {
119
- var match = /^\$([0-9]+)$/.exec(_this.regexpMustEmpty);
118
+ if (this.regexpMustEmpty) {
119
+ const match = /^\$([0-9]+)$/.exec(this.regexpMustEmpty);
120
120
  if (match == null) {
121
- throw new Error(_this.expected + " target failed. please use $1 format.");
121
+ throw new Error(`${this.expected} target failed. please use $1 format.`);
122
122
  }
123
- var index = parseInt(match[1], 10);
123
+ const index = parseInt(match[1], 10);
124
124
  if (matches[index]) {
125
125
  return null;
126
126
  }
127
127
  }
128
128
  // 検出したものと期待するものが一致している場合無視させる
129
- if (_this.expected === matches[0]) {
129
+ if (this.expected === matches[0]) {
130
130
  return null;
131
131
  }
132
132
  return new diff_1.Diff({
133
- pattern: _this.pattern,
134
- expected: _this.expected,
133
+ pattern: this.pattern,
134
+ expected: this.expected,
135
135
  index: matches.index,
136
136
  matches: matches,
137
- rule: _this,
137
+ rule: this,
138
138
  });
139
139
  })
140
- .filter(function (v) { return !!v; }); // (Diff | null)[] を Diff[] に変換したい
141
- };
142
- Rule.prototype.toJSON = function () {
143
- var alt = {};
144
- for (var key in this) {
140
+ .filter((v) => !!v); // (Diff | null)[] を Diff[] に変換したい
141
+ }
142
+ toJSON() {
143
+ const alt = {};
144
+ for (const key in this) {
145
145
  if (key.indexOf("_") === 0) {
146
146
  continue;
147
147
  }
148
- var value = this[key];
148
+ const value = this[key];
149
149
  if (value instanceof RegExp) {
150
150
  alt[key] = value.toString();
151
151
  continue;
@@ -153,8 +153,7 @@ var Rule = /** @class */ (function () {
153
153
  alt[key] = value;
154
154
  }
155
155
  return alt;
156
- };
157
- return Rule;
158
- }());
156
+ }
157
+ }
159
158
  exports.Rule = Rule;
160
159
  //# sourceMappingURL=rule.js.map
package/lib/rule.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rule.js","sourceRoot":"","sources":["rule.ts"],"names":[],"mappings":"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","sourcesContent":["import { spreadAlphaNum, addBoundary, addDefaultFlags, parseRegExpString, escapeSpecialChars, combine, collectAll } from \"./utils/regexp\";\n\nimport { Options } from \"./options\";\nimport { RuleSpec } from \"./ruleSpec\";\n\nimport { Diff } from \"./changeset/diff\";\n\nimport * as raw from \"./raw\";\nimport { ChangeSet } from \"./changeset\";\n\nexport class Rule {\n expected: string;\n pattern: RegExp;\n regexpMustEmpty: string | undefined;\n options: Options;\n specs: RuleSpec[];\n raw: any /* raw.Rule */;\n\n constructor(src: string | raw.Rule) {\n if (!src) {\n throw new Error(\"src is requried\");\n }\n let rawRule: raw.Rule;\n if (typeof src === \"string\") {\n rawRule = {\n expected: src,\n };\n } else {\n rawRule = src;\n }\n function checkEmptyPattern(patterns: string | string[] | null | undefined) {\n if (patterns === \"\") {\n throw new Error(\"pattern can't be empty\");\n }\n Array.isArray(patterns) && patterns.forEach(pattern => {\n if (pattern === \"\") {\n throw new Error(\"patterns can't be empty\");\n }\n });\n }\n checkEmptyPattern(rawRule.pattern);\n checkEmptyPattern(rawRule.patterns);\n\n this.options = new Options(this, rawRule.options);\n\n this.expected = rawRule.expected;\n if (this.expected == null) {\n throw new Error(\"expected is required\");\n }\n\n this.pattern = this._patternToRegExp(rawRule.pattern || rawRule.patterns);\n if (this.pattern == null) {\n throw new Error(\"pattern is required\");\n }\n\n this.regexpMustEmpty = rawRule.regexpMustEmpty;\n\n // for JSON order\n const options = this.options;\n delete this.options;\n this.options = options;\n\n this.specs = (rawRule.specs || []).map(spec => new RuleSpec(spec));\n\n this.raw = rawRule;\n\n this.check();\n }\n\n /* @internal */\n _patternToRegExp(pattern?: string | string[] | null): RegExp {\n if (pattern === \"\") {\n throw new Error(\"pattern can't be empty\");\n } else if (pattern == null) {\n let result = spreadAlphaNum(this.expected);\n if (this.options.wordBoundary) {\n result = addBoundary(result);\n }\n return addDefaultFlags(result);\n } else if (typeof pattern === \"string\") {\n let result = parseRegExpString(pattern);\n if (!result) {\n result = new RegExp(escapeSpecialChars(pattern));\n }\n if (this.options.wordBoundary) {\n result = addBoundary(result);\n }\n return addDefaultFlags(result);\n } else if (pattern instanceof Array) {\n const result = combine(pattern.map(p => this._patternToRegExp(p)));\n return addDefaultFlags(result!);\n } else {\n throw new Error(`unexpected pattern: ${pattern}`);\n }\n }\n\n /* @internal */\n _shouldIgnore(ignoreRule: raw.IgnoreRule) {\n // NOTE 考え方:--rules-yaml で表示されるpattern or expectedで指定する\n // patternは配列で指定できて、そのうちの1つのパターンが指定された時に\n // そのルール全体が無視されるのか該当の1パターンだけ無視されるのか予想できないため\n\n if (ignoreRule.pattern != null && this.pattern.toString() === ignoreRule.pattern) {\n return true;\n }\n if (ignoreRule.expected != null && ignoreRule.expected === this.expected) {\n return true;\n }\n\n return false;\n }\n\n reset() {\n this.pattern.lastIndex = 0;\n }\n\n check() {\n this.specs.forEach(spec => {\n const diffs = this.applyRule(spec.from);\n const changeSet = new ChangeSet({ content: spec.from, diffs });\n const result = changeSet.applyChangeSets(spec.from);\n if (spec.to !== result) {\n throw new Error(`${this.expected} spec failed. \"${spec.from}\", expected \"${spec.to}\", but got \"${result}\", ${this.pattern}`);\n }\n });\n }\n\n applyRule(content: string): Diff[] {\n this.reset();\n const resultList = collectAll(this.pattern, content);\n return resultList\n .map(matches => {\n // JavaScriptでの正規表現では /(?<!記|大)事/ のような書き方ができない\n // /(記|大)事/ で regexpMustEmpty $1 の場合、第一グループが空じゃないとマッチしない、というルールにして回避\n if (this.regexpMustEmpty) {\n const match = /^\\$([0-9]+)$/.exec(this.regexpMustEmpty);\n if (match == null) {\n throw new Error(`${this.expected} target failed. please use $1 format.`);\n }\n const index = parseInt(match[1], 10);\n if (matches[index]) {\n return null;\n }\n }\n // 検出したものと期待するものが一致している場合無視させる\n if (this.expected === matches[0]) {\n return null;\n }\n return new Diff({\n pattern: this.pattern,\n expected: this.expected,\n index: matches.index,\n matches: matches,\n rule: this,\n });\n })\n .filter(v => !!v) as any as Diff[]; // (Diff | null)[] を Diff[] に変換したい\n }\n\n toJSON() {\n const alt: any = {};\n for (const key in this) {\n if (key.indexOf(\"_\") === 0) {\n continue;\n }\n const value = (<any>this)[key];\n if (value instanceof RegExp) {\n alt[key] = value.toString();\n continue;\n }\n alt[key] = value;\n }\n return alt;\n }\n}\n"]}
1
+ {"version":3,"file":"rule.js","sourceRoot":"","sources":["rule.ts"],"names":[],"mappings":";;;AAAA,2CAA0I;AAE1I,uCAAoC;AACpC,yCAAsC;AAEtC,2CAAwC;AAGxC,2CAAwC;AAExC,MAAa,IAAI;IAQb,YAAY,GAAsB;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,OAAiB,CAAC;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,GAAG;gBACN,QAAQ,EAAE,GAAG;aAChB,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,GAAG,CAAC;QAClB,CAAC;QACD,SAAS,iBAAiB,CAAC,QAA8C;YACrE,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACzB,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;wBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;oBAC/C,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAE/C,iBAAiB;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,OAAQ,IAAY,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;QAEnB,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,eAAe;IACf,gBAAgB,CAAC,OAAkC;QAC/C,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,MAAM,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC5B,MAAM,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,IAAA,wBAAe,EAAC,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,MAAM,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,GAAG,IAAI,MAAM,CAAC,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC5B,MAAM,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,IAAA,wBAAe,EAAC,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,OAAO,YAAY,KAAK,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,OAAO,IAAA,wBAAe,EAAC,MAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAED,eAAe;IACf,aAAa,CAAC,UAA0B;QACpC,uDAAuD;QACvD,wCAAwC;QACxC,2CAA2C;QAE3C,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACX,GAAG,IAAI,CAAC,QAAQ,kBAAkB,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,EAAE,eAAe,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,CAC9G,CAAC;YACN,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,OAAe;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,UAAU;aACZ,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACb,8CAA8C;YAC9C,oEAAoE;YACpE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACxD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,uCAAuC,CAAC,CAAC;gBAC7E,CAAC;gBACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjB,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;YACD,8BAA8B;YAC9B,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,IAAI,WAAI,CAAC;gBACZ,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;QACP,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAkB,CAAC,CAAC,kCAAkC;IAChF,CAAC;IAED,MAAM;QACF,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,SAAS;YACb,CAAC;YACD,MAAM,KAAK,GAAS,IAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAxKD,oBAwKC","sourcesContent":["import { spreadAlphaNum, addBoundary, addDefaultFlags, parseRegExpString, escapeSpecialChars, combine, collectAll } from \"./utils/regexp\";\n\nimport { Options } from \"./options\";\nimport { RuleSpec } from \"./ruleSpec\";\n\nimport { Diff } from \"./changeset/diff\";\n\nimport * as raw from \"./raw\";\nimport { ChangeSet } from \"./changeset\";\n\nexport class Rule {\n expected: string;\n pattern: RegExp;\n regexpMustEmpty: string | undefined;\n options: Options;\n specs: RuleSpec[];\n raw: any /* raw.Rule */;\n\n constructor(src: string | raw.Rule) {\n if (!src) {\n throw new Error(\"src is required\");\n }\n let rawRule: raw.Rule;\n if (typeof src === \"string\") {\n rawRule = {\n expected: src,\n };\n } else {\n rawRule = src;\n }\n function checkEmptyPattern(patterns: string | string[] | null | undefined) {\n if (patterns === \"\") {\n throw new Error(\"pattern can't be empty\");\n }\n if (Array.isArray(patterns)) {\n patterns.forEach((pattern) => {\n if (pattern === \"\") {\n throw new Error(\"patterns can't be empty\");\n }\n });\n }\n }\n checkEmptyPattern(rawRule.pattern);\n checkEmptyPattern(rawRule.patterns);\n\n this.options = new Options(this, rawRule.options);\n\n this.expected = rawRule.expected;\n if (this.expected == null) {\n throw new Error(\"expected is required\");\n }\n\n this.pattern = this._patternToRegExp(rawRule.pattern || rawRule.patterns);\n if (this.pattern == null) {\n throw new Error(\"pattern is required\");\n }\n\n this.regexpMustEmpty = rawRule.regexpMustEmpty;\n\n // for JSON order\n const options = this.options;\n delete (this as any).options;\n this.options = options;\n\n this.specs = (rawRule.specs || []).map((spec) => new RuleSpec(spec));\n\n this.raw = rawRule;\n\n this.check();\n }\n\n /* @internal */\n _patternToRegExp(pattern?: string | string[] | null): RegExp {\n if (pattern === \"\") {\n throw new Error(\"pattern can't be empty\");\n } else if (pattern == null) {\n let result = spreadAlphaNum(this.expected);\n if (this.options.wordBoundary) {\n result = addBoundary(result);\n }\n return addDefaultFlags(result);\n } else if (typeof pattern === \"string\") {\n let result = parseRegExpString(pattern);\n if (!result) {\n result = new RegExp(escapeSpecialChars(pattern));\n }\n if (this.options.wordBoundary) {\n result = addBoundary(result);\n }\n return addDefaultFlags(result);\n } else if (pattern instanceof Array) {\n const result = combine(pattern.map((p) => this._patternToRegExp(p)));\n return addDefaultFlags(result!);\n } else {\n throw new Error(`unexpected pattern: ${pattern}`);\n }\n }\n\n /* @internal */\n _shouldIgnore(ignoreRule: raw.IgnoreRule) {\n // NOTE 考え方:--rules-yaml で表示されるpattern or expectedで指定する\n // patternは配列で指定できて、そのうちの1つのパターンが指定された時に\n // そのルール全体が無視されるのか該当の1パターンだけ無視されるのか予想できないため\n\n if (ignoreRule.pattern != null && this.pattern.toString() === ignoreRule.pattern) {\n return true;\n }\n if (ignoreRule.expected != null && ignoreRule.expected === this.expected) {\n return true;\n }\n\n return false;\n }\n\n reset() {\n this.pattern.lastIndex = 0;\n }\n\n check() {\n this.specs.forEach((spec) => {\n const diffs = this.applyRule(spec.from);\n const changeSet = new ChangeSet({ content: spec.from, diffs });\n const result = changeSet.applyChangeSets(spec.from);\n if (spec.to !== result) {\n throw new Error(\n `${this.expected} spec failed. \"${spec.from}\", expected \"${spec.to}\", but got \"${result}\", ${this.pattern}`,\n );\n }\n });\n }\n\n applyRule(content: string): Diff[] {\n this.reset();\n const resultList = collectAll(this.pattern, content);\n return resultList\n .map((matches) => {\n // JavaScriptでの正規表現では /(?<!記|大)事/ のような書き方ができない\n // /(記|大)事/ で regexpMustEmpty $1 の場合、第一グループが空じゃないとマッチしない、というルールにして回避\n if (this.regexpMustEmpty) {\n const match = /^\\$([0-9]+)$/.exec(this.regexpMustEmpty);\n if (match == null) {\n throw new Error(`${this.expected} target failed. please use $1 format.`);\n }\n const index = parseInt(match[1], 10);\n if (matches[index]) {\n return null;\n }\n }\n // 検出したものと期待するものが一致している場合無視させる\n if (this.expected === matches[0]) {\n return null;\n }\n return new Diff({\n pattern: this.pattern,\n expected: this.expected,\n index: matches.index,\n matches: matches,\n rule: this,\n });\n })\n .filter((v) => !!v) as any as Diff[]; // (Diff | null)[] を Diff[] に変換したい\n }\n\n toJSON() {\n const alt: any = {};\n for (const key in this) {\n if (key.indexOf(\"_\") === 0) {\n continue;\n }\n const value = (<any>this)[key];\n if (value instanceof RegExp) {\n alt[key] = value.toString();\n continue;\n }\n alt[key] = value;\n }\n return alt;\n }\n}\n"]}
package/lib/ruleSpec.js CHANGED
@@ -1,20 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var RuleSpec = /** @class */ (function () {
4
- function RuleSpec(src) {
3
+ exports.RuleSpec = void 0;
4
+ class RuleSpec {
5
+ constructor(src) {
5
6
  if (!src) {
6
- throw new Error("src is requried");
7
+ throw new Error("src is required");
7
8
  }
8
9
  if (!src.from) {
9
- throw new Error("from is requried");
10
+ throw new Error("from is required");
10
11
  }
11
12
  if (!src.to) {
12
- throw new Error("to is requried");
13
+ throw new Error("to is required");
13
14
  }
14
15
  this.from = src.from;
15
16
  this.to = src.to;
16
17
  }
17
- return RuleSpec;
18
- }());
18
+ }
19
19
  exports.RuleSpec = RuleSpec;
20
20
  //# sourceMappingURL=ruleSpec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ruleSpec.js","sourceRoot":"","sources":["ruleSpec.ts"],"names":[],"mappings":";;AAEA;IAII,kBAAY,GAAiB;QACzB,IAAI,CAAC,GAAG,EAAE;YACN,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;IACL,eAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,4BAAQ","sourcesContent":["import * as raw from \"./raw\";\n\nexport class RuleSpec {\n from: string;\n to: string;\n\n constructor(src: raw.RuleSpec) {\n if (!src) {\n throw new Error(\"src is requried\");\n }\n if (!src.from) {\n throw new Error(\"from is requried\");\n }\n if (!src.to) {\n throw new Error(\"to is requried\");\n }\n this.from = src.from;\n this.to = src.to;\n }\n}\n"]}
1
+ {"version":3,"file":"ruleSpec.js","sourceRoot":"","sources":["ruleSpec.ts"],"names":[],"mappings":";;;AAEA,MAAa,QAAQ;IAIjB,YAAY,GAAiB;QACzB,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;CACJ;AAjBD,4BAiBC","sourcesContent":["import * as raw from \"./raw\";\n\nexport class RuleSpec {\n from: string;\n to: string;\n\n constructor(src: raw.RuleSpec) {\n if (!src) {\n throw new Error(\"src is required\");\n }\n if (!src.from) {\n throw new Error(\"from is required\");\n }\n if (!src.to) {\n throw new Error(\"to is required\");\n }\n this.from = src.from;\n this.to = src.to;\n }\n}\n"]}
package/lib/target.js CHANGED
@@ -1,38 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var regexp_1 = require("./utils/regexp");
4
- var targetPattern_1 = require("./targetPattern");
5
- var Target = /** @class */ (function () {
6
- function Target(src) {
3
+ exports.Target = void 0;
4
+ const regexp_1 = require("./utils/regexp");
5
+ const targetPattern_1 = require("./targetPattern");
6
+ class Target {
7
+ constructor(src) {
7
8
  if (!src) {
8
- throw new Error("src is requried");
9
+ throw new Error("src is required");
9
10
  }
10
- this.file = regexp_1.parseRegExpString(src.file) || new RegExp(regexp_1.escapeSpecialChars(src.file));
11
+ this.file = (0, regexp_1.parseRegExpString)(src.file) || new RegExp((0, regexp_1.escapeSpecialChars)(src.file));
11
12
  if (src.includes) {
12
- this.includes = src.includes.map(function (include) { return new targetPattern_1.TargetPattern(include); });
13
+ this.includes = src.includes.map((include) => new targetPattern_1.TargetPattern(include));
13
14
  }
14
15
  else {
15
16
  this.includes = [];
16
17
  }
17
18
  if (src.excludes) {
18
- this.excludes = src.excludes.map(function (exclude) { return new targetPattern_1.TargetPattern(exclude); });
19
+ this.excludes = src.excludes.map((exclude) => new targetPattern_1.TargetPattern(exclude));
19
20
  }
20
21
  else {
21
22
  this.excludes = [];
22
23
  }
23
24
  }
24
- Target.prototype.reset = function () {
25
+ reset() {
25
26
  this.file.lastIndex = 0;
26
- this.includes.forEach(function (include) { return include.reset(); });
27
- this.excludes.forEach(function (exclude) { return exclude.reset(); });
28
- };
29
- Target.prototype.toJSON = function () {
30
- var alt = {};
31
- for (var key in this) {
27
+ this.includes.forEach((include) => include.reset());
28
+ this.excludes.forEach((exclude) => exclude.reset());
29
+ }
30
+ toJSON() {
31
+ const alt = {};
32
+ for (const key in this) {
32
33
  if (key.indexOf("_") === 0) {
33
34
  continue;
34
35
  }
35
- var value = this[key];
36
+ const value = this[key];
36
37
  if (value instanceof RegExp) {
37
38
  alt[key] = value.toString();
38
39
  continue;
@@ -40,8 +41,7 @@ var Target = /** @class */ (function () {
40
41
  alt[key] = value;
41
42
  }
42
43
  return alt;
43
- };
44
- return Target;
45
- }());
44
+ }
45
+ }
46
46
  exports.Target = Target;
47
47
  //# sourceMappingURL=target.js.map
package/lib/target.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"target.js","sourceRoot":"","sources":["target.ts"],"names":[],"mappings":";;AAAA,yCAAuE;AAGvE,iDAAgD;AAEhD;IAKI,gBAAY,GAAe;QACvB,IAAI,CAAC,GAAG,EAAE;YACN,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,IAAI,GAAG,0BAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,2BAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,IAAI,GAAG,CAAC,QAAQ,EAAE;YACd,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,OAAO,IAAI,OAAA,IAAI,6BAAa,CAAC,OAAO,CAAC,EAA1B,CAA0B,CAAC,CAAC;SAC3E;aAAM;YACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,GAAG,CAAC,QAAQ,EAAE;YACd,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,OAAO,IAAI,OAAA,IAAI,6BAAa,CAAC,OAAO,CAAC,EAA1B,CAA0B,CAAC,CAAC;SAC3E;aAAM;YACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACtB;IACL,CAAC;IAED,sBAAK,GAAL;QACI,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,KAAK,EAAE,EAAf,CAAe,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,KAAK,EAAE,EAAf,CAAe,CAAC,CAAC;IACtD,CAAC;IAED,uBAAM,GAAN;QACI,IAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,IAAM,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACxB,SAAS;aACZ;YACD,IAAM,KAAK,GAAS,IAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,YAAY,MAAM,EAAE;gBACzB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5B,SAAS;aACZ;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACpB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IACL,aAAC;AAAD,CAAC,AA3CD,IA2CC;AA3CY,wBAAM","sourcesContent":["import { parseRegExpString, escapeSpecialChars } from \"./utils/regexp\";\n\nimport * as raw from \"./raw\";\nimport { TargetPattern } from \"./targetPattern\";\n\nexport class Target {\n file: RegExp;\n includes: TargetPattern[];\n excludes: TargetPattern[];\n\n constructor(src: raw.Target) {\n if (!src) {\n throw new Error(\"src is requried\");\n }\n this.file = parseRegExpString(src.file) || new RegExp(escapeSpecialChars(src.file));\n if (src.includes) {\n this.includes = src.includes.map(include => new TargetPattern(include));\n } else {\n this.includes = [];\n }\n if (src.excludes) {\n this.excludes = src.excludes.map(exclude => new TargetPattern(exclude));\n } else {\n this.excludes = [];\n }\n }\n\n reset() {\n this.file.lastIndex = 0;\n this.includes.forEach(include => include.reset());\n this.excludes.forEach(exclude => exclude.reset());\n }\n\n toJSON() {\n const alt: any = {};\n for (const key in this) {\n if (key.indexOf(\"_\") === 0) {\n continue;\n }\n const value = (<any>this)[key];\n if (value instanceof RegExp) {\n alt[key] = value.toString();\n continue;\n }\n alt[key] = value;\n }\n return alt;\n }\n}\n"]}
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["target.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AAGvE,mDAAgD;AAEhD,MAAa,MAAM;IAKf,YAAY,GAAe;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAA,0BAAiB,EAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAA,2BAAkB,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,6BAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,6BAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM;QACF,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,SAAS;YACb,CAAC;YACD,MAAM,KAAK,GAAS,IAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AA3CD,wBA2CC","sourcesContent":["import { parseRegExpString, escapeSpecialChars } from \"./utils/regexp\";\n\nimport * as raw from \"./raw\";\nimport { TargetPattern } from \"./targetPattern\";\n\nexport class Target {\n file: RegExp;\n includes: TargetPattern[];\n excludes: TargetPattern[];\n\n constructor(src: raw.Target) {\n if (!src) {\n throw new Error(\"src is required\");\n }\n this.file = parseRegExpString(src.file) || new RegExp(escapeSpecialChars(src.file));\n if (src.includes) {\n this.includes = src.includes.map((include) => new TargetPattern(include));\n } else {\n this.includes = [];\n }\n if (src.excludes) {\n this.excludes = src.excludes.map((exclude) => new TargetPattern(exclude));\n } else {\n this.excludes = [];\n }\n }\n\n reset() {\n this.file.lastIndex = 0;\n this.includes.forEach((include) => include.reset());\n this.excludes.forEach((exclude) => exclude.reset());\n }\n\n toJSON() {\n const alt: any = {};\n for (const key in this) {\n if (key.indexOf(\"_\") === 0) {\n continue;\n }\n const value = (<any>this)[key];\n if (value instanceof RegExp) {\n alt[key] = value.toString();\n continue;\n }\n alt[key] = value;\n }\n return alt;\n }\n}\n"]}
@@ -1,34 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var regexp_1 = require("./utils/regexp");
4
- var TargetPattern = /** @class */ (function () {
5
- function TargetPattern(src) {
3
+ exports.TargetPattern = void 0;
4
+ const regexp_1 = require("./utils/regexp");
5
+ class TargetPattern {
6
+ constructor(src) {
6
7
  if (!src) {
7
- throw new Error("src is requried");
8
+ throw new Error("src is required");
8
9
  }
9
10
  if (typeof src === "string") {
10
- this.pattern = regexp_1.parseRegExpString(src) || new RegExp(regexp_1.escapeSpecialChars(src));
11
- this.pattern = regexp_1.addDefaultFlags(this.pattern);
11
+ this.pattern = (0, regexp_1.parseRegExpString)(src) || new RegExp((0, regexp_1.escapeSpecialChars)(src));
12
+ this.pattern = (0, regexp_1.addDefaultFlags)(this.pattern);
12
13
  return;
13
14
  }
14
15
  else {
15
16
  if (!src.pattern) {
16
- throw new Error("pattern is requried");
17
+ throw new Error("pattern is required");
17
18
  }
18
- this.pattern = regexp_1.parseRegExpString(src.pattern) || regexp_1.addDefaultFlags(new RegExp(regexp_1.escapeSpecialChars(src.pattern)));
19
- this.pattern = regexp_1.addDefaultFlags(this.pattern);
19
+ this.pattern = (0, regexp_1.parseRegExpString)(src.pattern) || (0, regexp_1.addDefaultFlags)(new RegExp((0, regexp_1.escapeSpecialChars)(src.pattern)));
20
+ this.pattern = (0, regexp_1.addDefaultFlags)(this.pattern);
20
21
  }
21
22
  }
22
- TargetPattern.prototype.reset = function () {
23
+ reset() {
23
24
  this.pattern.lastIndex = 0;
24
- };
25
- TargetPattern.prototype.toJSON = function () {
26
- var alt = {};
27
- for (var key in this) {
25
+ }
26
+ toJSON() {
27
+ const alt = {};
28
+ for (const key in this) {
28
29
  if (key.indexOf("_") === 0) {
29
30
  continue;
30
31
  }
31
- var value = this[key];
32
+ const value = this[key];
32
33
  if (value instanceof RegExp) {
33
34
  alt[key] = value.toString();
34
35
  continue;
@@ -36,8 +37,7 @@ var TargetPattern = /** @class */ (function () {
36
37
  alt[key] = value;
37
38
  }
38
39
  return alt;
39
- };
40
- return TargetPattern;
41
- }());
40
+ }
41
+ }
42
42
  exports.TargetPattern = TargetPattern;
43
43
  //# sourceMappingURL=targetPattern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targetPattern.js","sourceRoot":"","sources":["targetPattern.ts"],"names":[],"mappings":";;AAAA,yCAAwF;AAGxF;IAGI,uBAAY,GAA+B;QACvC,IAAI,CAAC,GAAG,EAAE;YACN,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACtC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACzB,IAAI,CAAC,OAAO,GAAG,0BAAiB,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,2BAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,OAAO,GAAG,wBAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO;SACV;aAAM;YACH,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,OAAO,GAAG,0BAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,wBAAe,CAAC,IAAI,MAAM,CAAC,2BAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9G,IAAI,CAAC,OAAO,GAAG,wBAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAChD;IACL,CAAC;IAED,6BAAK,GAAL;QACI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,8BAAM,GAAN;QACI,IAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,IAAM,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACxB,SAAS;aACZ;YACD,IAAM,KAAK,GAAS,IAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,YAAY,MAAM,EAAE;gBACzB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5B,SAAS;aACZ;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACpB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IACL,oBAAC;AAAD,CAAC,AAvCD,IAuCC;AAvCY,sCAAa","sourcesContent":["import { parseRegExpString, addDefaultFlags, escapeSpecialChars } from \"./utils/regexp\";\nimport * as raw from \"./raw\";\n\nexport class TargetPattern {\n pattern: RegExp;\n\n constructor(src: string | raw.TargetPattern) {\n if (!src) {\n throw new Error(\"src is requried\");\n }\n if (typeof src === \"string\") {\n this.pattern = parseRegExpString(src) || new RegExp(escapeSpecialChars(src));\n this.pattern = addDefaultFlags(this.pattern);\n return;\n } else {\n if (!src.pattern) {\n throw new Error(\"pattern is requried\");\n }\n this.pattern = parseRegExpString(src.pattern) || addDefaultFlags(new RegExp(escapeSpecialChars(src.pattern)));\n this.pattern = addDefaultFlags(this.pattern);\n }\n }\n\n reset() {\n this.pattern.lastIndex = 0;\n }\n\n toJSON() {\n const alt: any = {};\n for (const key in this) {\n if (key.indexOf(\"_\") === 0) {\n continue;\n }\n const value = (<any>this)[key];\n if (value instanceof RegExp) {\n alt[key] = value.toString();\n continue;\n }\n alt[key] = value;\n }\n return alt;\n }\n}\n"]}
1
+ {"version":3,"file":"targetPattern.js","sourceRoot":"","sources":["targetPattern.ts"],"names":[],"mappings":";;;AAAA,2CAAwF;AAGxF,MAAa,aAAa;IAGtB,YAAY,GAA+B;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAA,0BAAiB,EAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAA,2BAAkB,EAAC,GAAG,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,OAAO,GAAG,IAAA,wBAAe,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO;QACX,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,IAAA,0BAAiB,EAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAA,wBAAe,EAAC,IAAI,MAAM,CAAC,IAAA,2BAAkB,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9G,IAAI,CAAC,OAAO,GAAG,IAAA,wBAAe,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,KAAK;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM;QACF,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,SAAS;YACb,CAAC;YACD,MAAM,KAAK,GAAS,IAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAvCD,sCAuCC","sourcesContent":["import { parseRegExpString, addDefaultFlags, escapeSpecialChars } from \"./utils/regexp\";\nimport * as raw from \"./raw\";\n\nexport class TargetPattern {\n pattern: RegExp;\n\n constructor(src: string | raw.TargetPattern) {\n if (!src) {\n throw new Error(\"src is required\");\n }\n if (typeof src === \"string\") {\n this.pattern = parseRegExpString(src) || new RegExp(escapeSpecialChars(src));\n this.pattern = addDefaultFlags(this.pattern);\n return;\n } else {\n if (!src.pattern) {\n throw new Error(\"pattern is required\");\n }\n this.pattern = parseRegExpString(src.pattern) || addDefaultFlags(new RegExp(escapeSpecialChars(src.pattern)));\n this.pattern = addDefaultFlags(this.pattern);\n }\n }\n\n reset() {\n this.pattern.lastIndex = 0;\n }\n\n toJSON() {\n const alt: any = {};\n for (const key in this) {\n if (key.indexOf(\"_\") === 0) {\n continue;\n }\n const value = (<any>this)[key];\n if (value instanceof RegExp) {\n alt[key] = value.toString();\n continue;\n }\n alt[key] = value;\n }\n return alt;\n }\n}\n"]}
@@ -1,16 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.indexToLineColumn = indexToLineColumn;
3
4
  function indexToLineColumn(index, content) {
4
5
  if (index < 0 || content[index] == null) {
5
- throw new Error("unbound index value: " + index);
6
+ throw new Error(`unbound index value: ${index}`);
6
7
  }
7
- var line = 0;
8
- var prevLfIndex = 0;
8
+ let line = 0;
9
+ let prevLfIndex = 0;
9
10
  while (true) {
10
- var lfIndex = content.indexOf("\n", prevLfIndex + 1);
11
+ const lfIndex = content.indexOf("\n", prevLfIndex + 1);
11
12
  if (lfIndex === -1 || index <= lfIndex) {
12
13
  return {
13
- line: line,
14
+ line,
14
15
  column: index - (prevLfIndex === 0 ? 0 : prevLfIndex + 1),
15
16
  };
16
17
  }
@@ -18,5 +19,4 @@ function indexToLineColumn(index, content) {
18
19
  prevLfIndex = lfIndex;
19
20
  }
20
21
  }
21
- exports.indexToLineColumn = indexToLineColumn;
22
22
  //# sourceMappingURL=content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["content.ts"],"names":[],"mappings":";;AAAA,SAAgB,iBAAiB,CAAC,KAAa,EAAE,OAAe;IAC5D,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,0BAAwB,KAAO,CAAC,CAAC;KACpD;IACD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,OAAO,IAAI,EAAE;QACT,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,OAAO,EAAE;YACpC,OAAO;gBACH,IAAI,MAAA;gBACJ,MAAM,EAAE,KAAK,GAAG,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;aAC5D,CAAC;SACL;QACD,IAAI,EAAE,CAAC;QACP,WAAW,GAAG,OAAO,CAAC;KACzB;AACL,CAAC;AAjBD,8CAiBC","sourcesContent":["export function indexToLineColumn(index: number, content: string) {\n if (index < 0 || content[index] == null) {\n throw new Error(`unbound index value: ${index}`);\n }\n let line = 0;\n let prevLfIndex = 0;\n while (true) {\n const lfIndex = content.indexOf(\"\\n\", prevLfIndex + 1);\n if (lfIndex === -1 || index <= lfIndex) {\n return {\n line,\n column: index - (prevLfIndex === 0 ? 0 : prevLfIndex + 1),\n };\n }\n line++;\n prevLfIndex = lfIndex;\n }\n}\n"]}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["content.ts"],"names":[],"mappings":";;AAAA,8CAiBC;AAjBD,SAAgB,iBAAiB,CAAC,KAAa,EAAE,OAAe;IAC5D,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrC,OAAO;gBACH,IAAI;gBACJ,MAAM,EAAE,KAAK,GAAG,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;aAC5D,CAAC;QACN,CAAC;QACD,IAAI,EAAE,CAAC;QACP,WAAW,GAAG,OAAO,CAAC;IAC1B,CAAC;AACL,CAAC","sourcesContent":["export function indexToLineColumn(index: number, content: string) {\n if (index < 0 || content[index] == null) {\n throw new Error(`unbound index value: ${index}`);\n }\n let line = 0;\n let prevLfIndex = 0;\n while (true) {\n const lfIndex = content.indexOf(\"\\n\", prevLfIndex + 1);\n if (lfIndex === -1 || index <= lfIndex) {\n return {\n line,\n column: index - (prevLfIndex === 0 ? 0 : prevLfIndex + 1),\n };\n }\n line++;\n prevLfIndex = lfIndex;\n }\n}\n"]}