textlint-ja / textlint-rule-no-doubled-joshi

文中に同じ助詞が複数出てくるのをチェックするtextlintルール
MIT License
22 stars 4 forks source link

separatorCharsの設定が無視される #25

Closed pddg closed 4 years ago

pddg commented 4 years ago

環境

テストした文字列

1行ごとに異なるファイルに入れています.

右がiPhone,左がAndroidです。
右がiPhone,左がAndroidです.
右がiPhone、左がAndroidです。
右がiPhone、左がAndroidです.
右がiPhone!左がAndroidです!
右がiPhone?左がAndroidです?

.textlintrc

{
    "rules": {
        "no-doubled-joshi": {
            "min_interval": 1,
            "strict": false,
            "allow": [],
            "separatorChars": ["。"]
        }
    }
}

期待される動作

区切り文字の設定がだけになっているため,全て検出されるはずです.ただし,だけは扱いが特殊なため,

右がiPhone、左がAndroidです。
右がiPhone、左がAndroidです.

の2つを除く全てがエラーになるはずです.

実際の動作

区切り文字に何を指定しても結果に影響しません.例えばのみを指定したとき,

右がiPhone,左がAndroidです。
右がiPhone,左がAndroidです.

だけがエラーとして検出されます.また,区切り文字にを指定しても,結果は変わりませんでした.

私見

TypeScriptにもtextlintにも詳しくないのですが,ソースコードを見る限りseparatorCharsはどこにも使われていないように見えます. また,全角ピリオドを使う文章では全角カンマ()を読点()の代わりに使用するため,読点のみ扱いが異なる現在の実装では不都合が出る文章も多いかと思いますが,いかがでしょうか?

azu commented 4 years ago

以前のバージョンでは separatorChars がサポートされていましたが、メジャーアップデート時(sentence-splitterを書き直した際)にオプションのサポートをとりあえず外していて、READMEを更新し忘れていたみたいです。

sentence-splitterseparatorChars 相当の部分がハードコードされているので、これをオプションで指定できるようにして、configで設定可能にする必要がありそうです。 https://github.com/azu/sentence-splitter/blob/026643dd81b8fefbaccb2d32e624c77d5e303c9b/src/parser/SeparatorParser.ts#L4

また,全角ピリオドを使う文章では全角カンマ()を読点()の代わりに使用するため,読点のみ扱いが異なる現在の実装では不都合が出る文章も多いかと思いますが,いかがでしょうか?

これは別Issueな気がするので別途Issueを作成してもらえると助かります。

https://github.com/textlint-ja/textlint-rule-no-doubled-joshi/blob/e11ca0e9df7774bcc76da578b1f227bb365e87f5/src/token-utils.ts#L12-L14 https://azu.github.io/morpheme-match/?text=%E5%8F%B3%E3%81%8CiPhone%EF%BC%8C%E5%B7%A6%E3%81%8CAndroid%E3%81%A7%E3%81%99%EF%BC%8E

今は だけしか見てないので、これをconfigで設定可能にするという感じですかね

azu commented 4 years ago

実装し直した場合に改めて加える形にした方が良さそうなので、今動いてない separatorChars オプションはREADMEから削除しました https://github.com/textlint-ja/textlint-rule-no-doubled-joshi/commit/0c9d5ecffca01b6455412944727a279fda20b6d0

pddg commented 4 years ago

ありがとうございます.全角カンマの件については別のissueを作成しました.

azu commented 4 years ago

@pddg https://github.com/textlint-ja/textlint-rule-no-doubled-joshi/releases/tag/3.6.0separatorCharacters オプションを実装しました。 (現在と以前の実装が異なるため、separatorCharsとは別の名前にしています)