textlint-ja / textlint-rule-ja-no-mixed-period

文末の句点(。)の統一 と 抜けをチェックするtextlintルール
MIT License
9 stars 3 forks source link

allow to use punctuation `、` as line terminator #1

Open takahashim opened 8 years ago

takahashim commented 8 years ago

多少緩い書き方になりますが、

そのような場合でも、

* 手法A
* 手法B
* 手法C

などの手法を使用することで回避できます。

というように、「、」で終わる行を許容したいです。

exceptionMarkRegExpを/[!?!?\))」』、,]/みたいにするのと、オプションで選べるようにするのはどちらがよいでしょうか。

azu commented 8 years ago

で終わるのを潰したいのが、一つの目的なのでオプションで選べるようにする形ですかね。

{ periodMark: ["。", "、"] }
// periodMarks もチェックしてあげると丁寧

的な複数おける方法と

{ periodMark: "。", allowTouten : true }

みたいな方法がありますね。 どちらが直感的ですかね? (複数periodMarkの場合は、fixを諦めたほうが安全そうな気はしますね)

azu commented 8 years ago

allowTouten の方がno-mixedの趣旨に合ってる気がしてきました。 今は、デフォルトで感嘆符と疑問符もallowしていますが、これもオプションに倒すことができそうなので。 (無限に文末に置く記号の種類ががあるとちょっと扱いにくいオプションになりそうですが、そこまで種類は多くないと思っています)

takahashim commented 8 years ago

そうですね、"、"はどう見てもperiod markではないので、allowTouten的な指定の方が望ましいと思います。

他の記号としては、"…"を許したい場合があります。また翻訳文では":"も許したい場合がありそうです。なので、allowToutenよりはallowCharとかallowSymbolとかの方が良さそうです。

azu commented 8 years ago
{ allowSymbol: ["…", ":"] }

このようなイメージですかね?

この場合、利用者が任意の文字を書けてしまうので allowSymbol はおかしいですね。 allowChar または 単に allow ですかね。

1文字以上の文字列指定した場合、今の実装だとおかしくなると思います。 その場合は例外を投げて諦めるか、lastIndexOfを使って終端マッチに変更するみたいな実装が必要ですね。

takahashim commented 8 years ago

なるほど、では { allow: ["、", ":", ":"] }みたいな形でしょうか。 1文字以上の場合は例外で良さそうです。

azu commented 8 years ago

なるほど、では { allow: ["、", ":", ":"] }みたいな形でしょうか。

はい。

1文字以上の場合は例外で良さそうです。

例外メッセージはユーザーがわかる形にしておくと良さそうです。

https://github.com/azu/textlint-rule-prh/blob/master/src/prh-rule.js#L41-L51