|
4 | 4 | かっこ類と隣接する文字の間のスペースの有無
|
5 | 5 | かっこの外側、内側ともにスペースを入れません。
|
6 | 6 | */
|
7 |
| -import {RuleHelper} from "textlint-rule-helper"; |
8 |
| -import {matchCaptureGroupAll} from "match-index"; |
| 7 | +import { RuleHelper } from "textlint-rule-helper"; |
| 8 | +import { matchCaptureGroupAll } from "match-index"; |
9 | 9 |
|
10 |
| -const brackets = [ |
11 |
| - "\\[", "\\]", "(", ")", "[", "]", "「", "」", "『", "』" |
12 |
| -]; |
| 10 | +const brackets = ["\\[", "\\]", "(", ")", "[", "]", "「", "」", "『", "』"]; |
13 | 11 |
|
14 |
| -const leftBrackets = brackets.map(bracket => { |
15 |
| - return new RegExp("\([ ]\)" + bracket, "g"); |
| 12 | +const leftBrackets = brackets.map((bracket) => { |
| 13 | + return new RegExp("([ ])" + bracket, "g"); |
16 | 14 | });
|
17 |
| -const rightBrackets = brackets.map(bracket => { |
18 |
| - return new RegExp(bracket + "\([ ])", "g"); |
| 15 | +const rightBrackets = brackets.map((bracket) => { |
| 16 | + return new RegExp(bracket + "([ ])", "g"); |
19 | 17 | });
|
20 | 18 | function reporter(context) {
|
21 |
| - const {Syntax, RuleError, report, fixer, getSource} = context; |
| 19 | + const { Syntax, RuleError, report, fixer, getSource } = context; |
22 | 20 | const helper = new RuleHelper();
|
23 | 21 | return {
|
24 |
| - [Syntax.Str](node){ |
| 22 | + [Syntax.Str](node) { |
25 | 23 | if (!helper.isPlainStrNode(node)) {
|
26 | 24 | return;
|
27 | 25 | }
|
28 | 26 | const text = getSource(node);
|
29 | 27 | // 左にスペース
|
30 |
| - leftBrackets.forEach(pattern => { |
31 |
| - matchCaptureGroupAll(text, pattern).forEach(match => { |
32 |
| - const {index} = match; |
33 |
| - report(node, new RuleError("かっこの外側、内側ともにスペースを入れません。", { |
34 |
| - index: index, |
35 |
| - fix: fixer.replaceTextRange([index, index + 1], "") |
36 |
| - })); |
| 28 | + leftBrackets.forEach((pattern) => { |
| 29 | + matchCaptureGroupAll(text, pattern).forEach((match) => { |
| 30 | + const { index } = match; |
| 31 | + report( |
| 32 | + node, |
| 33 | + new RuleError("かっこの外側、内側ともにスペースを入れません。", { |
| 34 | + index: index, |
| 35 | + fix: fixer.replaceTextRange([index, index + 1], "") |
| 36 | + }) |
| 37 | + ); |
37 | 38 | });
|
38 | 39 | });
|
39 | 40 | // 右にスペース
|
40 |
| - rightBrackets.forEach(pattern => { |
41 |
| - matchCaptureGroupAll(text, pattern).forEach(match => { |
42 |
| - const {index, text} = match; |
43 |
| - report(node, new RuleError("かっこの外側、内側ともにスペースを入れません。", { |
44 |
| - index: index, |
45 |
| - fix: fixer.replaceTextRange([index, index + 1], "") |
46 |
| - })); |
| 41 | + rightBrackets.forEach((pattern) => { |
| 42 | + matchCaptureGroupAll(text, pattern).forEach((match) => { |
| 43 | + const { index, text } = match; |
| 44 | + report( |
| 45 | + node, |
| 46 | + new RuleError("かっこの外側、内側ともにスペースを入れません。", { |
| 47 | + index: index, |
| 48 | + fix: fixer.replaceTextRange([index, index + 1], "") |
| 49 | + }) |
| 50 | + ); |
47 | 51 | });
|
48 | 52 | });
|
49 | 53 | }
|
|
0 commit comments