{"action":"created","issue":{"url":"https://api.github.com/repos/pstephens/EverlastingBible/issues/5","labels_url":"https://api.github.com/repos/pstephens/EverlastingBible/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/pstephens/EverlastingBible/issues/5/comments","events_url":"https://api.github.com/repos/pstephens/EverlastingBible/issues/5/events","html_url":"https://github.com/pstephens/EverlastingBible/issues/5","id":115780223,"number":5,"title":"Implement persistent -> runtime model with basic bible API","user":{"login":"pstephens","id":120345,"avatar_url":"https://avatars.githubusercontent.com/u/120345?v=3","gravatar_id":"","url":"https://api.github.com/users/pstephens","html_url":"https://github.com/pstephens","followers_url":"https://api.github.com/users/pstephens/followers","following_url":"https://api.github.com/users/pstephens/following{/other_user}","gists_url":"https://api.github.com/users/pstephens/gists{/gist_id}","starred_url":"https://api.github.com/users/pstephens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pstephens/subscriptions","organizations_url":"https://api.github.com/users/pstephens/orgs","repos_url":"https://api.github.com/users/pstephens/repos","events_url":"https://api.github.com/users/pstephens/events{/privacy}","received_events_url":"https://api.github.com/users/pstephens/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/pstephens/EverlastingBible/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"pstephens","id":120345,"avatar_url":"https://avatars.githubusercontent.com/u/120345?v=3","gravatar_id":"","url":"https://api.github.com/users/pstephens","html_url":"https://github.com/pstephens","followers_url":"https://api.github.com/users/pstephens/followers","following_url":"https://api.github.com/users/pstephens/following{/other_user}","gists_url":"https://api.github.com/users/pstephens/gists{/gist_id}","starred_url":"https://api.github.com/users/pstephens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pstephens/subscriptions","organizations_url":"https://api.github.com/users/pstephens/orgs","repos_url":"https://api.github.com/users/pstephens/repos","events_url":"https://api.github.com/users/pstephens/events{/privacy}","received_events_url":"https://api.github.com/users/pstephens/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/pstephens/EverlastingBible/milestones/1","html_url":"https://github.com/pstephens/EverlastingBible/milestones/1.0.0","labels_url":"https://api.github.com/repos/pstephens/EverlastingBible/milestones/1/labels","id":648582,"number":1,"title":"1.0.0","description":"RTW -- initial release to web.","creator":{"login":"pstephens","id":120345,"avatar_url":"https://avatars.githubusercontent.com/u/120345?v=3","gravatar_id":"","url":"https://api.github.com/users/pstephens","html_url":"https://github.com/pstephens","followers_url":"https://api.github.com/users/pstephens/followers","following_url":"https://api.github.com/users/pstephens/following{/other_user}","gists_url":"https://api.github.com/users/pstephens/gists{/gist_id}","starred_url":"https://api.github.com/users/pstephens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pstephens/subscriptions","organizations_url":"https://api.github.com/users/pstephens/orgs","repos_url":"https://api.github.com/users/pstephens/repos","events_url":"https://api.github.com/users/pstephens/events{/privacy}","received_events_url":"https://api.github.com/users/pstephens/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":3,"state":"open","created_at":"2014-05-04T20:33:52Z","updated_at":"2015-11-26T03:11:26Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2015-11-09T02:26:44Z","updated_at":"2016-01-13T03:39:40Z","closed_at":null,"body":"Must support:\r\n* browser hosted\r\n* async I/O\r\n\r\nSplit into two parts:\r\nCreate 'ensure*' functions which performs I/O to bring in missing data.\r\nAnd then pure functions on top of the runtime model to implement the API."},"comment":{"url":"https://api.github.com/repos/pstephens/EverlastingBible/issues/comments/171152796","html_url":"https://github.com/pstephens/EverlastingBible/issues/5#issuecomment-171152796","issue_url":"https://api.github.com/repos/pstephens/EverlastingBible/issues/5","id":171152796,"user":{"login":"pstephens","id":120345,"avatar_url":"https://avatars.githubusercontent.com/u/120345?v=3","gravatar_id":"","url":"https://api.github.com/users/pstephens","html_url":"https://github.com/pstephens","followers_url":"https://api.github.com/users/pstephens/followers","following_url":"https://api.github.com/users/pstephens/following{/other_user}","gists_url":"https://api.github.com/users/pstephens/gists{/gist_id}","starred_url":"https://api.github.com/users/pstephens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pstephens/subscriptions","organizations_url":"https://api.github.com/users/pstephens/orgs","repos_url":"https://api.github.com/users/pstephens/repos","events_url":"https://api.github.com/users/pstephens/events{/privacy}","received_events_url":"https://api.github.com/users/pstephens/received_events","type":"User","site_admin":false},"created_at":"2016-01-13T03:39:40Z","updated_at":"2016-01-13T03:39:40Z","body":"Some more design notes:\r\n1. Need to maintain a map of canonical resource names to hashes. Example: `{ \"B\" \"848fa367924f\" }` Populate this via a script tag in the root HTML.\r\n2. Use a vector to describe a verse ref terminal: `[:Genesis 1 1]`. Partial references are possible: `[:Genesis 1]` or `[:Genesis]`. \r\n3. A collection of verses is represented by a vector of verse reference terminals: `[ [:Genesis 1 3] [:Genesis 1 8] ]`. A range of verses can be specified in this collection by using the `:to` keyword: `[ [:Exodus 1 5] :to [:Exodus 2 5] ]`.\r\n4. A book structure can be retrieved by calling the bible/book function. Either a book reference, a book index, or a book keyword can be used: `(bible/book :Numbers)` or `(bible/book [:Job])` or `(bible/book 3)`.\r\n5. A chapter structure can be retrieved by calling the `bible/chapter` function. Either a chapter reference or a chapter index may be used: `(bible/chapter [:Genesis 50])` or `(bible/chapter 55)`.\r\n6. A set of verses can be retrieved by calling the bible/verse function. A verse reference or verse reference set as described above should be used: `(bible/verse [:Genesis 1 1])` or `(bible/verse [:Genesis 1])` or `(bible/verse [[:Genesis 1 1] :to [:Genesis 1 5]])`.\r\n7. The book, chapter, all verse functions all potentially involve I/O and so all return a channel where the resulting value will be posted to."}}