Giter Club home page Giter Club logo

textlint-rule-ja-no-redundant-expression's Introduction

textlint-rule-ja-no-redundant-expression test

冗長な表現を禁止するtextlintルールです。

冗長な表現とは、その文から省いても意味が通じるような表現を示しています。

表現の一覧

【dict1】

"すること[助詞](不)可能"は冗長な表現です。"すること[助詞]"を省き簡潔な表現にすると文章が明瞭になります。

参考:

【dict2】

"すること[助詞]できる"は冗長な表現です。"すること[助詞]"を省き簡潔な表現にすると文章が明瞭になります。

参考:

【dict3】

"であると言えます"は冗長な表現です。"である" または "と言えます"を省き簡潔な表現にすると文章が明瞭になります。

参考:

【dict4】

"であると考えている"は冗長な表現です。"である" または "と考えている"を省き簡潔な表現にすると文章が明瞭になります。

参考:

【dict5】

"[サ変名詞]を行う"は冗長な表現です。"[サ変名詞]する"など簡潔な表現にすると文章が明瞭になります。

[サ変名詞]とは「[名詞]する」というように「する」が後ろについた場合に、動詞の働きをする名詞です。

例)「行動(する)」、「プログラム(する)」

誤検知を防ぐためにデフォルトでは、"allows"オプションに次のパターンが定義されています。

["/^処理を行[ぁ-ん]/","/^[ァ-ヶ]+を.?行[ぁ-ん]/","/^[a-zA-Z]+を.?行[ぁ-ん]/"]

参考:

【dict6】

"[サ変名詞]を実行"は冗長な表現です。"[サ変名詞]する"など簡潔な表現にすると文章が明瞭になります。

[サ変名詞]とは「[名詞]する」というように「する」が後ろについた場合に、動詞の働きをする名詞です。

例)「行動(する)」、「プログラム(する)」

誤検知を防ぐためにデフォルトでは、"allows"オプションに次のパターンが定義されています。

["/^処理を実行/","/^[ァ-ヶ]+を.?実行/","/^[a-zA-Z]+を.?実行/"]

参考:

Install

Install with npm:

npm install textlint-rule-ja-no-redundant-expression

Usage

Via .textlintrc(Recommended)

{
    "rules": {
        "ja-no-redundant-expression": true
    }
}

Via CLI

textlint --rule ja-no-redundant-expression README.md

Options

  • allowNodeTypes: string[]
    • 無視したいNode typeを配列で指定
    • Node typeは https://textlint.github.io/docs/txtnode.html#type を参照
    • デフォルトでは、["BlockQuote", "Link", "ReferenceDef", "Code"]を指定し、引用やリンクのテキストは無視する
  • dictOptions: object
    • それぞれのdictに対するオプションを指定する
    • プロパティにdictの【dict[id]】を書き、値には次の辞書オプションを指定する
      • 辞書オプション: object

例) dict1は無効化、dict5で"議論を行う"をエラーにしない。

{
    "rules": {
        "ja-no-redundant-expression": {
            "dictOptions": {
                "dict1": {
                     "disabled": true
                },
                "dict5": {
                    // "議論を行う" を許可する
                    "allows": [
                        "/^議論を行う/",
                        // デフォルトの許可リストは上書きされるので、維持したい場合は追加する
                        "/^処理を行[ぁ-ん]/",
                        "/^[ァ-ヶ]+を.?行[ぁ-ん]/",
                        "/^[a-zA-Z]+を.?行[ぁ-ん]/"
                    ]
                }
            }
        }
    }
}

Changelog

See Releases page.

参考文献

類似ルール

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu

textlint-rule-ja-no-redundant-expression's People

Contributors

azu avatar dependabot[bot] avatar mongolyy avatar nutti avatar shirayu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

textlint-rule-ja-no-redundant-expression's Issues

3.0

  • 動作確認 asciidwango/js-primer#614
  • 3.0のメジャーリリース
    • マイグレーション? 2.0 相当の設定について書く(disabledの例)

`[動詞] + こと+ [助詞] + {(不)可能, できる}` も検出する

[動詞] + こと+ [助詞] + {(不)可能, できる} も,dict1, dict2同様に冗長です.

  • 「読むことができる」→「読める」
  • 「寝ることができない」→「寝られない」
  • 「愛することができる」→「愛せる」 (注: 「愛する」はkuromojiでは1語扱い)
  • 「来ることは可能」→「来られる」

Related to #7

List bug?

- これの呼び出しを削除することができる
- [react-notify-resize](https://www.npmjs.com/package/react-notify-resize "react-notify-resize")

"することができるreact"は冗長な表現です。"することが"を省き簡潔な表現にすると文章が明瞭になります

辞書の項目ごとにオプションを設定できるようにする

From #6 (comment)

辞書のtokenに対して名前をつけて、オプションを指定できるようにする。
いくつかのtokenに対してはデフォルトで許可リストをもつ。

  • 各辞書(tokenの集合)に対して id のような 名前をつける
  • ルールのオプションで、id に対して
    • その辞書を(disable、デフォルトfalse)有効/無効化できるようにする(アップデートが大変な場合も多そうなので、マイグレーション的にON/OFFできるように)
    • その辞書で例外(allow、デフォルト[] or ["ソフトウェア"]など)を指定できるようにする
      • オプションはJSONなので正規表現リテラルが使えないため、@textlint/regexp-string-matcherを使うと文字列で正規表現も扱える

Example

module.exports = [
    {
        id: "$1を実行",
        message: `"$1を実行"は冗長な表現です。"$1する"など簡潔な表現にすると文章が明瞭になります。`,
        url: "http://www.atmarkit.co.jp/ait/articles/1001/19/news106_2.html",
        tokens: [
            {
                "pos": "名詞",
                "pos_detail_1": "サ変接続",
                "_capture": "$1"
            },
            {
                "surface_form": "を",
                "pos": "助詞",
                "pos_detail_1": "格助詞",
                "pos_detail_2": "一般",
                "pos_detail_3": "*",
                "conjugated_type": "*",
                "conjugated_form": "*",
                "basic_form": "を",
                "reading": "ヲ",
                "pronunciation": "ヲ"
            },
            {
                "surface_form": "実行",
                "pos": "名詞",
                "pos_detail_1": "サ変接続",
                "pos_detail_2": "*",
                "pos_detail_3": "*",
                "conjugated_type": "*",
                "conjugated_form": "*",
                "basic_form": "実行",
                "reading": "ジッコウ",
                "pronunciation": "ジッコー"
            },
        ]
    }

]

.textlintrc:

{
    "rules": {
        "ja-no-redundant-expression": {
           "dictionary": {
              "$1を行う": {
                "disable": true
              },
              "$1を実行": {
                "allow": ["ソフトウェア"] // 含まれているなら無視
              }
           }
        }
    }
}

することが可能です

オブジェクトリテラルのプロパティ名(キー)はクオート("')を省略することが可能です。

To be

オブジェクトリテラルのプロパティ名(キー)はクオート("')を省略できます。

"すること[助詞]できる" の否定

「することはできる」は冗長に感じするけど、「すること[助詞]できない」は表現として普通に感じる。

そのため、constキーワードで宣言した変数に対して、後から値を代入することはできません。
変数名に数字を含めることはできますが、変数名を数字から開始することはできません。

開始できません。 とかだとなんか変な気がする

example: https://github.com/asciidwango/js-primer/pull/1183/checks?check_run_id=790454268

「することが可能」の類似表現

「することが可能」の冗長性は,

  • 「することは可能」
  • 「することも可能」
  • 「する事も不可能」

等でも同様にあります.
現在はことが{可能, できる}にマッチしますが,
こと + { が,は,も } + { できる,出来る,可能,不可能}にマッチするように拡充できると考えます.

昔書いた論文を思い出したのでissueとして立てます.
「こと」を含む可能形は https://hayashibe.jp/publications/NL224.pdf のp.3の表2参照

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.