import rx from 'regx'; import * as commentStyles from './comment-styles.js'; import * as tagStyles from './tag-styles.js'; export const AST_TYPE_DOCUMENTATION = 'Documentation'; export const AST_TYPE_BLOCK = 'Block'; export const AST_TYPE_COMMENT = 'Comment'; export const AST_TYPE_COMMENT_TAG = 'Tag'; export const AST_TYPE_CODE = 'Code'; const RX_NEWLINE_DOS = /\r\n/g; const rxm = rx('m'); const rxgm = rx('gm'); const { slashStarStar } = commentStyles; const { atCurlyDash } = tagStyles; const defaultNamedTags = [ 'arg', 'argument', 'class', 'exports', 'extends', 'imports', 'method', 'module', 'param', 'parameter', 'prop', 'property' ];
// LICENSE : MIT "use strict"; /* 全角文字と半角文字の間 全角文字どうしの間にスペースを入れません。 ただしカタカナ複合語の場合を除きます。 */ import {RuleHelper} from "textlint-rule-helper"; import {matchAll} from "match-index"; import regx from "regx"; const rx = regx("g"); const japaneseRegExp = /(?:[々〇〻\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF]|[ぁ-んァ-ヶ])/; function reporter(context) { const {Syntax, RuleError, report, fixer, getSource} = context; const helper = new RuleHelper(); return { [Syntax.Str](node){ if (helper.isChildNode(node, [Syntax.Link, Syntax.Image, Syntax.BlockQuote, Syntax.Emphasis])) { return; } const text = getSource(node); // 全角同士の間は半角スペースを入れない const matchReg = rx`${japaneseRegExp}( )${japaneseRegExp}`; const katakakana = /[ァ-ヶ]( )[ァ-ヶ]/; matchAll(text, matchReg).forEach(match => { const {input, captureGroups} = match; // ただしカタカナ複合語の場合を除きます。 if (katakakana.test(input)) { return; }