Pandocの力を借りて、RedPenでWordファイルをテストする
redpen
Published: 2016-05-01
経緯
textlintとRedPenのどちらを使うかを悩み、「会社で使うWindowsのPCにインストールしやすいから」という理由でRedPenを選んでから、数か月がたちました。そんな中、昨日、自分の頭の中に神が降りてきました。
RedPenがWordに対応していなくて困ったが、PandocをかませてWordをmarkdownにすればいいだけだった。
— こんごー@頑張らないために頑張る (@kongou_ae)2016年4月29日
RedPenはWordファイルに対応していません。ですが、Pandocを使ってWordファイルをMarkdownに変換すれば、RedPenでWordファイルの内容をテストできます。なぜ今まで思いつかなかった。
実践
Pandocはインストーラを使ってインストールします。RedPenはGitHubで配布されている圧縮ファイルをCドライブ直下に展開します。
PandocとRedPenをそれぞれコマンドラインで実行するのは大変なので、一連の処理をバッチにまとめます。バッチに渡したファイルの拡張子が.docxであったら、Pandocを使って中間ファイルtmp.mdに変換したうえでRedPenによる検査を実施します。
@echo offset PANDOCROOT=C:\Users\xxxxxx\AppData\Local\Pandocset REDPENROOT=C:\redpen-distribution-1.5.2set PROJECTROOT=%~dp0set FILENAME=%1set FILETYPE=%~x1IF "%1" EQU "" ( echo ファイルを指定してください exit 1)IF %FILETYPE% EQU .docx ( rem convert word to markdown cd %PROJECTROOT% %PANDOCROOT%\pandoc.exe -f docx -t markdown %FILENAME% -o tmp\tmp.md rem test by redpen %REDPENROOT%\bin\redpen -c %REDPENROOT%\conf\redpen-conf-ja-new.xml %PROJECTROOT%\tmp\tmp.md del tmp\tmp.md exit 0) ELSE IF %FILETYPE% EQU .md ( rem test by redpen %REDPENROOT%\bin\redpen -c %REDPENROOT%\conf\redpen-conf-ja-new.xml %PROJECTROOT%\%FILENAME% exit 0) ELSE ( echo .docxか.mdのファイルを引数に指定してください。 exit 1)バッチファイルを使ってWordファイルをテストしてみます。RedPenによる検査が実施され、エラーを検出しています。
PS C:\pandoc-redpen> .\test.bat .\test.docx[2016-05-01 20:13:33.382][INFO ] cc.redpen.Main - Configuration file: C:\redpen-distribution-1.5.2\conf\redpen-conf-ja-new.xml[2016-05-01 20:13:33.417][INFO ] cc.redpen.config.ConfigurationLoader - Loading config from specified config file: "C:\redpen-distribution-1.5.2\conf\redpen-conf-ja-new.xml"[2016-05-01 20:13:33.466][INFO ] cc.redpen.config.ConfigurationLoader - Succeeded to load configuration file[2016-05-01 20:13:33.468][INFO ] cc.redpen.config.ConfigurationLoader - Language is set to "ja"[2016-05-01 20:13:33.472][WARN ] cc.redpen.config.ConfigurationLoader - No variant configuration...[2016-05-01 20:13:33.480][INFO ] cc.redpen.config.ConfigurationLoader - No "symbols" block found in the configuration[2016-05-01 20:13:33.503][INFO ] cc.redpen.config.SymbolTable - "ja" is specified.[2016-05-01 20:13:33.507][INFO ] cc.redpen.config.SymbolTable - "zenkaku" variant is specified[2016-05-01 20:13:35.883][INFO ] cc.redpen.parser.SentenceExtractor - "[。, ?, !]" are added as a end of sentence characters[2016-05-01 20:13:35.886][INFO ] cc.redpen.parser.SentenceExtractor - "[’, ”]" are added as a right quotation characters[2016-05-01 20:13:36.165][INFO ] cc.redpen.validator.JavaScriptValidator - JavaScript validators directory: jstmp.md:0: ValidationError[ParagraphNumber], セクション内のパラグラフ数が最大の"46"を超えています at line:tmp.md:1: ValidationError[JavaScript], [termsValidator0.js] 文書規約違反(MyCompany)です。「事」を修正してください。(正:こと 誤:事) at line: ごはんの事である。tmp.md:1: ValidationError[JavaScript], [jtfStyleGuideValidator.js] 文書規約違反(JTF-2.2.1)です。「何時」を修正してください。(正:いつ 誤:何時) at line: 何時かご飯を食べて下さい。(中略)[2016-05-01 20:13:41.233][ERROR] cc.redpen.Main - The number of errors "45" is larger than specified (limit is "1").PS C:\pandoc-redpen>所感
Pandocを利用することで、RedPenが対応していないフォーマットのドキュメントを検査することができました。
最近対応したプロジェクトでは、「Excelに定義されている文書規約に沿って提案書を書き、レビューではその文書規約どおりであることを手作業で確認する」という地獄を体験しました。この無意味な地獄をPandocとRedPenの合わせ技で乗り切れるように仕込みをしようと思います。
