7
7
。ただしカタカナ複合語の場合を除きます。「2.1.7 カタカナ複合語」を参照してください。
8
8
*/
9
9
import { isUserWrittenNode } from "./util/node-util" ;
10
- export default function ( context ) {
11
- let { Syntax, RuleError, report, getSource} = context ;
10
+ import { matchCaptureGroupAll } from "./util/match-index" ;
11
+ function reporter ( context ) {
12
+ let { Syntax, RuleError, report, fixer, getSource} = context ;
12
13
return {
13
14
[ Syntax . Str ] ( node ) {
14
15
if ( ! isUserWrittenNode ( node , context ) ) {
15
16
return ;
16
17
}
17
18
let text = getSource ( node ) ;
18
19
// アルファベットと全角の間は半角スペースではない
19
- let betweenHanAndZen = / [ A - Z a - z 0 - 9 ] ( ) (?: [ \u3400 - \u4DBF \u4E00 - \u9FFF \uF900 - \uFAFF ] | [ \uD840 - \uD87F ] [ \uDC00 - \uDFFF ] | [ ぁ - ん ァ - ヶ ] ) / ;
20
- let betweenZenAndHan = / (?: [ \u3400 - \u4DBF \u4E00 - \u9FFF \uF900 - \uFAFF ] | [ \uD840 - \uD87F ] [ \uDC00 - \uDFFF ] | [ ぁ - ん ァ - ヶ ] ) ( ) [ A - Z a - z 0 - 9 ] / ;
21
- var match = text . match ( betweenZenAndHan ) || text . match ( betweenHanAndZen ) ;
22
- if ( match ) {
23
- report ( node , new RuleError ( "原則として、全角文字と半角文字の間にスペースを入れません。" , match . index + 1 ) ) ;
24
- }
20
+ let betweenHanAndZen = matchCaptureGroupAll ( text , / [ A - Z a - z 0 - 9 ] ( ) (?: [ \u3400 - \u4DBF \u4E00 - \u9FFF \uF900 - \uFAFF ] | [ \uD840 - \uD87F ] [ \uDC00 - \uDFFF ] | [ ぁ - ん ァ - ヶ ] ) / ) ;
21
+ let betweenZenAndHan = matchCaptureGroupAll ( text , / (?: [ \u3400 - \u4DBF \u4E00 - \u9FFF \uF900 - \uFAFF ] | [ \uD840 - \uD87F ] [ \uDC00 - \uDFFF ] | [ ぁ - ん ァ - ヶ ] ) ( ) [ A - Z a - z 0 - 9 ] / ) ;
22
+ const reportMatch = ( match ) => {
23
+ const { index} = match ;
24
+ report ( node , new RuleError ( "原則として、全角文字と半角文字の間にスペースを入れません。" , {
25
+ column : match . index ,
26
+ fix : fixer . replaceTextRange ( [ index , index + 1 ] , "" )
27
+ } ) ) ;
28
+ } ;
29
+ betweenHanAndZen . forEach ( reportMatch ) ;
30
+ betweenZenAndHan . forEach ( reportMatch ) ;
25
31
}
26
32
}
33
+ }
34
+ export default {
35
+ linter : reporter ,
36
+ fixer : reporter
27
37
}
0 commit comments