Code Monkey home page Code Monkey logo

textlint-rule-no-synonyms's Introduction

@textlint-ja/textlint-rule-no-synonyms Actions Status

文章中の同義語を表記ゆれをチェックするtextlintルールです。

同義語の辞書としてSudachi 同義語辞書を利用しています。

NG:

1つの文章中に同一語彙の別表記を利用している場合を表記ゆれとしてエラーにします。

サーバとサーバーの表記揺れがある。
この雇入と雇入れの違いを見つける。

Install

Install with npm:

npm install @textlint-ja/textlint-rule-no-synonyms sudachi-synonyms-dictionary

辞書となるsudachi-synonyms-dictionarypeerDependenciesなので、ルールとは別に辞書ファイルをインストールする必要があります。 ルール間で1つの辞書ファイルを共有するためです。

Cannot find module 'sudachi-synonyms-dictionary'

上記のエラーが出ている場合は辞書ファイルであるsudachi-synonyms-dictionaryをインストールしてください

npm install sudachi-synonyms-dictionary

Usage

Via .textlintrc(Recommended)

{
    "rules": {
        "@textlint-ja/no-synonyms": true
    }
}

Via CLI

textlint --rule @textlint-ja/no-synonyms README.md

Options

{
    /**
     * 許可するワードの配列
     * ワードは完全一致で比較し、一致した場合は無視されます
     * 例) ["ウェブアプリ", "ウェブアプリケーション"]
     */
    allows?: string[];
    /**
     * 使用を許可する見出し語の配列
     * 定義された見出し語以外の同義語をエラーにします
     * 例) ["ユーザー"] // => 「ユーザー」だけ許可し「ユーザ」などはエラーにする
     */
    preferWords?: string[];
    /**
     * 同じ語形の語の中でのアルファベットの表記揺れを許可するかどうか
     * trueの場合はカタカナとアルファベットの表記ゆれを許可します
     * 例) 「ブログ」と「blog」
     * Default: true
     */
    allowAlphabet?: boolean;
    /**
     * 同じ語形の語の中での漢数字と数字の表記ゆれを許可するかどうか
     * trueの場合は漢数字と数字の表記ゆれを許可します
     * 例) 「1」と「一」
     * Default: true
     */
    allowNumber?: boolean;
    /**
     * 語彙素の異なる同義語を許可するかどうか
     * trueの場合は語彙素の異なる同義語を許可します
     * 例) 「ルーム」と「部屋」
     * Default: true
     */
    allowLexeme?: boolean;
}

Example:

{
    "rules": {
        "@textlint-ja/no-synonyms": {
            "allows": ["ウェブアプリ", "ウェブアプリケーション"],
            "preferWords": ["ユーザー"],
            "allowAlphabet": false,
            "allowNumber": false,
            "allowLexeme": false
        }
    }
}

References

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

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-no-synonyms's People

Contributors

azu avatar dependabot[bot] avatar leko avatar

Stargazers

 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

Forkers

sujoyu leko tokada

textlint-rule-no-synonyms's Issues

HTML プラグインと併用すると検出されない場合がある

再現手順

設定(textlintrc)

{
  "plugins": [
    "html"
  ],
  "rules": {
     "@textlint-ja/no-synonyms": true
  }
}

試した文章(test.html)

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
  </head>
  <body>
    <p>サーバとサーバーの表記揺れがある。</p>
    <p>この雇入と雇入れの違いを見つける。</p>
  </body>
</html>

実行結果。

$ npx textlint --c textlintrc test.html

<< 結果の出力無し >>

期待する結果

  • 「サーバ」と「サーバー」、「雇入」と「雇入れ」それぞれが同義語として検出される。

実際の結果

  • どちらも検出されない。

ワークアラウンド

body 内のみの記述にすると検出されます。

試した文章(test-body.html)

<p>サーバとサーバーの表記揺れがある。</p>
<p>この雇入と雇入れの違いを見つける。</p>

実行結果。

$ npx textlint --c textlintrc test-body.html

/sandbox/reproduce/no-synonym-html/test-body.html
  1:8  error  同義語である「サーバ」と「サーバー」が利用されています  @textlint-ja/no-synonyms
  2:9  error  同義語である「雇入」と「雇入れ」が利用されています      @textlint-ja/no-synonyms

✖ 2 problems (2 errors, 0 warnings)

ワークアラウンドの HTML から作成される AST は Document の直下に Paragraph が作成されます。
一方で、<html><body></body></html> で囲まれていると AST は Document/Html/Html となります。
そのため、以下の設定により除外されていると予想しています。

ignoreNodeTypes: [Syntax.BlockQuote, Syntax.CodeBlock, Syntax.Code, Syntax.Html, Syntax.Link, Syntax.Image, Syntax.Comment]

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.