prh 6.0.4 → 6.0.6
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/cli.js +37 -4
- package/lib/cli.js.map +1 -1
- package/lib/engine.js +34 -1
- package/lib/engine.js.map +1 -1
- package/lib/index.js +36 -3
- package/lib/index.js.map +1 -1
- package/lib/utils/regexp.d.ts +0 -1
- package/lib/utils/regexp.js +5 -19
- package/lib/utils/regexp.js.map +1 -1
- package/package.json +3 -3
package/lib/cli.js
CHANGED
|
@@ -1,9 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const path = require("path");
|
|
4
|
-
const fs = require("fs");
|
|
5
|
-
const yaml = require("js-yaml");
|
|
6
|
-
const diff = require("diff");
|
|
36
|
+
const path = __importStar(require("path"));
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const yaml = __importStar(require("js-yaml"));
|
|
39
|
+
const diff = __importStar(require("diff"));
|
|
7
40
|
const _1 = require("./");
|
|
8
41
|
const content_1 = require("./utils/content");
|
|
9
42
|
const commander_1 = require("commander");
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["cli.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"path\";\nimport * as fs from \"fs\";\nimport * as yaml from \"js-yaml\";\nimport * as diff from \"diff\";\n\nimport { fromYAMLFilePaths, getRuleFilePath } from \"./\";\nimport { indexToLineColumn } from \"./utils/content\";\n\nimport { Command } from \"commander\";\nconst pkg = require(\"../package.json\");\n\ninterface Options {\n rulesJson: boolean;\n rulesYaml: boolean;\n replace: boolean;\n verify: boolean;\n stdout: boolean;\n diff: boolean;\n verbose: boolean;\n rules?: string[];\n}\n\nconst program = new Command();\n\nprogram\n .name(\"prh\")\n .version(pkg.version, \"-v, --version\")\n .argument(\"[files...]\")\n .option(\"--rules-json\", \"emit rule set in json format\")\n .option(\"--rules-yaml\", \"emit rule set in yaml format\")\n .option(\"--rules <path>\", \"path to rule yaml file\", (value: string, previous: string[]) => previous.concat([value]), [] as string[])\n .option(\"--verify\", \"checking file validity\")\n .option(\"--stdout\", \"print replaced content to stdout\")\n .option(\"--diff\", \"show unified diff\")\n .option(\"--verbose\", \"makes output more verbose\")\n .option(\"-r, --replace\", \"replace input files\")\n .action((files: string[], opts: Options) => {\n if (opts.rulesJson || opts.rulesYaml) {\n if (opts.verbose) {\n console.warn(`processing ${process.cwd()} dir...`);\n }\n const engine = getEngineByTargetDir(process.cwd(), opts);\n if (opts.rulesJson) {\n console.log(JSON.stringify(engine, null, 2));\n return;\n } else if (opts.rulesYaml) {\n console.log(yaml.dump(JSON.parse(JSON.stringify(engine, null, 2))));\n return;\n }\n }\n\n if (files.length === 0) {\n throw new Error(\"files is required more than 1 argument\");\n }\n\n const invalidFiles: string[] = [];\n files.forEach((filePath) => {\n if (opts.verbose) {\n console.warn(`processing ${filePath}...`);\n }\n const content = fs.readFileSync(filePath, { encoding: \"utf8\" });\n const engine = getEngineByTargetDir(path.dirname(filePath), opts);\n const changeSet = engine.makeChangeSet(filePath);\n if (changeSet.diffs.length !== 0) {\n invalidFiles.push(filePath);\n }\n\n if (opts.stdout) {\n const result = changeSet.applyChangeSets(content);\n process.stdout.write(result);\n } else if (opts.diff) {\n const result = changeSet.applyChangeSets(content);\n const patch = diff.createPatch(filePath, content, result, \"before\", \"replaced\");\n console.log(patch);\n } else if (opts.replace) {\n const result = changeSet.applyChangeSets(content);\n if (content !== result) {\n fs.writeFileSync(filePath, result);\n console.warn(`replaced ${filePath}`);\n }\n } else {\n changeSet.diffs.forEach((d) => {\n const before = changeSet.content.substr(d.index, d.tailIndex - d.index);\n const after = d.newText;\n if (after == null) {\n return;\n }\n const lineColumn = indexToLineColumn(d.index, changeSet.content);\n console.log(`${changeSet.filePath}(${lineColumn.line + 1},${lineColumn.column + 1}): ${before} → ${after}`);\n });\n }\n });\n if (opts.verify && invalidFiles.length !== 0) {\n throw new Error(`${invalidFiles.join(\" ,\")} failed proofreading`);\n }\n });\n\nprogram\n .command(\"init\")\n .description(\"generate prh.yml\")\n .action(() => {\n fs.createReadStream(path.resolve(__dirname, \"../misc/prh.yml\")).pipe(fs.createWriteStream(\"prh.yml\"));\n console.log(\"create prh.yml\");\n console.log(\"see prh/rules collection https://github.com/prh/rules\");\n });\n\nfunction getEngineByTargetDir(targetDir: string, opts: Options) {\n let rulePaths: string[];\n if (opts.rules && opts.rules[0]) {\n rulePaths = [...opts.rules];\n } else {\n const foundPath = getRuleFilePath(targetDir);\n if (!foundPath) {\n throw new Error(`can't find rule file from ${targetDir}`);\n }\n\n rulePaths = [foundPath];\n }\n\n if (opts.verbose) {\n rulePaths.forEach((p, i) => {\n console.warn(` apply ${i + 1}: ${p}`);\n });\n }\n\n return fromYAMLFilePaths(...rulePaths);\n}\n\nprogram.parseAsync(process.argv).catch(errorHandler);\n\nfunction errorHandler(err: any) {\n if (err instanceof Error) {\n console.error(err.stack);\n } else {\n console.error(err);\n }\n return Promise.resolve(null).then(() => {\n process.exit(1);\n });\n}\n"]}
|
package/lib/engine.js
CHANGED
|
@@ -1,7 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.Engine = void 0;
|
|
4
|
-
const fs = require("fs");
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
5
38
|
const regexp_1 = require("./utils/regexp");
|
|
6
39
|
const paragraph_1 = require("./paragraph");
|
|
7
40
|
const target_1 = require("./target");
|
package/lib/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from \"fs\";\n\nimport { equals } from \"./utils/regexp\";\n\nimport * as raw from \"./raw\";\nimport { Paragraph } from \"./paragraph\";\nimport { Target } from \"./target\";\nimport { Rule } from \"./rule\";\nimport { makeChangeSet, ChangeSet } from \"./changeset\";\n\nexport class Engine {\n version: number;\n targets: Target[];\n rules: Rule[];\n sourcePaths: string[]; // NOTE ソースとなったファイルのパス\n\n constructor(src: raw.Config) {\n if (!src) {\n throw new Error(\"src is required\");\n }\n this.version = +src.version || 1;\n this.targets = (src.targets || []).map((target) => new Target(target));\n this.rules = (src.rules || []).map((rule) => new Rule(rule));\n this.sourcePaths = [];\n }\n\n merge(other: Engine) {\n if (!other) {\n throw new Error(\"other is required\");\n }\n if (this.version !== other.version) {\n throw new Error(\"version mismatch!\");\n }\n other.sourcePaths.forEach((sourcePath) => {\n const exists = this.sourcePaths.filter((otherSourcePath) => otherSourcePath === sourcePath).length !== 0;\n if (!exists) {\n this.sourcePaths.push(sourcePath);\n }\n });\n other.targets.forEach((otherTarget) => {\n const exists = this.targets.filter((target) => equals(target.file, otherTarget.file)).length !== 0;\n if (!exists) {\n this.targets.push(otherTarget);\n }\n });\n // NOTE https://github.com/vvakame/prh/issues/18#issuecomment-222524140\n const reqRules = other.rules.filter((otherRule) => {\n return this.rules.filter((rule) => rule.expected === otherRule.expected).length === 0;\n });\n this.rules = this.rules.concat(reqRules);\n }\n\n makeChangeSet(filePath: string, contentText?: string): ChangeSet {\n const content: string = contentText != null ? contentText : fs.readFileSync(filePath, { encoding: \"utf8\" });\n\n const re = /([^]*?)\\n{2,}/g;\n const paragraphs: Paragraph[] = [];\n {\n let lastIndex = 0;\n while (true) {\n const matches = re.exec(content);\n if (!matches) {\n paragraphs.push(new Paragraph(lastIndex, content.substr(lastIndex)));\n break;\n }\n paragraphs.push(new Paragraph(matches.index, matches[1]));\n lastIndex = re.lastIndex;\n }\n }\n\n const diffs = paragraphs.map((p) => p.makeDiffs(this.rules)).reduce((p, c) => p.concat(c), []);\n let changeSet = new ChangeSet({ filePath, content, diffs });\n\n let includes: ChangeSet | null = null;\n let excludes: ChangeSet | null = null;\n this.targets.forEach((target) => {\n target.reset();\n if (!target.file.test(filePath)) {\n return;\n }\n if (target.includes.length !== 0) {\n // .ts の // の後や /* */ の内部だけ対象にしたい場合のための機能\n target.includes.forEach((include) => {\n const intersect = makeChangeSet(filePath, content, include.pattern);\n if (includes) {\n includes = includes.concat(intersect);\n } else {\n includes = intersect;\n }\n });\n }\n if (target.excludes.length !== 0) {\n // .re の #@ の後を対象にしたくない場合のための機能\n target.excludes.forEach((exclude) => {\n const subsract = makeChangeSet(filePath, content, exclude.pattern);\n if (excludes) {\n excludes = excludes.concat(subsract);\n } else {\n excludes = subsract;\n }\n });\n }\n });\n\n if (includes) {\n changeSet = changeSet.intersect(includes);\n }\n if (excludes) {\n changeSet = changeSet.subtract(excludes);\n }\n\n return changeSet;\n }\n\n replaceByRule(filePath: string, content?: string) {\n if (content == null) {\n content = fs.readFileSync(filePath, { encoding: \"utf8\" });\n }\n const changeSet = this.makeChangeSet(filePath, content);\n return changeSet.applyChangeSets(content);\n }\n}\n"]}
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.Diff = exports.ChangeSet = exports.Engine = void 0;
|
|
4
37
|
exports.fromYAMLFilePaths = fromYAMLFilePaths;
|
|
@@ -10,9 +43,9 @@ exports.fromYAMLFilePathAsync = fromYAMLFilePathAsync;
|
|
|
10
43
|
exports.fromYAMLAsync = fromYAMLAsync;
|
|
11
44
|
exports.fromRowConfigAsync = fromRowConfigAsync;
|
|
12
45
|
exports.getRuleFilePath = getRuleFilePath;
|
|
13
|
-
const fs = require("fs");
|
|
14
|
-
const path = require("path");
|
|
15
|
-
const yaml = require("js-yaml");
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const yaml = __importStar(require("js-yaml"));
|
|
16
49
|
const engine_1 = require("./engine");
|
|
17
50
|
Object.defineProperty(exports, "Engine", { enumerable: true, get: function () { return engine_1.Engine; } });
|
|
18
51
|
const changeset_1 = require("./changeset/");
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as yaml from \"js-yaml\";\n\nimport * as raw from \"./raw\";\nimport { Engine } from \"./engine\";\nimport { ChangeSet, Diff } from \"./changeset/\";\n\nexport { Engine, ChangeSet, Diff };\n\nexport function fromYAMLFilePaths(...configPaths: string[]): Engine {\n const engine = fromYAMLFilePath(configPaths[0]);\n configPaths.splice(1).forEach((path) => {\n engine.merge(fromYAMLFilePath(path));\n });\n return engine;\n}\n\nexport interface Options {\n disableImports?: boolean;\n}\n\nexport function fromYAMLFilePath(configPath: string, opts: Options = {}): Engine {\n const content = fs.readFileSync(configPath, { encoding: \"utf8\" });\n return fromYAML(configPath, content, opts);\n}\n\nexport function fromYAML(configPath: string, yamlContent: string, opts: Options = {}): Engine {\n const rawConfig = yaml.load(yamlContent) as raw.Config;\n return fromRowConfig(configPath, rawConfig, opts);\n}\n\nexport function fromRowConfig(configPath: string, rawConfig: raw.Config, opts: Options = {}): Engine {\n const engine = new Engine(rawConfig);\n engine.sourcePaths.push(path.normalize(configPath));\n\n if (!opts.disableImports && rawConfig.imports) {\n // TODO この辺の処理をEngine側に移したい\n // なるべく破壊的変更を避ける\n // fsやyamlを使わずに同等のEngineを組み立てる余地を残す\n // async化したいけどprhの参照パッケージが壊れるのが辛い\n\n let importSpecs: raw.ImportSpec[];\n if (typeof rawConfig.imports === \"string\") {\n importSpecs = [\n {\n path: rawConfig.imports,\n },\n ];\n } else {\n importSpecs = rawConfig.imports.map((imp) => {\n if (typeof imp === \"string\") {\n return {\n path: imp,\n };\n }\n return imp;\n });\n }\n importSpecs.forEach((importSpec) => {\n const importedConfigPath = path.join(path.dirname(configPath), importSpec.path);\n const newEngine = fromYAMLFilePath(importedConfigPath, {\n disableImports: !!importSpec.disableImports,\n });\n\n const ignoreRules = (importSpec.ignoreRules || []).map((ignoreRule) => {\n return typeof ignoreRule === \"string\" ? { pattern: ignoreRule } : ignoreRule;\n });\n newEngine.rules = newEngine.rules.filter((rule) => {\n return ignoreRules.every((ignoreRule) => {\n return !rule._shouldIgnore(ignoreRule);\n });\n });\n\n engine.merge(newEngine);\n });\n }\n\n return engine;\n}\n\nexport function fromYAMLFilePathsAsync(...configPaths: string[]): Promise<Engine> {\n try {\n return Promise.resolve(fromYAMLFilePaths(...configPaths));\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport function fromYAMLFilePathAsync(configPath: string, opts: Options = {}): Promise<Engine> {\n try {\n return Promise.resolve(fromYAMLFilePath(configPath, opts));\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport function fromYAMLAsync(configPath: string, yamlContent: string, opts: Options = {}): Promise<Engine> {\n try {\n return Promise.resolve(fromYAML(configPath, yamlContent, opts));\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport function fromRowConfigAsync(configPath: string, rawConfig: raw.Config, opts: Options = {}): Promise<Engine> {\n try {\n return Promise.resolve(fromRowConfig(configPath, rawConfig, opts));\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport function getRuleFilePath(baseDir: string, configFileName = \"prh.yml\"): string | null {\n const configFilePath = path.resolve(baseDir, configFileName);\n if (fs.existsSync(configFilePath)) {\n return configFilePath;\n }\n\n if (baseDir.length === path.dirname(baseDir).length) {\n return null;\n }\n\n return getRuleFilePath(path.resolve(baseDir, \"../\"), configFileName);\n}\n"]}
|
package/lib/utils/regexp.d.ts
CHANGED
package/lib/utils/regexp.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.jpChar = exports.jpKanji = exports.jpKana = exports.jpHira =
|
|
3
|
+
exports.jpChar = exports.jpKanji = exports.jpKana = exports.jpHira = void 0;
|
|
4
4
|
exports.concat = concat;
|
|
5
5
|
exports.combine = combine;
|
|
6
6
|
exports.addBoundary = addBoundary;
|
|
@@ -13,22 +13,12 @@ exports.equals = equals;
|
|
|
13
13
|
const regexpRegexp = /^\/(.*)\/([gimy]*)$/;
|
|
14
14
|
const hankakuAlphaNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
15
15
|
const zenkakuAlphaNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
16
|
-
exports.supportRegExpUnicodeFlag = (() => {
|
|
17
|
-
try {
|
|
18
|
-
new RegExp("", "u");
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
catch (e) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
})();
|
|
25
16
|
// http://www.tamasoft.co.jp/ja/general-info/unicode.html
|
|
26
17
|
exports.jpHira = /[ぁ-ゖ]/;
|
|
27
18
|
exports.jpKana = /[ァ-ヺ]/;
|
|
28
19
|
// http://tama-san.com/?p=196
|
|
29
20
|
exports.jpKanji = /(?:[々〇〻\u3400-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF])/;
|
|
30
21
|
exports.jpChar = combine([exports.jpHira, exports.jpKana, exports.jpKanji]);
|
|
31
|
-
const regexpSpecialChars = "¥*+.?{}()[]^$-|/".split("");
|
|
32
22
|
function concat(args, flags) {
|
|
33
23
|
let prevFlags = flags || "";
|
|
34
24
|
let foundRegExp = false;
|
|
@@ -127,20 +117,16 @@ function spreadAlphaNum(str) {
|
|
|
127
117
|
return new RegExp(result);
|
|
128
118
|
}
|
|
129
119
|
function addDefaultFlags(regexp) {
|
|
130
|
-
let flags = "
|
|
131
|
-
if (exports.supportRegExpUnicodeFlag) {
|
|
132
|
-
flags += "u";
|
|
133
|
-
}
|
|
120
|
+
let flags = "gmu";
|
|
134
121
|
if (regexp.ignoreCase) {
|
|
135
122
|
flags += "i";
|
|
136
123
|
}
|
|
137
124
|
return new RegExp(regexp.source, flags);
|
|
138
125
|
}
|
|
126
|
+
// Note: Node.js v24がターゲット下限になったらRegExp.escape()に置き換えられる
|
|
127
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape
|
|
139
128
|
function escapeSpecialChars(str) {
|
|
140
|
-
|
|
141
|
-
str = str.replace(new RegExp(`\\${char}`, "g"), `\\${char}`);
|
|
142
|
-
});
|
|
143
|
-
return str;
|
|
129
|
+
return str.replace(/[\\*+.?{}()|^$[\]/-]/g, "\\$&");
|
|
144
130
|
}
|
|
145
131
|
function collectAll(regexp, src) {
|
|
146
132
|
if (!regexp.global) {
|
package/lib/utils/regexp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regexp.js","sourceRoot":"","sources":["regexp.ts"],"names":[],"mappings":"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","sourcesContent":["const regexpRegexp = /^\\/(.*)\\/([gimy]*)$/;\n\nconst hankakuAlphaNum = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\nconst zenkakuAlphaNum =\n \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n\nexport const supportRegExpUnicodeFlag = (() => {\n try {\n new RegExp(\"\", \"u\");\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// http://www.tamasoft.co.jp/ja/general-info/unicode.html\nexport const jpHira = /[ぁ-ゖ]/;\nexport const jpKana = /[ァ-ヺ]/;\n// http://tama-san.com/?p=196\nexport const jpKanji = /(?:[々〇〻\\u3400-\\u9FFF\\uF900-\\uFAFF]|[\\uD840-\\uD87F][\\uDC00-\\uDFFF])/;\nexport const jpChar = combine([jpHira, jpKana, jpKanji]);\n\nconst regexpSpecialChars = \"¥*+.?{}()[]^$-|/\".split(\"\");\n\nexport function concat(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args.reduce<string>((p, c) => {\n if (typeof c === \"string\") {\n return p + c;\n } else if (c instanceof RegExp) {\n c.flags.split(\"\").sort();\n const currentFlags = c.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${c} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return p + c.source;\n } else {\n throw new Error(`unknown type: ${c}`);\n }\n }, \"\");\n return new RegExp(result, prevFlags);\n}\n\nexport function combine(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args\n .map((arg) => {\n if (typeof arg === \"string\") {\n return arg;\n } else if (arg instanceof RegExp) {\n arg.flags.split(\"\").sort();\n const currentFlags = arg.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${arg} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return arg.source;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n })\n .join(\"|\");\n return concat([\"(?:\", result, \")\"], foundRegExp ? prevFlags : void 0);\n}\n\nexport function addBoundary(arg: string | RegExp): RegExp {\n let result: string;\n let flags = \"\";\n if (typeof arg === \"string\") {\n result = arg;\n } else if (arg instanceof RegExp) {\n result = arg.source;\n flags = arg.flags;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n return concat([\"\\\\b\", result, \"\\\\b\"], flags);\n}\n\nexport function parseRegExpString(str: string): RegExp | null {\n const result = str.match(regexpRegexp);\n if (!result) {\n return null;\n }\n return new RegExp(result[1], result[2]);\n}\n\nexport function spreadAlphaNum(str: string): RegExp {\n const result = str\n .split(\"\")\n .map((v) => {\n const tmpIdx1 = hankakuAlphaNum.indexOf(v.toUpperCase());\n const tmpIdx2 = hankakuAlphaNum.indexOf(v.toLowerCase());\n if (tmpIdx1 === -1 && tmpIdx2 === -1) {\n // not alpha num\n return v;\n } else if (tmpIdx1 === tmpIdx2) {\n // num\n return `[${v}${zenkakuAlphaNum.charAt(tmpIdx1)}]`;\n } else {\n return `[${v.toUpperCase()}${v.toLowerCase()}${zenkakuAlphaNum.charAt(tmpIdx1)}${zenkakuAlphaNum.charAt(tmpIdx2)}]`;\n }\n })\n .join(\"\");\n return new RegExp(result);\n}\n\nexport function addDefaultFlags(regexp: RegExp) {\n let flags = \"gm\";\n if (supportRegExpUnicodeFlag) {\n flags += \"u\";\n }\n if (regexp.ignoreCase) {\n flags += \"i\";\n }\n return new RegExp(regexp.source, flags);\n}\n\nexport function escapeSpecialChars(str: string): string {\n regexpSpecialChars.forEach((char) => {\n str = str.replace(new RegExp(`\\\\${char}`, \"g\"), `\\\\${char}`);\n });\n return str;\n}\n\nexport function collectAll(regexp: RegExp, src: string) {\n if (!regexp.global) {\n throw new Error(\"g flag is required\");\n }\n if (!regexp.source) {\n throw new Error(\"source is required\");\n }\n const resultList: RegExpExecArray[] = [];\n let result: RegExpExecArray | null;\n do {\n result = regexp.exec(src);\n if (result) {\n resultList.push(result);\n }\n } while (result);\n\n return resultList;\n}\n\nexport function equals(a: RegExp, b: RegExp) {\n if (a.source !== b.source) {\n return false;\n }\n if (a.global !== b.global) {\n return false;\n }\n if (a.ignoreCase !== b.ignoreCase) {\n return false;\n }\n if (a.multiline !== b.multiline) {\n return false;\n }\n\n return true;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"regexp.js","sourceRoot":"","sources":["regexp.ts"],"names":[],"mappings":"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","sourcesContent":["const regexpRegexp = /^\\/(.*)\\/([gimy]*)$/;\n\nconst hankakuAlphaNum = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\nconst zenkakuAlphaNum =\n \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n\n// http://www.tamasoft.co.jp/ja/general-info/unicode.html\nexport const jpHira = /[ぁ-ゖ]/;\nexport const jpKana = /[ァ-ヺ]/;\n// http://tama-san.com/?p=196\nexport const jpKanji = /(?:[々〇〻\\u3400-\\u9FFF\\uF900-\\uFAFF]|[\\uD840-\\uD87F][\\uDC00-\\uDFFF])/;\nexport const jpChar = combine([jpHira, jpKana, jpKanji]);\n\nexport function concat(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args.reduce<string>((p, c) => {\n if (typeof c === \"string\") {\n return p + c;\n } else if (c instanceof RegExp) {\n c.flags.split(\"\").sort();\n const currentFlags = c.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${c} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return p + c.source;\n } else {\n throw new Error(`unknown type: ${c}`);\n }\n }, \"\");\n return new RegExp(result, prevFlags);\n}\n\nexport function combine(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args\n .map((arg) => {\n if (typeof arg === \"string\") {\n return arg;\n } else if (arg instanceof RegExp) {\n arg.flags.split(\"\").sort();\n const currentFlags = arg.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${arg} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return arg.source;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n })\n .join(\"|\");\n return concat([\"(?:\", result, \")\"], foundRegExp ? prevFlags : void 0);\n}\n\nexport function addBoundary(arg: string | RegExp): RegExp {\n let result: string;\n let flags = \"\";\n if (typeof arg === \"string\") {\n result = arg;\n } else if (arg instanceof RegExp) {\n result = arg.source;\n flags = arg.flags;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n return concat([\"\\\\b\", result, \"\\\\b\"], flags);\n}\n\nexport function parseRegExpString(str: string): RegExp | null {\n const result = str.match(regexpRegexp);\n if (!result) {\n return null;\n }\n return new RegExp(result[1], result[2]);\n}\n\nexport function spreadAlphaNum(str: string): RegExp {\n const result = str\n .split(\"\")\n .map((v) => {\n const tmpIdx1 = hankakuAlphaNum.indexOf(v.toUpperCase());\n const tmpIdx2 = hankakuAlphaNum.indexOf(v.toLowerCase());\n if (tmpIdx1 === -1 && tmpIdx2 === -1) {\n // not alpha num\n return v;\n } else if (tmpIdx1 === tmpIdx2) {\n // num\n return `[${v}${zenkakuAlphaNum.charAt(tmpIdx1)}]`;\n } else {\n return `[${v.toUpperCase()}${v.toLowerCase()}${zenkakuAlphaNum.charAt(tmpIdx1)}${zenkakuAlphaNum.charAt(tmpIdx2)}]`;\n }\n })\n .join(\"\");\n return new RegExp(result);\n}\n\nexport function addDefaultFlags(regexp: RegExp) {\n let flags = \"gmu\";\n if (regexp.ignoreCase) {\n flags += \"i\";\n }\n return new RegExp(regexp.source, flags);\n}\n\n// Note: Node.js v24がターゲット下限になったらRegExp.escape()に置き換えられる\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape\nexport function escapeSpecialChars(str: string): string {\n return str.replace(/[\\\\*+.?{}()|^$[\\]/-]/g, \"\\\\$&\");\n}\n\nexport function collectAll(regexp: RegExp, src: string) {\n if (!regexp.global) {\n throw new Error(\"g flag is required\");\n }\n if (!regexp.source) {\n throw new Error(\"source is required\");\n }\n const resultList: RegExpExecArray[] = [];\n let result: RegExpExecArray | null;\n do {\n result = regexp.exec(src);\n if (result) {\n resultList.push(result);\n }\n } while (result);\n\n return resultList;\n}\n\nexport function equals(a: RegExp, b: RegExp) {\n if (a.source !== b.source) {\n return false;\n }\n if (a.global !== b.global) {\n return false;\n }\n if (a.ignoreCase !== b.ignoreCase) {\n return false;\n }\n if (a.multiline !== b.multiline) {\n return false;\n }\n\n return true;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prh",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.6",
|
|
4
4
|
"description": "proofreading helper",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"homepage": "https://github.com/prh/prh",
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"commander": "^14.0.3",
|
|
34
|
-
"diff": "^
|
|
34
|
+
"diff": "^9.0.0",
|
|
35
35
|
"js-yaml": "^4.1.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"eslint-config-prettier": "^10.1.8",
|
|
44
44
|
"glob": "^13.0.5",
|
|
45
45
|
"prettier": "^3.0.0",
|
|
46
|
-
"typescript": "^
|
|
46
|
+
"typescript": "^6.0.3",
|
|
47
47
|
"typescript-eslint": "^8.0.0",
|
|
48
48
|
"vitest": "^4.0.18"
|
|
49
49
|
}
|