{"action":"created","comment":{"url":"https://api.github.com/repos/eslint/eslint/pulls/comments/35549748","id":35549748,"diff_hunk":"@@ -1,111 +1,185 @@\n /**\n  * @fileoverview Source code for spaced-comments rule\n  * @author Gyandeep Singh\n+ * @copyright 2015 Toru Nagashima. All rights reserved.\n  * @copyright 2015 Gyandeep Singh. All rights reserved.\n  * @copyright 2014 Greg Cochard. All rights reserved.\n  */\n \"use strict\";\n \n //------------------------------------------------------------------------------\n-// Rule Definition\n+// Helpers\n //------------------------------------------------------------------------------\n \n-module.exports = function(context) {\n+/**\n+ * Escapes the control characters of a given string.\n+ * @param {string} s - A string to escape.\n+ * @returns {string} An escaped string.\n+ */\n+function escape(s) {\n+    var isOneChar = s.length === 1;\n+    s = s.replace(/([.*+?${}()|\\^\\[\\]\\/\\\\])/g, \"\\\\$1\");\n+    return isOneChar ? s : \"(?:\" + s + \")\";\n+}\n \n-    // Unless the first option is never, require a space\n-    var requireSpace = context.options[0] !== \"never\";\n+/**\n+ * Escapes the control characters of a given string.\n+ * @param {string} s - A string to escape.\n+ * @returns {string} An escaped string.\n+ */\n+function escapeAndRepeat(s) {\n+    return escape(s) + \"+\";\n+}\n \n-    // Default to match anything, so all will fail if there are no exceptions\n-    var exceptionMatcher = new RegExp(\" \");\n-    var markerMatcher = new RegExp(\" \");\n-    var jsDocMatcher = new RegExp(\"((^(\\\\*)))[ \\\\r\\\\n]\");\n+/**\n+ * Parses `markers` option.\n+ * If markers is not includes `\"*\"`, adds it to allow JSDoc comments.\n+ * @param {string[]|null} markers - A marker list.\n+ * @returns {string[]} A marker list.\n+ */\n+function parseMakersOption(markers) {\n+    if (markers == null) {","path":"lib/rules/spaced-comment.js","position":49,"original_position":49,"commit_id":"eb2a38a15521e66f77e2bf38733719165c932487","original_commit_id":"eb2a38a15521e66f77e2bf38733719165c932487","user":{"login":"nzakas","id":38546,"avatar_url":"https://avatars.githubusercontent.com/u/38546?v=3","gravatar_id":"","url":"https://api.github.com/users/nzakas","html_url":"https://github.com/nzakas","followers_url":"https://api.github.com/users/nzakas/followers","following_url":"https://api.github.com/users/nzakas/following{/other_user}","gists_url":"https://api.github.com/users/nzakas/gists{/gist_id}","starred_url":"https://api.github.com/users/nzakas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nzakas/subscriptions","organizations_url":"https://api.github.com/users/nzakas/orgs","repos_url":"https://api.github.com/users/nzakas/repos","events_url":"https://api.github.com/users/nzakas/events{/privacy}","received_events_url":"https://api.github.com/users/nzakas/received_events","type":"User","site_admin":false},"body":"Misspelled markers as makers.","created_at":"2015-07-27T15:34:41Z","updated_at":"2015-07-27T15:34:41Z","html_url":"https://github.com/eslint/eslint/pull/3167#discussion_r35549748","pull_request_url":"https://api.github.com/repos/eslint/eslint/pulls/3167","_links":{"self":{"href":"https://api.github.com/repos/eslint/eslint/pulls/comments/35549748"},"html":{"href":"https://github.com/eslint/eslint/pull/3167#discussion_r35549748"},"pull_request":{"href":"https://api.github.com/repos/eslint/eslint/pulls/3167"}}},"pull_request":{"url":"https://api.github.com/repos/eslint/eslint/pulls/3167","id":40855949,"html_url":"https://github.com/eslint/eslint/pull/3167","diff_url":"https://github.com/eslint/eslint/pull/3167.diff","patch_url":"https://github.com/eslint/eslint/pull/3167.patch","issue_url":"https://api.github.com/repos/eslint/eslint/issues/3167","number":3167,"state":"open","locked":false,"title":"Fix: `spaced-comment` allows a mix of markers and exceptions","user":{"login":"mysticatea","id":1937871,"avatar_url":"https://avatars.githubusercontent.com/u/1937871?v=3","gravatar_id":"","url":"https://api.github.com/users/mysticatea","html_url":"https://github.com/mysticatea","followers_url":"https://api.github.com/users/mysticatea/followers","following_url":"https://api.github.com/users/mysticatea/following{/other_user}","gists_url":"https://api.github.com/users/mysticatea/gists{/gist_id}","starred_url":"https://api.github.com/users/mysticatea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mysticatea/subscriptions","organizations_url":"https://api.github.com/users/mysticatea/orgs","repos_url":"https://api.github.com/users/mysticatea/repos","events_url":"https://api.github.com/users/mysticatea/events{/privacy}","received_events_url":"https://api.github.com/users/mysticatea/received_events","type":"User","site_admin":false},"body":"Fixes #2895.\r\n\r\nI refactored since the rule has a complex flow chart...\r\n\r\nNew logic is:\r\n\r\n1. Makes a `RegExp` object from `markers` and `exceptions`, to validate comments.\r\n2. Checks comments with using the `RegExp` object.","created_at":"2015-07-26T16:47:28Z","updated_at":"2015-07-27T15:34:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ee85914ac7c0ef369ab449ac4fea1fc7ca90086b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/eslint/eslint/pulls/3167/commits","review_comments_url":"https://api.github.com/repos/eslint/eslint/pulls/3167/comments","review_comment_url":"https://api.github.com/repos/eslint/eslint/pulls/comments{/number}","comments_url":"https://api.github.com/repos/eslint/eslint/issues/3167/comments","statuses_url":"https://api.github.com/repos/eslint/eslint/statuses/eb2a38a15521e66f77e2bf38733719165c932487","head":{"label":"mysticatea:spaced-comment/mix-of-markers-and-exceptions","ref":"spaced-comment/mix-of-markers-and-exceptions","sha":"eb2a38a15521e66f77e2bf38733719165c932487","user":{"login":"mysticatea","id":1937871,"avatar_url":"https://avatars.githubusercontent.com/u/1937871?v=3","gravatar_id":"","url":"https://api.github.com/users/mysticatea","html_url":"https://github.com/mysticatea","followers_url":"https://api.github.com/users/mysticatea/followers","following_url":"https://api.github.com/users/mysticatea/following{/other_user}","gists_url":"https://api.github.com/users/mysticatea/gists{/gist_id}","starred_url":"https://api.github.com/users/mysticatea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mysticatea/subscriptions","organizations_url":"https://api.github.com/users/mysticatea/orgs","repos_url":"https://api.github.com/users/mysticatea/repos","events_url":"https://api.github.com/users/mysticatea/events{/privacy}","received_events_url":"https://api.github.com/users/mysticatea/received_events","type":"User","site_admin":false},"repo":{"id":34937068,"name":"eslint","full_name":"mysticatea/eslint","owner":{"login":"mysticatea","id":1937871,"avatar_url":"https://avatars.githubusercontent.com/u/1937871?v=3","gravatar_id":"","url":"https://api.github.com/users/mysticatea","html_url":"https://github.com/mysticatea","followers_url":"https://api.github.com/users/mysticatea/followers","following_url":"https://api.github.com/users/mysticatea/following{/other_user}","gists_url":"https://api.github.com/users/mysticatea/gists{/gist_id}","starred_url":"https://api.github.com/users/mysticatea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mysticatea/subscriptions","organizations_url":"https://api.github.com/users/mysticatea/orgs","repos_url":"https://api.github.com/users/mysticatea/repos","events_url":"https://api.github.com/users/mysticatea/events{/privacy}","received_events_url":"https://api.github.com/users/mysticatea/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mysticatea/eslint","description":"A fully pluggable tool for identifying and reporting on patterns in JavaScript.","fork":true,"url":"https://api.github.com/repos/mysticatea/eslint","forks_url":"https://api.github.com/repos/mysticatea/eslint/forks","keys_url":"https://api.github.com/repos/mysticatea/eslint/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mysticatea/eslint/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mysticatea/eslint/teams","hooks_url":"https://api.github.com/repos/mysticatea/eslint/hooks","issue_events_url":"https://api.github.com/repos/mysticatea/eslint/issues/events{/number}","events_url":"https://api.github.com/repos/mysticatea/eslint/events","assignees_url":"https://api.github.com/repos/mysticatea/eslint/assignees{/user}","branches_url":"https://api.github.com/repos/mysticatea/eslint/branches{/branch}","tags_url":"https://api.github.com/repos/mysticatea/eslint/tags","blobs_url":"https://api.github.com/repos/mysticatea/eslint/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mysticatea/eslint/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mysticatea/eslint/git/refs{/sha}","trees_url":"https://api.github.com/repos/mysticatea/eslint/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mysticatea/eslint/statuses/{sha}","languages_url":"https://api.github.com/repos/mysticatea/eslint/languages","stargazers_url":"https://api.github.com/repos/mysticatea/eslint/stargazers","contributors_url":"https://api.github.com/repos/mysticatea/eslint/contributors","subscribers_url":"https://api.github.com/repos/mysticatea/eslint/subscribers","subscription_url":"https://api.github.com/repos/mysticatea/eslint/subscription","commits_url":"https://api.github.com/repos/mysticatea/eslint/commits{/sha}","git_commits_url":"https://api.github.com/repos/mysticatea/eslint/git/commits{/sha}","comments_url":"https://api.github.com/repos/mysticatea/eslint/comments{/number}","issue_comment_url":"https://api.github.com/repos/mysticatea/eslint/issues/comments{/number}","contents_url":"https://api.github.com/repos/mysticatea/eslint/contents/{+path}","compare_url":"https://api.github.com/repos/mysticatea/eslint/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mysticatea/eslint/merges","archive_url":"https://api.github.com/repos/mysticatea/eslint/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mysticatea/eslint/downloads","issues_url":"https://api.github.com/repos/mysticatea/eslint/issues{/number}","pulls_url":"https://api.github.com/repos/mysticatea/eslint/pulls{/number}","milestones_url":"https://api.github.com/repos/mysticatea/eslint/milestones{/number}","notifications_url":"https://api.github.com/repos/mysticatea/eslint/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mysticatea/eslint/labels{/name}","releases_url":"https://api.github.com/repos/mysticatea/eslint/releases{/id}","created_at":"2015-05-02T05:43:17Z","updated_at":"2015-05-02T05:43:21Z","pushed_at":"2015-07-26T17:14:39Z","git_url":"git://github.com/mysticatea/eslint.git","ssh_url":"git@github.com:mysticatea/eslint.git","clone_url":"https://github.com/mysticatea/eslint.git","svn_url":"https://github.com/mysticatea/eslint","homepage":"http://eslint.org","size":6479,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"eslint:master","ref":"master","sha":"7a6c0066b3dd1623a05b1e0197d76f718364ccac","user":{"login":"eslint","id":6019716,"avatar_url":"https://avatars.githubusercontent.com/u/6019716?v=3","gravatar_id":"","url":"https://api.github.com/users/eslint","html_url":"https://github.com/eslint","followers_url":"https://api.github.com/users/eslint/followers","following_url":"https://api.github.com/users/eslint/following{/other_user}","gists_url":"https://api.github.com/users/eslint/gists{/gist_id}","starred_url":"https://api.github.com/users/eslint/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eslint/subscriptions","organizations_url":"https://api.github.com/users/eslint/orgs","repos_url":"https://api.github.com/users/eslint/repos","events_url":"https://api.github.com/users/eslint/events{/privacy}","received_events_url":"https://api.github.com/users/eslint/received_events","type":"Organization","site_admin":false},"repo":{"id":11061773,"name":"eslint","full_name":"eslint/eslint","owner":{"login":"eslint","id":6019716,"avatar_url":"https://avatars.githubusercontent.com/u/6019716?v=3","gravatar_id":"","url":"https://api.github.com/users/eslint","html_url":"https://github.com/eslint","followers_url":"https://api.github.com/users/eslint/followers","following_url":"https://api.github.com/users/eslint/following{/other_user}","gists_url":"https://api.github.com/users/eslint/gists{/gist_id}","starred_url":"https://api.github.com/users/eslint/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eslint/subscriptions","organizations_url":"https://api.github.com/users/eslint/orgs","repos_url":"https://api.github.com/users/eslint/repos","events_url":"https://api.github.com/users/eslint/events{/privacy}","received_events_url":"https://api.github.com/users/eslint/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/eslint/eslint","description":"A fully pluggable tool for identifying and reporting on patterns in JavaScript.","fork":false,"url":"https://api.github.com/repos/eslint/eslint","forks_url":"https://api.github.com/repos/eslint/eslint/forks","keys_url":"https://api.github.com/repos/eslint/eslint/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eslint/eslint/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eslint/eslint/teams","hooks_url":"https://api.github.com/repos/eslint/eslint/hooks","issue_events_url":"https://api.github.com/repos/eslint/eslint/issues/events{/number}","events_url":"https://api.github.com/repos/eslint/eslint/events","assignees_url":"https://api.github.com/repos/eslint/eslint/assignees{/user}","branches_url":"https://api.github.com/repos/eslint/eslint/branches{/branch}","tags_url":"https://api.github.com/repos/eslint/eslint/tags","blobs_url":"https://api.github.com/repos/eslint/eslint/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eslint/eslint/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eslint/eslint/git/refs{/sha}","trees_url":"https://api.github.com/repos/eslint/eslint/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eslint/eslint/statuses/{sha}","languages_url":"https://api.github.com/repos/eslint/eslint/languages","stargazers_url":"https://api.github.com/repos/eslint/eslint/stargazers","contributors_url":"https://api.github.com/repos/eslint/eslint/contributors","subscribers_url":"https://api.github.com/repos/eslint/eslint/subscribers","subscription_url":"https://api.github.com/repos/eslint/eslint/subscription","commits_url":"https://api.github.com/repos/eslint/eslint/commits{/sha}","git_commits_url":"https://api.github.com/repos/eslint/eslint/git/commits{/sha}","comments_url":"https://api.github.com/repos/eslint/eslint/comments{/number}","issue_comment_url":"https://api.github.com/repos/eslint/eslint/issues/comments{/number}","contents_url":"https://api.github.com/repos/eslint/eslint/contents/{+path}","compare_url":"https://api.github.com/repos/eslint/eslint/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eslint/eslint/merges","archive_url":"https://api.github.com/repos/eslint/eslint/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eslint/eslint/downloads","issues_url":"https://api.github.com/repos/eslint/eslint/issues{/number}","pulls_url":"https://api.github.com/repos/eslint/eslint/pulls{/number}","milestones_url":"https://api.github.com/repos/eslint/eslint/milestones{/number}","notifications_url":"https://api.github.com/repos/eslint/eslint/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eslint/eslint/labels{/name}","releases_url":"https://api.github.com/repos/eslint/eslint/releases{/id}","created_at":"2013-06-29T23:59:48Z","updated_at":"2015-07-27T13:48:14Z","pushed_at":"2015-07-27T15:31:31Z","git_url":"git://github.com/eslint/eslint.git","ssh_url":"git@github.com:eslint/eslint.git","clone_url":"https://github.com/eslint/eslint.git","svn_url":"https://github.com/eslint/eslint","homepage":"http://eslint.org","size":18762,"stargazers_count":2574,"watchers_count":2574,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":486,"mirror_url":null,"open_issues_count":141,"forks":486,"open_issues":141,"watchers":2574,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/eslint/eslint/pulls/3167"},"html":{"href":"https://github.com/eslint/eslint/pull/3167"},"issue":{"href":"https://api.github.com/repos/eslint/eslint/issues/3167"},"comments":{"href":"https://api.github.com/repos/eslint/eslint/issues/3167/comments"},"review_comments":{"href":"https://api.github.com/repos/eslint/eslint/pulls/3167/comments"},"review_comment":{"href":"https://api.github.com/repos/eslint/eslint/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/eslint/eslint/pulls/3167/commits"},"statuses":{"href":"https://api.github.com/repos/eslint/eslint/statuses/eb2a38a15521e66f77e2bf38733719165c932487"}}}}