Package detail

prh

prh208.7kMIT5.4.4

proofreading helper

readme

proofread-helper Circle CI

あなたの校正を手伝ってくれるライブラリ。

今まで、校正作業は主に編集のフェーズの作業でした。 これからは校正情報を編集者が作り、著者が執筆しながら自分で校正を行うようになります。

asciicast

インストール

自分のライブラリに組み込んで使う場合。

$ npm install --save prh

コマンドラインツールとして使う場合。

$ npm install -g prh

利用方法

テキストファイルであれば、どのようなファイルであっても処理対象にすることができます。

$ prh --help
  Usage: prh [options] [command] [--] [files...]

  Options:

    --rules-json    emit rule set in json format
    --rules-yaml    emit rule set in yaml format
    --rules <path>  path to rule yaml file
    --verify        checking file validity
    --stdout        print replaced content to stdout
    --diff          show unified diff
    --verbose       makes output more verbose
    -r, --replace   replace input files


  Commands:

    init  generate prh.yml

実際に利用した場合の出力例。

# 校正前のファイル例
$ cat sample.md
# サンプルですよ

cookieとjqueryという表記は正しいだろうか?

# チェックにひっかかる箇所の表示
$ prh sample.md
sample.md(3,1): cookie → Cookie
sample.md(3,8): jquery → jQuery

校正ルールをオプションで指定しない場合、校正対象となるファイルと同じディレクトリ、またはそれより上の階層で最初に見つかったprh.ymlを利用します。 どのファイルに対してどの校正ルールが利用されているか確認したい場合、 --verbose オプションを利用してください。

設定ファイルについて

基本的な書き方についてはmisc/prh.ymlを参照してください。

実用するための設定ファイルはprh/rulesのmedia/techbooster.ymlがおすすめです。

その他、prh/rulesに各種設定を取り揃えてあるので、好きに組み合わせてご利用ください。

init サブコマンドでbasicな設定ファイルを作成できます(実用には不向き)。

$ prh init
create prh.yml
see prh/rules collection https://github.com/prh/rules

実用上は git submodule add https://github.com/prh/rules.git prh-rules して好きなルールを使います。 これを参照するprh.ymlは次のように書きます。

version: 1

imports:
  - ./prh-rules/media/techbooster.yml

--diff オプション

unified diff形式で変更点を出力します。 colordiffと組み合わせると標準のレポートより見やすくなるかもしれません。

$ prh --diff sample.md
Index: sample.md
===================================================================
--- sample.md    before
+++ sample.md    replaced
@@ -1,4 +1,4 @@
 # サンプルですよ

-cookieとjqueryという表記は正しいだろうか?
+CookieとjQueryという表記は正しいだろうか?

--stdout オプション

校正を適用した結果をstdoutに出力します。

$ prh --stdout sample.md
# サンプルですよ

CookieとjQueryという表記は正しいだろうか?

v3.x系まではこのオプションがデフォルトの振る舞いでした。

--verify オプション

チェック結果をexit codeとして出力します。 文章のテストやCIなどに組み込む際に便利です。

$ prh --verify sample.md
Error: sample.md failed proofreading
    ....
$ echo $?
1

-r, --replace オプション

指定したファイルの校正結果を直接ファイルに上書きします。

$ prh --replace sample.md
replaced sample.md

$ cat sample.md
# サンプルですよ

CookieとjQueryという表記は正しいだろうか?

修正点を意図的に無視させる

prh単体の利用ではMarkdownやRe:VIEWなどのファイルの構造は考慮できません。 そのため、URLの一部が変換されてしまったりします。 他にも意図的に指摘内容を無視したい場合があります。

そんな時、 prh:disable プラグマを使うことができます。 prhは文章を段落毎に処理し、段落にプラグマが含まれる場合大本のルールよりそちらの支持を優先します。 具体例を見ていきましょう。

#@# prh:disable
ここの段落は全く校正されない。

#@# prh:disable:web
web→Webの校正ルールがある場合。
ここの段落はwebというワードが含まれていても無視するよう指定されているので警告されない。

#@# prh:disable:web|jquery|[abc]
無視ルールは正規表現として解釈されるため複雑な条件も記述できる。

ルールは後置することもできる。
#@# prh:disable

こんな塩梅です。 この例はRe:VIEWのコメント記法を使っていますが、お使いのフォーマットでコメントと解釈される任意の構造を使うことができます。 Markdownであれば <!-- prh:disable --> とすることができます。 このため、無視するルールの記述に半角スペースを利用することができなくなっています。 代わりに \s などを使ってください。

関連ツール

Atomのプラグインであるlanguage-reviewに組み込まれています。 エディタ上で執筆を行うと自動的に校正候補が表示され、その結果を原稿に反映していくことができます。

VSCodeの拡張もあります。 これもエディタ上で執筆を行うと自動的に校正候補が表示され、QuickFixか全修正をさせることもできます。

azuさんが作成しているtextlintのプラグインとしてtextlint-rule-prhが作成されています。

changelog

5.4.4 (2019-08-15)

Bug Fixes

  • regexp: improve concat error message (#31) (f587881)

Features

  • prh: update dependencies (ff81f44)

5.4.3 (2017-08-23)

Bug Fixes

  • prh: 検出したDiffの範囲に重複がある場合、重複したDiffを無視するようにした (837c422)

5.4.2 (2017-08-22)

Bug Fixes

  • prh: Diffの作成時に変換前と変換後が一致する場合、それをどのようなパターンでも結果から除外するように修正 (dc61ede)

Features

  • rules: バンドルするルールの更新 (72bc03b)

5.4.1 (2017-08-22)

Bug Fixes

  • prh: --stdout を指定した時に余計な空行を末尾に追加していたのを修正 fixes #28 (55cb83a)

Features

  • prh: conventional-changelogの呼び出し方法を変えて脱grunt化した (f3a2786)

5.4.0 (2017-08-20)

fromYAMLFilePathなどに非同期版を用意しました。 将来的にEngine生成の非同期化を行ったり、Node.js環境縛りを緩和するために同期版のサポートを打ち切る可能性があります。

Bug Fixes

  • prh: patternsとwordBoundaryを同時に指定した場合も\bを付加するように (b52261f)

Features

  • prh: 別のファイルをimportする時の挙動をある程度制御できるように変更 fixes #19 (cd17abe)
  • prh: 将来的な変更に備え、処理を非同期化したAPIを用意した (9cb0c79)

5.3.0 (2017-08-17)

Features

  • prh: EngineにsourcePathsプロパティを追加 どのファイルをソースにして生成されたかを保持する (4bcdeb8)

5.2.0 (2017-08-17)

Features

  • prh: Diffから変換後のnewTextを取得できるようにした (717b7c1)
  • prh: gitのsubmoduleをrulesからprh-rulesに移動 (eb5812b)
  • prh: misc/prh.yml の内容をより実践ですぐ使える形式に変更 (b34ee1d)

5.1.1 (2017-08-17)

Bug Fixes

  • prh: 命名の一貫性が損なわれてたのを修正 fromYAMLFilePaths に変更 (b2f6fd2)

5.1.0 (2017-08-17)

Features

  • prh: 複数の設定ファイルから単一のEngineを作る fromYamlFilePaths 公開関数を追加 (df6679a)

5.0.0 (2017-08-16)

--rules 指定無しの時の設定ファイルを探索するルールが変わりました。 v4.xまではコマンドを実行したディレクトリにあるprh.ymlでしたが、v5からは処理対象ファイルと同じディレクトリまたはそれより上の階層のprh.ymlを個別に探索し利用します。 prh.ymlを発見できなかった場合はエラーになります。

連日のBREAKING CHANGEですんません…!今後落ち着くはずです。

Features

  • prh: --verify と他のオプションを組み合わせて実行できるように変更 (3a08ec1)
  • prh: .npmignoreにCircle CIやtoolsを追加 (de16162)
  • prh: BREAKING CHANGE --rules 指定なしの場合、処理対象ファイルから直近のprh.ymlを探索して使うように変更 (9f94875)
  • prh: getRuleFilePath を公開された関数として追加 (7b72efe)
  • prh: どのファイルがどの設定を元に動作しているかわからないとつらそうなので --verbose オプションを追加 (bffcef2)

4.0.0 (2017-08-15)

コマンドラインからの利用がしやすいように色々と手を加えました。 v3系から破壊的変更もあるので気をつけてください。 API上の破壊的変更はありません。

  • --json オプションを --rules-json オプションに変更
  • --yaml オプションを --rules-yaml オプションに変更
  • デフォルトの挙動は校正後のファイルをstdoutに出力していたのを止めた
    • --stdout オプションを導入(v3でのデフォルトの挙動だったもの)
  • --diff オプションを導入
  • --verify オプションを導入

詳しくはREADME.mdを参照してください。

Bug Fixes

  • prh: CIのNode.jsバージョンを6系に変更 (e2c33dc)
  • prh: prh:disable プラグマの挙動が意図と完全に逆になってたのを修正… (24f734e)
  • prh: 差分作成処理で変化がない置き換えパターンが生成されていたのを修正 (a95f7c4)

Features

  • prh: --diff オプションの実装 unified diff形式で差分出力できるようにした (9ffa09e)
  • prh: --replace で置き換えたファイルがある場合、stderrに置き換えたファイル名を出力するようにした (f8a07a8)
  • prh: --report オプションの実装 (bef8ab0)
    • --report をデフォルトの挙動に変更 既存の挙動は --stdout に移動 (83a09cc)
  • prh: BREAKING CHANGE --json と --yaml オプションを --rules-json と --rules-yaml オプションに変更 (69da647)
  • prh: indexから行&列に変換するユーティリティを追加 (1621b5f)
  • prh: 変更差分の有無をexit codeで返す --verify オプションの追加 (2e38924)

3.1.1 (2017-08-07)

Bug Fixes

  • prh: patternが空文字の時にエラーで弾くように修正 fixes #24 (a722165)
  • prh: regexpSpec.tsがテスト対象になっていなかったのを修正 (a53a36b)
  • prh: 正規表現のconcatとcombineでフラグを考慮して処理するように修正 fixes #25 (997b0f4)

3.1.0 (2017-08-06)

Features

  • prh: 依存関係の更新 (b33108b)
  • prh: 段落毎にテキストをブロックに切り、警告を抑制できる仕組みを追加 (416a2d1)

3.0.1 (2017-05-06)

Features

  • prh: Diffのis*系メソッドについて引数の条件を少し緩和した (e219e27)

3.0.0 (2017-05-06)

APIのクリーニングをやった。 Language Server Protocolと組み合わせてみるにあたり、ChangeSetに元のファイルパスやコンテンツ内容を保持していたほうが都合がよかったため。

Features

  • ci: Circle CI 2.0に移行してみよう (#23) (3641966)
  • prh: コード全体を見返してAPIを整理した (ad0b89e)
  • prh: 正規表現を生成する時にデフォルトでunicodeフラグを追加するように変更 (815ffda)

2.0.0 (2017-05-04)

Features

  • deps: 脱gruntしていく (396fd6f)
  • prh: ChangeSetとDiffを外部から参照したい場合があったので参照できるようにした (9f1b985)
  • prh: tsconfig.jsonでstrictNullChecksを有効にした (f222506)

1.1.0 (2016-10-27)

今まで misc フォルダにあったものが、prh/rulesに移動しました。 ガイドラインの議論についてはrulesの#1を見てください。

Bug Fixes

  • WEB+DB_PRESS_r2.yml: 2013年に商号がSBクリエイティブになったそうな (3ed8900)
  • WEB+DB_PRESS_r2.yml: update WEB+DB_PRESS_r2.yml "Debian GNU/Linux"がfixしても校正されてしまうのを修正 (#22) (8022761)

Features

  • prh: rules フォルダ新設とprh org移管に伴い各所を書き換え (a7eea21)
  • prh: rules をgit submoduleとして配置 (b67a462)
  • tools: WZエディタ用ルールセットからprh用yamlに近いものに変換するスクリプトを作成 (25a52fe)
  • WEB+DB_PRESS_r2.yml: WEB+DB_PRESS.yml から移植可能な部分を移植した (e18d98e)

1.0.3 (2016-10-02)

Bug Fixes

  • prh: choreでうっかりbreaking changeしてたのをもとに戻した (29b5f9f)

1.0.2 (2016-09-23)

use TypeScript 2.0.3 yay!

Bug Fixes

  • prh.yml: 否定後読みについてのサンプルを追加 fixes #17 (fbfe747)

Features

  • ci: add grunt-cli to devDependencies (50f8a63)
  • techbooster.yml: Android用の語彙を少し追加 (9ea54f4)
  • techbooster.yml: C90-Androidリポジトリの変更差分を取り込み (18e7959)
  • techbooster.yml: C90-WebTechリポジトリの変更差分を取り込み (ecc4397)
  • techbooster.yml: 技術書典のルールを追加 (53790d3)

1.0.1 (2016-05-30)

Bug Fixes

  • prh: Engine#mergeで別ルールをマージする時にルールの除去を一括で行うようの修正 closes #18 (904b23b), closes #18
  • techbooster.yml: その時間 が警告にならないように修正 (e1a9e7f)

1.0.0 (2016-05-02)

prh is stable.

Bug Fixes

  • techbooster.yml: 記事 を 記こと に開かないようにした(5ee3c62)
  • techbooster.yml: 下記の を 次の と言い換えるように修正(73206fe)
  • techbooster.yml: 事実 事体 の 事 を開かないようにした(5ae9ec1)
  • techbooster.yml: 事態 を こと態 に開こうとしていたのを修正(1faea5d)
  • techbooster.yml: 仕事 を 仕こと に開こうとしていたのを修正(325f92e)
  • techbooster.yml: 変更に を 変さらに に開かないように修正(1a3af91)
  • techbooster.yml: 大事 を 大こと に開こうとしていたのを修正(265ba48)
  • techbooster.yml: 良い例 を よい例 に開かないように調整 refs #12(18f785a)

0.9.0 (2015-11-02)

Features

  • prh: add support regexpMustEmpty field. it is use for mimic of negative lookbehind (28b025a)

0.8.0 (2015-10-25)

v0.8.0 has many BREAKING CHANGE. sorry, it is not much in the future.

Features

  • build: add grunt-conventional-changelog (b6f4511)
  • prh: implement imports feature (b3f7214)
  • prh: improve class naming, rename Config to Engine refs #8 (5f9d931)
  • prh: move function lib/changeset to ChangeSet class (e87a1c6)
  • prh: refactor ChangeSet. rename ChangeSet to Diff, create new ChangeType class. (aa621e7)
  • prh: stop destructive change in ChangeSet#subtract (19caf01)