{"action":"created","comment":{"url":"https://api.github.com/repos/alpinweis/cronex/pulls/comments/171143762","pull_request_review_id":99944109,"id":171143762,"diff_hunk":"@@ -311,6 +311,10 @@ def desc(expression, opts = {})\n       expect(desc('23 12 * JAN-MAR * 2013-2015')).to eq('At 12:23 PM, January through March, 2013 through 2015')\n     end\n \n+    it 'hours ranges' do\n+      expect(desc(\"10,11 2,4-5 * * *\")).to eq('At 10 and 11 minutes past the hour, between 2:00 AM,4:00 AM and 5:59 AM')","path":"spec/exp_descriptor_en_spec.rb","position":5,"original_position":5,"commit_id":"e925357bf032b8f82d374c3a454b62d84d2bde48","original_commit_id":"e925357bf032b8f82d374c3a454b62d84d2bde48","user":{"login":"alpinweis","id":100854,"avatar_url":"https://avatars1.githubusercontent.com/u/100854?v=4","gravatar_id":"","url":"https://api.github.com/users/alpinweis","html_url":"https://github.com/alpinweis","followers_url":"https://api.github.com/users/alpinweis/followers","following_url":"https://api.github.com/users/alpinweis/following{/other_user}","gists_url":"https://api.github.com/users/alpinweis/gists{/gist_id}","starred_url":"https://api.github.com/users/alpinweis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alpinweis/subscriptions","organizations_url":"https://api.github.com/users/alpinweis/orgs","repos_url":"https://api.github.com/users/alpinweis/repos","events_url":"https://api.github.com/users/alpinweis/events{/privacy}","received_events_url":"https://api.github.com/users/alpinweis/received_events","type":"User","site_admin":false},"body":"according to the original design that follows  https://github.com/bradymholt/cron-expression-descriptor, the word `through` is supposed to be used for ranges\r\n\r\nlike in the following examples:\r\n\r\nhttps://cronexpressiondescriptor.azurewebsites.net/?expression=10%2C11+2%2C4-5+*+*+*&locale=en\r\n```\r\n10,11 2,4-5 * * *\r\nAt 10 and 11 minutes past the hour, at 02:00 AM and 04:00 AM through 05:59 AM`\r\n```\r\n\r\nhttps://cronexpressiondescriptor.azurewebsites.net/?expression=10%2C11+2%2C4-5%2C7-9+*+*+*&locale=en\r\n```\r\n10,11 2,4-5,7-9 * * *\r\nAt 10 and 11 minutes past the hour, at 02:00 AM, 04:00 AM through 05:59 AM, and 07:00 AM through 09:59 AM\r\n```\r\nalso, even if you do use the wording `between` ,in this particular example it should follow after `2:00 AM`, e.g. `at 2:00 AM, between 4:00 AM and 5:59 AM` ","created_at":"2018-02-28T04:59:01Z","updated_at":"2018-02-28T04:59:01Z","html_url":"https://github.com/alpinweis/cronex/pull/7#discussion_r171143762","pull_request_url":"https://api.github.com/repos/alpinweis/cronex/pulls/7","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/alpinweis/cronex/pulls/comments/171143762"},"html":{"href":"https://github.com/alpinweis/cronex/pull/7#discussion_r171143762"},"pull_request":{"href":"https://api.github.com/repos/alpinweis/cronex/pulls/7"}}},"pull_request":{"url":"https://api.github.com/repos/alpinweis/cronex/pulls/7","id":171760922,"html_url":"https://github.com/alpinweis/cronex/pull/7","diff_url":"https://github.com/alpinweis/cronex/pull/7.diff","patch_url":"https://github.com/alpinweis/cronex/pull/7.patch","issue_url":"https://api.github.com/repos/alpinweis/cronex/issues/7","number":7,"state":"open","locked":false,"title":"Fix Ranges in Hours","user":{"login":"tisba","id":75156,"avatar_url":"https://avatars0.githubusercontent.com/u/75156?v=4","gravatar_id":"","url":"https://api.github.com/users/tisba","html_url":"https://github.com/tisba","followers_url":"https://api.github.com/users/tisba/followers","following_url":"https://api.github.com/users/tisba/following{/other_user}","gists_url":"https://api.github.com/users/tisba/gists{/gist_id}","starred_url":"https://api.github.com/users/tisba/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tisba/subscriptions","organizations_url":"https://api.github.com/users/tisba/orgs","repos_url":"https://api.github.com/users/tisba/repos","events_url":"https://api.github.com/users/tisba/events{/privacy}","received_events_url":"https://api.github.com/users/tisba/received_events","type":"User","site_admin":false},"body":"`Cronex::Utils.format_time` did not support ranges in `hour_expression`. I'm not sure I fully followed the design here. As the same problems seems to be present with day of month and day of week expression segments.\r\n\r\nBut maybe this PR can be used as a starting point.\r\n\r\nSee: https://github.com/alpinweis/cronex/issues/1","created_at":"2018-02-27T19:27:59Z","updated_at":"2018-02-28T04:59:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"160b8aea35a3bab188fe37f45763a82780c71adc","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/alpinweis/cronex/pulls/7/commits","review_comments_url":"https://api.github.com/repos/alpinweis/cronex/pulls/7/comments","review_comment_url":"https://api.github.com/repos/alpinweis/cronex/pulls/comments{/number}","comments_url":"https://api.github.com/repos/alpinweis/cronex/issues/7/comments","statuses_url":"https://api.github.com/repos/alpinweis/cronex/statuses/e925357bf032b8f82d374c3a454b62d84d2bde48","head":{"label":"tisba:master","ref":"master","sha":"e925357bf032b8f82d374c3a454b62d84d2bde48","user":{"login":"tisba","id":75156,"avatar_url":"https://avatars0.githubusercontent.com/u/75156?v=4","gravatar_id":"","url":"https://api.github.com/users/tisba","html_url":"https://github.com/tisba","followers_url":"https://api.github.com/users/tisba/followers","following_url":"https://api.github.com/users/tisba/following{/other_user}","gists_url":"https://api.github.com/users/tisba/gists{/gist_id}","starred_url":"https://api.github.com/users/tisba/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tisba/subscriptions","organizations_url":"https://api.github.com/users/tisba/orgs","repos_url":"https://api.github.com/users/tisba/repos","events_url":"https://api.github.com/users/tisba/events{/privacy}","received_events_url":"https://api.github.com/users/tisba/received_events","type":"User","site_admin":false},"repo":{"id":123176782,"name":"cronex","full_name":"tisba/cronex","owner":{"login":"tisba","id":75156,"avatar_url":"https://avatars0.githubusercontent.com/u/75156?v=4","gravatar_id":"","url":"https://api.github.com/users/tisba","html_url":"https://github.com/tisba","followers_url":"https://api.github.com/users/tisba/followers","following_url":"https://api.github.com/users/tisba/following{/other_user}","gists_url":"https://api.github.com/users/tisba/gists{/gist_id}","starred_url":"https://api.github.com/users/tisba/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tisba/subscriptions","organizations_url":"https://api.github.com/users/tisba/orgs","repos_url":"https://api.github.com/users/tisba/repos","events_url":"https://api.github.com/users/tisba/events{/privacy}","received_events_url":"https://api.github.com/users/tisba/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tisba/cronex","description":"Ruby library that converts cron expressions into human readable strings","fork":true,"url":"https://api.github.com/repos/tisba/cronex","forks_url":"https://api.github.com/repos/tisba/cronex/forks","keys_url":"https://api.github.com/repos/tisba/cronex/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tisba/cronex/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tisba/cronex/teams","hooks_url":"https://api.github.com/repos/tisba/cronex/hooks","issue_events_url":"https://api.github.com/repos/tisba/cronex/issues/events{/number}","events_url":"https://api.github.com/repos/tisba/cronex/events","assignees_url":"https://api.github.com/repos/tisba/cronex/assignees{/user}","branches_url":"https://api.github.com/repos/tisba/cronex/branches{/branch}","tags_url":"https://api.github.com/repos/tisba/cronex/tags","blobs_url":"https://api.github.com/repos/tisba/cronex/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tisba/cronex/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tisba/cronex/git/refs{/sha}","trees_url":"https://api.github.com/repos/tisba/cronex/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tisba/cronex/statuses/{sha}","languages_url":"https://api.github.com/repos/tisba/cronex/languages","stargazers_url":"https://api.github.com/repos/tisba/cronex/stargazers","contributors_url":"https://api.github.com/repos/tisba/cronex/contributors","subscribers_url":"https://api.github.com/repos/tisba/cronex/subscribers","subscription_url":"https://api.github.com/repos/tisba/cronex/subscription","commits_url":"https://api.github.com/repos/tisba/cronex/commits{/sha}","git_commits_url":"https://api.github.com/repos/tisba/cronex/git/commits{/sha}","comments_url":"https://api.github.com/repos/tisba/cronex/comments{/number}","issue_comment_url":"https://api.github.com/repos/tisba/cronex/issues/comments{/number}","contents_url":"https://api.github.com/repos/tisba/cronex/contents/{+path}","compare_url":"https://api.github.com/repos/tisba/cronex/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tisba/cronex/merges","archive_url":"https://api.github.com/repos/tisba/cronex/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tisba/cronex/downloads","issues_url":"https://api.github.com/repos/tisba/cronex/issues{/number}","pulls_url":"https://api.github.com/repos/tisba/cronex/pulls{/number}","milestones_url":"https://api.github.com/repos/tisba/cronex/milestones{/number}","notifications_url":"https://api.github.com/repos/tisba/cronex/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tisba/cronex/labels{/name}","releases_url":"https://api.github.com/repos/tisba/cronex/releases{/id}","deployments_url":"https://api.github.com/repos/tisba/cronex/deployments","created_at":"2018-02-27T19:22:23Z","updated_at":"2018-02-27T19:22:25Z","pushed_at":"2018-02-27T19:23:03Z","git_url":"git://github.com/tisba/cronex.git","ssh_url":"git@github.com:tisba/cronex.git","clone_url":"https://github.com/tisba/cronex.git","svn_url":"https://github.com/tisba/cronex","homepage":null,"size":38,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"alpinweis:master","ref":"master","sha":"21e17be51f1c46fa916171dc1c17ca258384b3e7","user":{"login":"alpinweis","id":100854,"avatar_url":"https://avatars1.githubusercontent.com/u/100854?v=4","gravatar_id":"","url":"https://api.github.com/users/alpinweis","html_url":"https://github.com/alpinweis","followers_url":"https://api.github.com/users/alpinweis/followers","following_url":"https://api.github.com/users/alpinweis/following{/other_user}","gists_url":"https://api.github.com/users/alpinweis/gists{/gist_id}","starred_url":"https://api.github.com/users/alpinweis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alpinweis/subscriptions","organizations_url":"https://api.github.com/users/alpinweis/orgs","repos_url":"https://api.github.com/users/alpinweis/repos","events_url":"https://api.github.com/users/alpinweis/events{/privacy}","received_events_url":"https://api.github.com/users/alpinweis/received_events","type":"User","site_admin":false},"repo":{"id":44932701,"name":"cronex","full_name":"alpinweis/cronex","owner":{"login":"alpinweis","id":100854,"avatar_url":"https://avatars1.githubusercontent.com/u/100854?v=4","gravatar_id":"","url":"https://api.github.com/users/alpinweis","html_url":"https://github.com/alpinweis","followers_url":"https://api.github.com/users/alpinweis/followers","following_url":"https://api.github.com/users/alpinweis/following{/other_user}","gists_url":"https://api.github.com/users/alpinweis/gists{/gist_id}","starred_url":"https://api.github.com/users/alpinweis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alpinweis/subscriptions","organizations_url":"https://api.github.com/users/alpinweis/orgs","repos_url":"https://api.github.com/users/alpinweis/repos","events_url":"https://api.github.com/users/alpinweis/events{/privacy}","received_events_url":"https://api.github.com/users/alpinweis/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/alpinweis/cronex","description":"Ruby library that converts cron expressions into human readable strings","fork":false,"url":"https://api.github.com/repos/alpinweis/cronex","forks_url":"https://api.github.com/repos/alpinweis/cronex/forks","keys_url":"https://api.github.com/repos/alpinweis/cronex/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alpinweis/cronex/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alpinweis/cronex/teams","hooks_url":"https://api.github.com/repos/alpinweis/cronex/hooks","issue_events_url":"https://api.github.com/repos/alpinweis/cronex/issues/events{/number}","events_url":"https://api.github.com/repos/alpinweis/cronex/events","assignees_url":"https://api.github.com/repos/alpinweis/cronex/assignees{/user}","branches_url":"https://api.github.com/repos/alpinweis/cronex/branches{/branch}","tags_url":"https://api.github.com/repos/alpinweis/cronex/tags","blobs_url":"https://api.github.com/repos/alpinweis/cronex/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alpinweis/cronex/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alpinweis/cronex/git/refs{/sha}","trees_url":"https://api.github.com/repos/alpinweis/cronex/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alpinweis/cronex/statuses/{sha}","languages_url":"https://api.github.com/repos/alpinweis/cronex/languages","stargazers_url":"https://api.github.com/repos/alpinweis/cronex/stargazers","contributors_url":"https://api.github.com/repos/alpinweis/cronex/contributors","subscribers_url":"https://api.github.com/repos/alpinweis/cronex/subscribers","subscription_url":"https://api.github.com/repos/alpinweis/cronex/subscription","commits_url":"https://api.github.com/repos/alpinweis/cronex/commits{/sha}","git_commits_url":"https://api.github.com/repos/alpinweis/cronex/git/commits{/sha}","comments_url":"https://api.github.com/repos/alpinweis/cronex/comments{/number}","issue_comment_url":"https://api.github.com/repos/alpinweis/cronex/issues/comments{/number}","contents_url":"https://api.github.com/repos/alpinweis/cronex/contents/{+path}","compare_url":"https://api.github.com/repos/alpinweis/cronex/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alpinweis/cronex/merges","archive_url":"https://api.github.com/repos/alpinweis/cronex/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alpinweis/cronex/downloads","issues_url":"https://api.github.com/repos/alpinweis/cronex/issues{/number}","pulls_url":"https://api.github.com/repos/alpinweis/cronex/pulls{/number}","milestones_url":"https://api.github.com/repos/alpinweis/cronex/milestones{/number}","notifications_url":"https://api.github.com/repos/alpinweis/cronex/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alpinweis/cronex/labels{/name}","releases_url":"https://api.github.com/repos/alpinweis/cronex/releases{/id}","deployments_url":"https://api.github.com/repos/alpinweis/cronex/deployments","created_at":"2015-10-25T22:20:56Z","updated_at":"2018-02-18T18:41:17Z","pushed_at":"2018-02-27T19:27:59Z","git_url":"git://github.com/alpinweis/cronex.git","ssh_url":"git@github.com:alpinweis/cronex.git","clone_url":"https://github.com/alpinweis/cronex.git","svn_url":"https://github.com/alpinweis/cronex","homepage":null,"size":37,"stargazers_count":20,"watchers_count":20,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"archived":false,"open_issues_count":2,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":11,"open_issues":2,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/alpinweis/cronex/pulls/7"},"html":{"href":"https://github.com/alpinweis/cronex/pull/7"},"issue":{"href":"https://api.github.com/repos/alpinweis/cronex/issues/7"},"comments":{"href":"https://api.github.com/repos/alpinweis/cronex/issues/7/comments"},"review_comments":{"href":"https://api.github.com/repos/alpinweis/cronex/pulls/7/comments"},"review_comment":{"href":"https://api.github.com/repos/alpinweis/cronex/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/alpinweis/cronex/pulls/7/commits"},"statuses":{"href":"https://api.github.com/repos/alpinweis/cronex/statuses/e925357bf032b8f82d374c3a454b62d84d2bde48"}},"author_association":"NONE"}}
{"actor":{"display_login":"alpinweis"}}