-
Notifications
You must be signed in to change notification settings - Fork 18
/
1.2.2.js
41 lines (40 loc) · 1.37 KB
/
1.2.2.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// LICENSE : MIT
"use strict";
import { isUserWrittenNode } from "./util/node-util";
/*
1.2.2. ピリオド(.)とカンマ(,)
欧文で表記する組織名などの固有名詞や数字にピリオド(.)やカンマ(,)が含まれる場合は、和文中でもピリオド(.)とカンマ(,)を使用します。
いずれの場合も半角で表記します。「4.1.3 ピリオド(.)、カンマ(,)」を参照してく ださい。
*/
// . => 。 の置換マップ
const replaceSymbol = {
".": ".",
",": ","
};
function report(context) {
let { Syntax, RuleError, fixer, report, getSource } = context;
return {
[Syntax.Str](node) {
if (!isUserWrittenNode(node, context)) {
return;
}
let text = getSource(node);
// 1.2.2. ピリオド(.)とカンマ(,)
if (/[.,]/.test(text)) {
const index = text.search(/[.,]/);
const symbol = replaceSymbol[text[index]];
report(
node,
new RuleError("全角のピリオドとカンマは使用しません。", {
index: index,
fix: fixer.replaceTextRange([index, index + 1], symbol)
})
);
}
}
};
}
module.exports = {
linter: report,
fixer: report
};