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

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

allow emojis to stand by themselves #2

Closed mt-caret closed 7 years ago

mt-caret commented 7 years ago

「合格しました。🎉」のような文章の「🎉」も文字として認識されるのか、 「文末が"。"で終わっていません。」と怒られてしまいます。

再現方法:

$ echo "合格しました。\n🎉" > test.md
$ textlint --rule ja-no-mixed-period test.md

Issueとは特に関係ありませんが、再現を試みていた時に

$ echo "合格しました。\n🎉" | textlint --stdin --rule ja-no-mixed-period

を実行したところ、正常として認識されてしまいます。

$ echo "合格しました" | textlint --stdin --rule ja-no-mixed-period

とするとja-no-mixed-periodが正常に発火します。

azu commented 7 years ago

ご報告ありがとうございます。 やや意図した動作でもありますが、次のような修正が考えられそうです。

任意の文字?(正規表現)を文末に置いて良い文字としてオプションで設定できるようにする。 (ただ、絵文字全般という定義難しい感じがします。 :+1 なども許容したい場合は1文字だけじゃないので、正規表現で指定出来るようにしないといけなさそう)

現在は例外的に文末に置いても良い文字が幾つか定義されています。 これを設定から自由に追加出来るようにするかんじですね。

/[!?!?\))」』]/

azu commented 7 years ago

Issueとは特に関係ありませんが、再現を試みていた時に

$ echo "合格しました。\n🎉" | textlint --stdin --rule ja-no-mixed-period

これはパスするのはややこしいですが、正しい動作ですね。

ということが起きています。

次のようにMarkdownとして認識させると、恐らくエラーとして検出されます。 (markdownのパラグラフ<p>は空改行で区切ったときにできるからですね)


$ echo "合格しました。\n🎉" | textlint --stdin --stdin-filename test.md --rule ja-no-mixed-period
mt-caret commented 7 years ago

迅速かつ丁寧なご対応ありがとうございます。

現在は例外的に文末に置いても良い文字が幾つか定義されています。 これを設定から自由に追加出来るようにするかんじですね。

ですね。ぱっと調べてみたところ、うまい感じに絵文字にマッチする正規表現ライブラリを見つけたので、導入したPRを飛ばしてもよろしいでしょうか?

azu commented 7 years ago

はい。 基本的には全部オプションで変更可能にしていきたいので、

という感じにしていただけると助かります。


(これに加えて、 末尾にある任意のものを無視する設定を追加できれば、大体のことはオプションとして解決できるようになるかなと思います。絵文字もこのオプションでやってという形でもいいのですが、あまりに正規表現が難しいので別オプションが妥当な気がします。)

allowWordAtEnd: [
  "好きな文字列",
  "/好きな正規表現$/"
]
azu commented 7 years ago

closed by #3