Skip to content

Commit

Permalink
feat(4.3.1): fixer support
Browse files Browse the repository at this point in the history
  • Loading branch information
azu committed Mar 3, 2016
1 parent aebbbf8 commit f715a00
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 11 deletions.
40 changes: 31 additions & 9 deletions src/4.3.1.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,42 @@
全角のかっこを使用します
*/
import {isUserWrittenNode} from "./util/node-util";
export default function (context) {
let {Syntax, RuleError, report, getSource} = context;
import {matchCaptureGroupAll} from "./util/match-index";
import regx from 'regx';
import {japaneseRegExp} from "./util/regexp";
const rx = regx("g");

const replaceSymbol = (symbol) => {
var newSymbol = {
"(": "(",
")": ")"
}[symbol];
if (!newSymbol) {
throw new Error("fail to replace symbol");
}
return newSymbol;
};
function reporter(context) {
let {Syntax, RuleError, report, fixer, getSource} = context;
return {
[Syntax.Str](node){
if (!isUserWrittenNode(node, context)) {
return;
}
let text = getSource(node);
// 半角のかっこ()は使用しない
var matchHanQuestion = /([\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF]|[ぁ-んァ-ヶ])[\(\)]/;
var index = text.search(matchHanQuestion);
if (index !== -1) {
return report(node, new RuleError("半角のかっこ()が使用されています。", index + 1))
}
// 半角のかっこ()は使用しないで全角のかっこを使用する
const text = getSource(node);
const matchRegExp = rx`(?:${japaneseRegExp})([\(\)])`;
matchCaptureGroupAll(text, matchRegExp).forEach(match => {
const {index} = match;
report(node, new RuleError("半角のかっこ()が使用されています。全角のかっこ()を使用してください。", {
column: index,
fix: fixer.replaceTextRange([index, index + 1], replaceSymbol(match.text))
}));
});
}
};
}
export default {
linter: reporter,
fixer: reporter
}
22 changes: 20 additions & 2 deletions test/4.3.1-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,31 @@ tester.run("4.3.1.丸かっこ()", rule, {
],
invalid: [
{
text: "クォーク(物質の素粒子)",// 半角かっこ
// 半角かっこ
text: "クォーク(物質の素粒子)",
output: "クォーク(物質の素粒子)",
errors: [
{
message: "半角のかっこ()が使用されています。",
message: "半角のかっこ()が使用されています。全角のかっこ()を使用してください。",
column: 5
},
{
message: "半角のかっこ()が使用されています。全角のかっこ()を使用してください。",
column: 12
}
]
},
{
// 半角かっこ
text: "例)test",
output: "例)test",
errors: [
{
message: "半角のかっこ()が使用されています。全角のかっこ()を使用してください。",
column: 2
}
]
}

]
});

0 comments on commit f715a00

Please sign in to comment.