{"action":"created","comment":{"url":"https://api.github.com/repos/efcl/efcl.github.io/pulls/comments/42315364","id":42315364,"diff_hunk":"@@ -0,0 +1,113 @@\n+---\n+title: \"校正ツール textlint 4.0リリース\"\n+author: azu\n+layout: post\n+date : 2015-10-18T08:01\n+category: JavaScript\n+tags:\n+    - textlint\n+    - library\n+    - ReleaseNote\n+\n+---\n+\n+[textlint][] 4.0をリリースしました。\n+\n+- [Release 4.0.0 · azu/textlint](https://github.com/azu/textlint/releases/tag/4.0.0 \"Release 4.0.0 · azu/textlint\")\n+\n+textlintはMarkdownなどの文章に対するESLintのようなLintツールですが、詳しくは以下の記事を参照してください。\n+\n+- [textlintで日本語の文章をチェックする | Web Scratch](http://efcl.info/2015/09/10/introduce-textlint/)\n+- [textlint + prhで表記ゆれを検出する | Web Scratch](http://efcl.info/2015/09/14/textlint-rule-prh/)\n+- [今すぐ電子書籍(技術書)を書き始める方法と文章の自動チェック | Web Scratch](http://efcl.info/2015/09/28/easy-to-create-ebook/)\n+\n+## textlint 4.0\n+\n+[textlint][] 4.0では以下のような変更が含まれています。\n+\n+- [3.7.1...4.0.0](https://github.com/azu/textlint/compare/3.7.1...4.0.0)\n+\n+**Breaking Change**\n+\n+- `TextLintMessage`のcolumnsが1-basedに変更されました [#38](https://github.com/azu/textlint/issues/38 \"#38\")\n+\n+この破壊的変更は`textlint`をライブラリとして利用しているユーザに関係します([use-as-modules.md](https://github.com/azu/textlint/blob/master/docs/use-as-modules.md))。\n+\n+- https://github.com/azu/textlint-tester fixed in [this](https://github.com/azu/textlint-tester/commit/61db2a95108f8b3d1d852e348a8ddb2ab3d9c5e6)\n+- https://github.com/1000ch/linter-textlint fixed in [pull/5](https://github.com/1000ch/linter-textlint/pull/5)\n+- https://github.com/muraken720/retext-textlint no needed change\n+\n+**Features**\n+\n+- `TextLintEngine#executeOnText` と `textlint#lintText` が第二引数 `ext` をサポートしました \n+     - `engine.executeOnText(text, \".md\")` というようにtextの種類を指定できます。\n+- `TextLintCore`を参照できるように [#41](https://github.com/azu/textlint/issues/41 \"#41\")\n+- [Add \"json\" formatter #5](https://github.com/azu/textlint-formatter/pull/5 \"Add &#34;json&#34; formatter #5\")\n+\t- `textlint -f json` で利用できます。\n+\n+**Fixed**\n+\n+- Fix [pretty-error: East Asian Width problem #2](https://github.com/azu/textlint-formatter/issues/2 \"pretty-error: East Asian Width problem #2\")\n+     - 表示が日本語などでずれる問題を修正\n+\n+![pretty-error](https://monosnap.com/file/5RJfYtYGxhCQ3kkoivKq4hi1QeB01N.png)\n+\n+----\n+\n+**変更詳細**\n+\n+`TextLintMessage`のcolumnsは元々0,1,2,3と0からスタートしていましたが、\n+4.0からは1,2,3,4と1からスタートされるように変更しました\n+\n+なぜ元々columnsが0スタートだったのは、Esprimaなどのパーサーがcolumnsが0スタート担っているのに合わせていたからでした。\n+\n+これはブラウザのErrorのスタックトレースに合わせていたため0スタートとなっていたようです。\n+\n+- [Why do `line` of location in JavaScript AST(ESTree) start with 1 and not 0?](https://gist.github.com/azu/8866b2cb9b7a933e01fe \"Why do `line` of location in JavaScript AST(ESTree) start with 1 and not 0?\")\n+\n+しかし、textlint場合は表示先がブラウザではなくエディタで、エディタはline:1、column:1からスタートしているものが殆どです。\n+\n+textlintをライブラリとして使ってる[linter-textlint](https://github.com/1000ch/linter-textlint \"linter-textlint\")など自分が知ってるものは合わせて修正したので、ツールとして使うユーザーへの影響はないと思います。\n+\n+![linter-textlint](https://monosnap.com/file/E1qn94AApkWaXNIXmT3plMyZtj3C45.png)\n+\n+## プラグイン\n+\n+3.7.0でプラグインをサポートしたので合わせて紹介します。\n+プラグインは今のところルールとルールの設定をまとめただけのモジュールです。\n+\n+- [Release 3.7.0 textlint plugin support · azu/textlint](https://github.com/azu/textlint/releases/tag/3.7.0 \"Release 3.7.0 textlint plugin support · azu/textlint\")\n+\n+今のところ自分が作った[textlint-plugin-JTF-style](https://github.com/azu/textlint-plugin-JTF-style \"azu/textlint-plugin-JTF-style\")しかないと思います。","path":"_posts/2015/2015-10-18-textlint-4.0.md","position":81,"original_position":81,"commit_id":"969e45525583524a31f253af425f9eaff461861d","original_commit_id":"969e45525583524a31f253af425f9eaff461861d","user":{"login":"bot-user","id":13572711,"avatar_url":"https://avatars.githubusercontent.com/u/13572711?v=3","gravatar_id":"","url":"https://api.github.com/users/bot-user","html_url":"https://github.com/bot-user","followers_url":"https://api.github.com/users/bot-user/followers","following_url":"https://api.github.com/users/bot-user/following{/other_user}","gists_url":"https://api.github.com/users/bot-user/gists{/gist_id}","starred_url":"https://api.github.com/users/bot-user/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bot-user/subscriptions","organizations_url":"https://api.github.com/users/bot-user/orgs","repos_url":"https://api.github.com/users/bot-user/repos","events_url":"https://api.github.com/users/bot-user/events{/privacy}","received_events_url":"https://api.github.com/users/bot-user/received_events","type":"User","site_admin":false},"body":"ERROR: \"である\"調 と \"ですます\"調 が混在\nである  : 1\nですます: 47\n=> \"った\" がである調\n (no-mix-dearu-desumasu)","created_at":"2015-10-17T23:42:10Z","updated_at":"2015-10-17T23:42:10Z","html_url":"https://github.com/efcl/efcl.github.io/pull/116#discussion_r42315364","pull_request_url":"https://api.github.com/repos/efcl/efcl.github.io/pulls/116","_links":{"self":{"href":"https://api.github.com/repos/efcl/efcl.github.io/pulls/comments/42315364"},"html":{"href":"https://github.com/efcl/efcl.github.io/pull/116#discussion_r42315364"},"pull_request":{"href":"https://api.github.com/repos/efcl/efcl.github.io/pulls/116"}}},"pull_request":{"url":"https://api.github.com/repos/efcl/efcl.github.io/pulls/116","id":47997952,"html_url":"https://github.com/efcl/efcl.github.io/pull/116","diff_url":"https://github.com/efcl/efcl.github.io/pull/116.diff","patch_url":"https://github.com/efcl/efcl.github.io/pull/116.patch","issue_url":"https://api.github.com/repos/efcl/efcl.github.io/issues/116","number":116,"state":"open","locked":false,"title":"textlint 4.0について","user":{"login":"azu","id":19714,"avatar_url":"https://avatars.githubusercontent.com/u/19714?v=3","gravatar_id":"","url":"https://api.github.com/users/azu","html_url":"https://github.com/azu","followers_url":"https://api.github.com/users/azu/followers","following_url":"https://api.github.com/users/azu/following{/other_user}","gists_url":"https://api.github.com/users/azu/gists{/gist_id}","starred_url":"https://api.github.com/users/azu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azu/subscriptions","organizations_url":"https://api.github.com/users/azu/orgs","repos_url":"https://api.github.com/users/azu/repos","events_url":"https://api.github.com/users/azu/events{/privacy}","received_events_url":"https://api.github.com/users/azu/received_events","type":"User","site_admin":false},"body":"https://github.com/azu/textlint/releases/tag/4.0.0","created_at":"2015-10-17T23:40:57Z","updated_at":"2015-10-17T23:42:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7e3ac597a8a73071308bce99681efcf3ab65ca3f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/efcl/efcl.github.io/pulls/116/commits","review_comments_url":"https://api.github.com/repos/efcl/efcl.github.io/pulls/116/comments","review_comment_url":"https://api.github.com/repos/efcl/efcl.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/efcl/efcl.github.io/issues/116/comments","statuses_url":"https://api.github.com/repos/efcl/efcl.github.io/statuses/969e45525583524a31f253af425f9eaff461861d","head":{"label":"efcl:textlint4.0","ref":"textlint4.0","sha":"969e45525583524a31f253af425f9eaff461861d","user":{"login":"efcl","id":8081392,"avatar_url":"https://avatars.githubusercontent.com/u/8081392?v=3","gravatar_id":"","url":"https://api.github.com/users/efcl","html_url":"https://github.com/efcl","followers_url":"https://api.github.com/users/efcl/followers","following_url":"https://api.github.com/users/efcl/following{/other_user}","gists_url":"https://api.github.com/users/efcl/gists{/gist_id}","starred_url":"https://api.github.com/users/efcl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/efcl/subscriptions","organizations_url":"https://api.github.com/users/efcl/orgs","repos_url":"https://api.github.com/users/efcl/repos","events_url":"https://api.github.com/users/efcl/events{/privacy}","received_events_url":"https://api.github.com/users/efcl/received_events","type":"Organization","site_admin":false},"repo":{"id":21533702,"name":"efcl.github.io","full_name":"efcl/efcl.github.io","owner":{"login":"efcl","id":8081392,"avatar_url":"https://avatars.githubusercontent.com/u/8081392?v=3","gravatar_id":"","url":"https://api.github.com/users/efcl","html_url":"https://github.com/efcl","followers_url":"https://api.github.com/users/efcl/followers","following_url":"https://api.github.com/users/efcl/following{/other_user}","gists_url":"https://api.github.com/users/efcl/gists{/gist_id}","starred_url":"https://api.github.com/users/efcl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/efcl/subscriptions","organizations_url":"https://api.github.com/users/efcl/orgs","repos_url":"https://api.github.com/users/efcl/repos","events_url":"https://api.github.com/users/efcl/events{/privacy}","received_events_url":"https://api.github.com/users/efcl/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/efcl/efcl.github.io","description":"Web Scratchブログのリポジトリ","fork":false,"url":"https://api.github.com/repos/efcl/efcl.github.io","forks_url":"https://api.github.com/repos/efcl/efcl.github.io/forks","keys_url":"https://api.github.com/repos/efcl/efcl.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/efcl/efcl.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/efcl/efcl.github.io/teams","hooks_url":"https://api.github.com/repos/efcl/efcl.github.io/hooks","issue_events_url":"https://api.github.com/repos/efcl/efcl.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/efcl/efcl.github.io/events","assignees_url":"https://api.github.com/repos/efcl/efcl.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/efcl/efcl.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/efcl/efcl.github.io/tags","blobs_url":"https://api.github.com/repos/efcl/efcl.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/efcl/efcl.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/efcl/efcl.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/efcl/efcl.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/efcl/efcl.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/efcl/efcl.github.io/languages","stargazers_url":"https://api.github.com/repos/efcl/efcl.github.io/stargazers","contributors_url":"https://api.github.com/repos/efcl/efcl.github.io/contributors","subscribers_url":"https://api.github.com/repos/efcl/efcl.github.io/subscribers","subscription_url":"https://api.github.com/repos/efcl/efcl.github.io/subscription","commits_url":"https://api.github.com/repos/efcl/efcl.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/efcl/efcl.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/efcl/efcl.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/efcl/efcl.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/efcl/efcl.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/efcl/efcl.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/efcl/efcl.github.io/merges","archive_url":"https://api.github.com/repos/efcl/efcl.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/efcl/efcl.github.io/downloads","issues_url":"https://api.github.com/repos/efcl/efcl.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/efcl/efcl.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/efcl/efcl.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/efcl/efcl.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/efcl/efcl.github.io/labels{/name}","releases_url":"https://api.github.com/repos/efcl/efcl.github.io/releases{/id}","created_at":"2014-07-06T04:46:55Z","updated_at":"2015-10-17T12:56:17Z","pushed_at":"2015-10-17T23:40:58Z","git_url":"git://github.com/efcl/efcl.github.io.git","ssh_url":"git@github.com:efcl/efcl.github.io.git","clone_url":"https://github.com/efcl/efcl.github.io.git","svn_url":"https://github.com/efcl/efcl.github.io","homepage":"http://efcl.info/","size":178942,"stargazers_count":29,"watchers_count":29,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":13,"mirror_url":null,"open_issues_count":10,"forks":13,"open_issues":10,"watchers":29,"default_branch":"master"}},"base":{"label":"efcl:master","ref":"master","sha":"73b96088fd585193a582bb671f8d0c63b2b68370","user":{"login":"efcl","id":8081392,"avatar_url":"https://avatars.githubusercontent.com/u/8081392?v=3","gravatar_id":"","url":"https://api.github.com/users/efcl","html_url":"https://github.com/efcl","followers_url":"https://api.github.com/users/efcl/followers","following_url":"https://api.github.com/users/efcl/following{/other_user}","gists_url":"https://api.github.com/users/efcl/gists{/gist_id}","starred_url":"https://api.github.com/users/efcl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/efcl/subscriptions","organizations_url":"https://api.github.com/users/efcl/orgs","repos_url":"https://api.github.com/users/efcl/repos","events_url":"https://api.github.com/users/efcl/events{/privacy}","received_events_url":"https://api.github.com/users/efcl/received_events","type":"Organization","site_admin":false},"repo":{"id":21533702,"name":"efcl.github.io","full_name":"efcl/efcl.github.io","owner":{"login":"efcl","id":8081392,"avatar_url":"https://avatars.githubusercontent.com/u/8081392?v=3","gravatar_id":"","url":"https://api.github.com/users/efcl","html_url":"https://github.com/efcl","followers_url":"https://api.github.com/users/efcl/followers","following_url":"https://api.github.com/users/efcl/following{/other_user}","gists_url":"https://api.github.com/users/efcl/gists{/gist_id}","starred_url":"https://api.github.com/users/efcl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/efcl/subscriptions","organizations_url":"https://api.github.com/users/efcl/orgs","repos_url":"https://api.github.com/users/efcl/repos","events_url":"https://api.github.com/users/efcl/events{/privacy}","received_events_url":"https://api.github.com/users/efcl/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/efcl/efcl.github.io","description":"Web Scratchブログのリポジトリ","fork":false,"url":"https://api.github.com/repos/efcl/efcl.github.io","forks_url":"https://api.github.com/repos/efcl/efcl.github.io/forks","keys_url":"https://api.github.com/repos/efcl/efcl.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/efcl/efcl.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/efcl/efcl.github.io/teams","hooks_url":"https://api.github.com/repos/efcl/efcl.github.io/hooks","issue_events_url":"https://api.github.com/repos/efcl/efcl.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/efcl/efcl.github.io/events","assignees_url":"https://api.github.com/repos/efcl/efcl.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/efcl/efcl.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/efcl/efcl.github.io/tags","blobs_url":"https://api.github.com/repos/efcl/efcl.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/efcl/efcl.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/efcl/efcl.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/efcl/efcl.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/efcl/efcl.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/efcl/efcl.github.io/languages","stargazers_url":"https://api.github.com/repos/efcl/efcl.github.io/stargazers","contributors_url":"https://api.github.com/repos/efcl/efcl.github.io/contributors","subscribers_url":"https://api.github.com/repos/efcl/efcl.github.io/subscribers","subscription_url":"https://api.github.com/repos/efcl/efcl.github.io/subscription","commits_url":"https://api.github.com/repos/efcl/efcl.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/efcl/efcl.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/efcl/efcl.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/efcl/efcl.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/efcl/efcl.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/efcl/efcl.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/efcl/efcl.github.io/merges","archive_url":"https://api.github.com/repos/efcl/efcl.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/efcl/efcl.github.io/downloads","issues_url":"https://api.github.com/repos/efcl/efcl.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/efcl/efcl.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/efcl/efcl.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/efcl/efcl.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/efcl/efcl.github.io/labels{/name}","releases_url":"https://api.github.com/repos/efcl/efcl.github.io/releases{/id}","created_at":"2014-07-06T04:46:55Z","updated_at":"2015-10-17T12:56:17Z","pushed_at":"2015-10-17T23:40:58Z","git_url":"git://github.com/efcl/efcl.github.io.git","ssh_url":"git@github.com:efcl/efcl.github.io.git","clone_url":"https://github.com/efcl/efcl.github.io.git","svn_url":"https://github.com/efcl/efcl.github.io","homepage":"http://efcl.info/","size":178942,"stargazers_count":29,"watchers_count":29,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":13,"mirror_url":null,"open_issues_count":10,"forks":13,"open_issues":10,"watchers":29,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/efcl/efcl.github.io/pulls/116"},"html":{"href":"https://github.com/efcl/efcl.github.io/pull/116"},"issue":{"href":"https://api.github.com/repos/efcl/efcl.github.io/issues/116"},"comments":{"href":"https://api.github.com/repos/efcl/efcl.github.io/issues/116/comments"},"review_comments":{"href":"https://api.github.com/repos/efcl/efcl.github.io/pulls/116/comments"},"review_comment":{"href":"https://api.github.com/repos/efcl/efcl.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/efcl/efcl.github.io/pulls/116/commits"},"statuses":{"href":"https://api.github.com/repos/efcl/efcl.github.io/statuses/969e45525583524a31f253af425f9eaff461861d"}}}}