{"action":"created","comment":{"url":"https://api.github.com/repos/Keats/tera/pulls/comments/66249320","id":66249320,"diff_hunk":"@@ -0,0 +1,237 @@\n+use pest::prelude::*;\n+\n+\n+impl_rdp! {\n+    grammar! {\n+        // basic blocks of the language\n+        op_or    = { [\"or\"] }\n+        op_and   = { [\"and\"] }\n+        op_lte   = { [\"<=\"] }\n+        op_gte   = { [\">=\"] }\n+        op_lt    = { [\"<\"] }\n+        op_gt    = { [\">\"] }\n+        op_eq    = { [\"==\"] }\n+        op_ineq  = { [\"!=\"] }\n+        op_plus  = { [\"+\"] }\n+        op_minus = { [\"-\"] }\n+        op_times = { [\"*\"] }\n+        op_slash = { [\"/\"] }\n+        boolean  = { [\"true\"] | [\"false\"] }\n+\n+        int   = @{ [\"-\"]? ~ ([\"0\"] | ['1'..'9'] ~ ['0'..'9']*) }\n+        float = @{\n+            [\"-\"]? ~\n+                [\"0\"] ~ [\".\"] ~ ['0'..'9']+ |\n+                ['1'..'9'] ~ ['0'..'9']* ~ [\".\"] ~ ['0'..'9']+\n+        }\n+\n+        identifier = @{\n+            (['a'..'z'] | ['A'..'Z'] | [\"_\"]) ~\n+            (['a'..'z'] | ['A'..'Z'] | [\"_\"] | [\".\"] | ['0'..'9'])*\n+        }\n+        // matches anything between 2 double quotes\n+        string = @{ [\"\\\"\"] ~ (!([\"\\\"\"]) ~ any )* ~ [\"\\\"\"]}\n+\n+        // Precedence climbing\n+        expression = _{\n+            { identifier | int | float }\n+            or          = { op_or }\n+            and         = { op_and }\n+            comparison  = { op_gt | op_lt | op_eq | op_ineq | op_lte | op_gte }\n+            add_sub     = { op_plus | op_minus }\n+            mul_div     = { op_times | op_slash }\n+        }\n+\n+        // Tera specific things\n+\n+        // different types of blocks\n+        variable_start = _{ [\"{{\"] }\n+        variable_end   = _{ [\"}}\"] }\n+        tag_start      = _{ [\"{%\"] }\n+        tag_end        = _{ [\"%}\"] }\n+        comment_start  = _{ [\"{#\"] }\n+        comment_end    = _{ [\"#}\"] }\n+        block_start    = { variable_start | tag_start | comment_start }\n+\n+        // Actual tags\n+        extends_tag  = { tag_start ~ [\"extends\"] ~ string ~ tag_end }\n+\n+        comment_tag  = { comment_start ~ (!comment_end ~ any )* ~ comment_end }\n+        block_tag    = { tag_start ~ [\"block\"] ~ identifier ~ tag_end }\n+        endblock_tag = { tag_start ~ [\"endblock\"] ~ identifier ~ tag_end }\n+        if_tag       = { tag_start ~ [\"if\"] ~ expression ~ tag_end }\n+        elif_tag     = { tag_start ~ [\"elif\"] ~ expression ~ tag_end }\n+        else_tag     = { tag_start ~ [\"else\"] ~ tag_end }\n+        endif_tag    = { tag_start ~ [\"endif\"] ~ tag_end }\n+        for_tag      = { tag_start ~ [\"for\"] ~ identifier ~ [\"in\"] ~ identifier ~ tag_end }\n+        endfor_tag   = { tag_start ~ [\"endfor\"] ~ tag_end }\n+\n+        text = { (!(block_start) ~ any )* }\n+\n+        content = {\n+            text |\n+            comment_tag |\n+            block_tag ~ content ~ endblock_tag |\n+            if_tag ~ content ~ (elif_tag ~ content)* ~ (else_tag ~ content)? ~ endif_tag |\n+            for_tag ~ content ~ endfor_tag\n+        }\n+\n+        // top level node\n+        template = { extends_tag? ~ content ~ eoi }\n+\n+        whitespace = _{ [\" \"] | [\"\\t\"] | [\"\\u{000C}\"] | [\"\\r\"] | [\"\\n\"] }\n+    }\n+}\n+\n+#[cfg(test)]\n+mod tests {\n+    use pest::prelude::*;\n+    use super::{Rdp, Rule};\n+\n+    fn expect_tokens<T: Input>(parser: &Rdp<T>, expected: Vec<Token<Rule>>) {\n+        assert!(parser.end());\n+        assert_eq!(parser.queue(), &expected);\n+    }\n+\n+    #[test]\n+    fn test_int() {\n+        let mut parser = Rdp::new(StringInput::new(\"123\"));\n+        assert!(parser.int());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::int, start: 0, end: 3 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_float() {\n+        let mut parser = Rdp::new(StringInput::new(\"123.5\"));\n+        assert!(parser.float());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::float, start: 0, end: 5 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_identifier() {\n+        let mut parser = Rdp::new(StringInput::new(\"client.phone_number\"));\n+        assert!(parser.identifier());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::identifier, start: 0, end: 19 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_text() {\n+        let mut parser = Rdp::new(StringInput::new(\"Hello\\n 世界\"));\n+        assert!(parser.text());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::text, start: 0, end: 13 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_extends_tag() {\n+        let mut parser = Rdp::new(StringInput::new(\"{% extends \\\"base.html\\\" %}\"));\n+        assert!(parser.extends_tag());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::extends_tag, start: 0, end: 25 },\n+            Token { rule: Rule::string, start: 11, end: 22 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_comment_tag() {\n+        let mut parser = Rdp::new(StringInput::new(\"{# some text {{}} #}\"));\n+        assert!(parser.comment_tag());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::comment_tag, start: 0, end: 20 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_block_tag() {\n+        let mut parser = Rdp::new(StringInput::new(\"{% block hello %}\"));\n+        assert!(parser.block_tag());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::block_tag, start: 0, end: 17 },\n+            Token { rule: Rule::identifier, start: 9, end: 14 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_endblock_tag() {\n+        let mut parser = Rdp::new(StringInput::new(\"{% endblock hello %}\"));\n+        assert!(parser.endblock_tag());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::endblock_tag, start: 0, end: 20 },\n+            Token { rule: Rule::identifier, start: 12, end: 17 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_for_tag() {\n+        let mut parser = Rdp::new(StringInput::new(\"{% for client in clients %}\"));\n+        assert!(parser.for_tag());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::for_tag, start: 0, end: 27 },\n+            Token { rule: Rule::identifier, start: 7, end: 13 },\n+            Token { rule: Rule::identifier, start: 17, end: 24 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_endfor_tag() {\n+        let mut parser = Rdp::new(StringInput::new(\"{% endfor %}\"));\n+        assert!(parser.endfor_tag());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::endfor_tag, start: 0, end: 12 },\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_expression_math() {\n+        let mut parser = Rdp::new(StringInput::new(\"1 + 2 + 3 * 9/2 + 2\"));\n+        assert!(parser.expression());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::add_sub, start: 0, end: 19 },\n+            Token { rule: Rule::add_sub, start: 0, end: 13 },\n+            Token { rule: Rule::add_sub, start: 0, end: 5 },\n+            Token { rule: Rule::int, start: 0, end: 1 },\n+            Token { rule: Rule::op_plus, start: 2, end: 3 },\n+            Token { rule: Rule::int, start: 4, end: 5 },\n+            Token { rule: Rule::op_plus, start: 6, end: 7 },\n+            Token { rule: Rule::mul_div, start: 8, end: 15 },\n+            Token { rule: Rule::mul_div, start: 8, end: 13 },\n+            Token { rule: Rule::int, start: 8, end: 9 },\n+            Token { rule: Rule::op_times, start: 10, end: 11 },\n+            Token { rule: Rule::int, start: 12, end: 13 },\n+            Token { rule: Rule::op_slash, start: 13, end: 14 },\n+            Token { rule: Rule::int, start: 14, end: 15 },\n+            Token { rule: Rule::op_plus, start: 16, end: 17 },\n+            Token { rule: Rule::int, start: 18, end: 19 }\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_expression_identifier_logic_simple() {\n+        let mut parser = Rdp::new(StringInput::new(\"index + 1 > 1\"));\n+        assert!(parser.expression());\n+        expect_tokens(&parser, vec![\n+            Token { rule: Rule::comparison, start: 0, end: 13 },\n+            Token { rule: Rule::add_sub, start: 0, end: 9 },\n+            Token { rule: Rule::identifier, start: 0, end: 5 },\n+            Token { rule: Rule::op_plus, start: 6, end: 7 },\n+            Token { rule: Rule::int, start: 8, end: 9 },\n+            Token { rule: Rule::op_gt, start: 10, end: 11 },\n+            Token { rule: Rule::int, start: 12, end: 13 }\n+        ]);\n+    }\n+\n+    #[test]\n+    fn test_expression_identifier_logic_complex() {\n+        let mut parser = Rdp::new(StringInput::new(\"1 > 2 || 3 == 4 && admin\"));","path":"src/parser2.rs","position":232,"original_position":232,"commit_id":"6e1d9427f303ef4db06dc113ea4b8d448c5603de","original_commit_id":"6e1d9427f303ef4db06dc113ea4b8d448c5603de","user":{"login":"dragostis","id":4136413,"avatar_url":"https://avatars.githubusercontent.com/u/4136413?v=3","gravatar_id":"","url":"https://api.github.com/users/dragostis","html_url":"https://github.com/dragostis","followers_url":"https://api.github.com/users/dragostis/followers","following_url":"https://api.github.com/users/dragostis/following{/other_user}","gists_url":"https://api.github.com/users/dragostis/gists{/gist_id}","starred_url":"https://api.github.com/users/dragostis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dragostis/subscriptions","organizations_url":"https://api.github.com/users/dragostis/orgs","repos_url":"https://api.github.com/users/dragostis/repos","events_url":"https://api.github.com/users/dragostis/events{/privacy}","received_events_url":"https://api.github.com/users/dragostis/received_events","type":"User","site_admin":false},"body":"This fails because there is no `||` defined in the grammar. 😛 ","created_at":"2016-06-08T12:56:03Z","updated_at":"2016-06-08T12:56:03Z","html_url":"https://github.com/Keats/tera/pull/37#discussion_r66249320","pull_request_url":"https://api.github.com/repos/Keats/tera/pulls/37","_links":{"self":{"href":"https://api.github.com/repos/Keats/tera/pulls/comments/66249320"},"html":{"href":"https://github.com/Keats/tera/pull/37#discussion_r66249320"},"pull_request":{"href":"https://api.github.com/repos/Keats/tera/pulls/37"}}},"pull_request":{"url":"https://api.github.com/repos/Keats/tera/pulls/37","id":72729564,"html_url":"https://github.com/Keats/tera/pull/37","diff_url":"https://github.com/Keats/tera/pull/37.diff","patch_url":"https://github.com/Keats/tera/pull/37.patch","issue_url":"https://api.github.com/repos/Keats/tera/issues/37","number":37,"state":"open","locked":false,"title":"Start pest parser (wip)","user":{"login":"Keats","id":680355,"avatar_url":"https://avatars.githubusercontent.com/u/680355?v=3","gravatar_id":"","url":"https://api.github.com/users/Keats","html_url":"https://github.com/Keats","followers_url":"https://api.github.com/users/Keats/followers","following_url":"https://api.github.com/users/Keats/following{/other_user}","gists_url":"https://api.github.com/users/Keats/gists{/gist_id}","starred_url":"https://api.github.com/users/Keats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keats/subscriptions","organizations_url":"https://api.github.com/users/Keats/orgs","repos_url":"https://api.github.com/users/Keats/repos","events_url":"https://api.github.com/users/Keats/events{/privacy}","received_events_url":"https://api.github.com/users/Keats/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-06-06T15:32:04Z","updated_at":"2016-06-08T12:56:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"be27c95fdc92a8d9bed6bbfd6214c89b196604e8","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Keats/tera/pulls/37/commits","review_comments_url":"https://api.github.com/repos/Keats/tera/pulls/37/comments","review_comment_url":"https://api.github.com/repos/Keats/tera/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Keats/tera/issues/37/comments","statuses_url":"https://api.github.com/repos/Keats/tera/statuses/6e1d9427f303ef4db06dc113ea4b8d448c5603de","head":{"label":"Keats:pest","ref":"pest","sha":"6e1d9427f303ef4db06dc113ea4b8d448c5603de","user":{"login":"Keats","id":680355,"avatar_url":"https://avatars.githubusercontent.com/u/680355?v=3","gravatar_id":"","url":"https://api.github.com/users/Keats","html_url":"https://github.com/Keats","followers_url":"https://api.github.com/users/Keats/followers","following_url":"https://api.github.com/users/Keats/following{/other_user}","gists_url":"https://api.github.com/users/Keats/gists{/gist_id}","starred_url":"https://api.github.com/users/Keats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keats/subscriptions","organizations_url":"https://api.github.com/users/Keats/orgs","repos_url":"https://api.github.com/users/Keats/repos","events_url":"https://api.github.com/users/Keats/events{/privacy}","received_events_url":"https://api.github.com/users/Keats/received_events","type":"User","site_admin":false},"repo":{"id":39272160,"name":"tera","full_name":"Keats/tera","owner":{"login":"Keats","id":680355,"avatar_url":"https://avatars.githubusercontent.com/u/680355?v=3","gravatar_id":"","url":"https://api.github.com/users/Keats","html_url":"https://github.com/Keats","followers_url":"https://api.github.com/users/Keats/followers","following_url":"https://api.github.com/users/Keats/following{/other_user}","gists_url":"https://api.github.com/users/Keats/gists{/gist_id}","starred_url":"https://api.github.com/users/Keats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keats/subscriptions","organizations_url":"https://api.github.com/users/Keats/orgs","repos_url":"https://api.github.com/users/Keats/repos","events_url":"https://api.github.com/users/Keats/events{/privacy}","received_events_url":"https://api.github.com/users/Keats/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Keats/tera","description":"A template engine for Rust","fork":false,"url":"https://api.github.com/repos/Keats/tera","forks_url":"https://api.github.com/repos/Keats/tera/forks","keys_url":"https://api.github.com/repos/Keats/tera/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Keats/tera/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Keats/tera/teams","hooks_url":"https://api.github.com/repos/Keats/tera/hooks","issue_events_url":"https://api.github.com/repos/Keats/tera/issues/events{/number}","events_url":"https://api.github.com/repos/Keats/tera/events","assignees_url":"https://api.github.com/repos/Keats/tera/assignees{/user}","branches_url":"https://api.github.com/repos/Keats/tera/branches{/branch}","tags_url":"https://api.github.com/repos/Keats/tera/tags","blobs_url":"https://api.github.com/repos/Keats/tera/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Keats/tera/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Keats/tera/git/refs{/sha}","trees_url":"https://api.github.com/repos/Keats/tera/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Keats/tera/statuses/{sha}","languages_url":"https://api.github.com/repos/Keats/tera/languages","stargazers_url":"https://api.github.com/repos/Keats/tera/stargazers","contributors_url":"https://api.github.com/repos/Keats/tera/contributors","subscribers_url":"https://api.github.com/repos/Keats/tera/subscribers","subscription_url":"https://api.github.com/repos/Keats/tera/subscription","commits_url":"https://api.github.com/repos/Keats/tera/commits{/sha}","git_commits_url":"https://api.github.com/repos/Keats/tera/git/commits{/sha}","comments_url":"https://api.github.com/repos/Keats/tera/comments{/number}","issue_comment_url":"https://api.github.com/repos/Keats/tera/issues/comments{/number}","contents_url":"https://api.github.com/repos/Keats/tera/contents/{+path}","compare_url":"https://api.github.com/repos/Keats/tera/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Keats/tera/merges","archive_url":"https://api.github.com/repos/Keats/tera/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Keats/tera/downloads","issues_url":"https://api.github.com/repos/Keats/tera/issues{/number}","pulls_url":"https://api.github.com/repos/Keats/tera/pulls{/number}","milestones_url":"https://api.github.com/repos/Keats/tera/milestones{/number}","notifications_url":"https://api.github.com/repos/Keats/tera/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Keats/tera/labels{/name}","releases_url":"https://api.github.com/repos/Keats/tera/releases{/id}","deployments_url":"https://api.github.com/repos/Keats/tera/deployments","created_at":"2015-07-17T19:40:53Z","updated_at":"2016-06-06T13:48:32Z","pushed_at":"2016-06-08T12:48:18Z","git_url":"git://github.com/Keats/tera.git","ssh_url":"git@github.com:Keats/tera.git","clone_url":"https://github.com/Keats/tera.git","svn_url":"https://github.com/Keats/tera","homepage":"","size":163,"stargazers_count":97,"watchers_count":97,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":10,"mirror_url":null,"open_issues_count":11,"forks":10,"open_issues":11,"watchers":97,"default_branch":"master"}},"base":{"label":"Keats:master","ref":"master","sha":"2e7fb71fc4834c8dd557a70f1a512bb37001a74e","user":{"login":"Keats","id":680355,"avatar_url":"https://avatars.githubusercontent.com/u/680355?v=3","gravatar_id":"","url":"https://api.github.com/users/Keats","html_url":"https://github.com/Keats","followers_url":"https://api.github.com/users/Keats/followers","following_url":"https://api.github.com/users/Keats/following{/other_user}","gists_url":"https://api.github.com/users/Keats/gists{/gist_id}","starred_url":"https://api.github.com/users/Keats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keats/subscriptions","organizations_url":"https://api.github.com/users/Keats/orgs","repos_url":"https://api.github.com/users/Keats/repos","events_url":"https://api.github.com/users/Keats/events{/privacy}","received_events_url":"https://api.github.com/users/Keats/received_events","type":"User","site_admin":false},"repo":{"id":39272160,"name":"tera","full_name":"Keats/tera","owner":{"login":"Keats","id":680355,"avatar_url":"https://avatars.githubusercontent.com/u/680355?v=3","gravatar_id":"","url":"https://api.github.com/users/Keats","html_url":"https://github.com/Keats","followers_url":"https://api.github.com/users/Keats/followers","following_url":"https://api.github.com/users/Keats/following{/other_user}","gists_url":"https://api.github.com/users/Keats/gists{/gist_id}","starred_url":"https://api.github.com/users/Keats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keats/subscriptions","organizations_url":"https://api.github.com/users/Keats/orgs","repos_url":"https://api.github.com/users/Keats/repos","events_url":"https://api.github.com/users/Keats/events{/privacy}","received_events_url":"https://api.github.com/users/Keats/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Keats/tera","description":"A template engine for Rust","fork":false,"url":"https://api.github.com/repos/Keats/tera","forks_url":"https://api.github.com/repos/Keats/tera/forks","keys_url":"https://api.github.com/repos/Keats/tera/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Keats/tera/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Keats/tera/teams","hooks_url":"https://api.github.com/repos/Keats/tera/hooks","issue_events_url":"https://api.github.com/repos/Keats/tera/issues/events{/number}","events_url":"https://api.github.com/repos/Keats/tera/events","assignees_url":"https://api.github.com/repos/Keats/tera/assignees{/user}","branches_url":"https://api.github.com/repos/Keats/tera/branches{/branch}","tags_url":"https://api.github.com/repos/Keats/tera/tags","blobs_url":"https://api.github.com/repos/Keats/tera/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Keats/tera/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Keats/tera/git/refs{/sha}","trees_url":"https://api.github.com/repos/Keats/tera/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Keats/tera/statuses/{sha}","languages_url":"https://api.github.com/repos/Keats/tera/languages","stargazers_url":"https://api.github.com/repos/Keats/tera/stargazers","contributors_url":"https://api.github.com/repos/Keats/tera/contributors","subscribers_url":"https://api.github.com/repos/Keats/tera/subscribers","subscription_url":"https://api.github.com/repos/Keats/tera/subscription","commits_url":"https://api.github.com/repos/Keats/tera/commits{/sha}","git_commits_url":"https://api.github.com/repos/Keats/tera/git/commits{/sha}","comments_url":"https://api.github.com/repos/Keats/tera/comments{/number}","issue_comment_url":"https://api.github.com/repos/Keats/tera/issues/comments{/number}","contents_url":"https://api.github.com/repos/Keats/tera/contents/{+path}","compare_url":"https://api.github.com/repos/Keats/tera/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Keats/tera/merges","archive_url":"https://api.github.com/repos/Keats/tera/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Keats/tera/downloads","issues_url":"https://api.github.com/repos/Keats/tera/issues{/number}","pulls_url":"https://api.github.com/repos/Keats/tera/pulls{/number}","milestones_url":"https://api.github.com/repos/Keats/tera/milestones{/number}","notifications_url":"https://api.github.com/repos/Keats/tera/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Keats/tera/labels{/name}","releases_url":"https://api.github.com/repos/Keats/tera/releases{/id}","deployments_url":"https://api.github.com/repos/Keats/tera/deployments","created_at":"2015-07-17T19:40:53Z","updated_at":"2016-06-06T13:48:32Z","pushed_at":"2016-06-08T12:48:18Z","git_url":"git://github.com/Keats/tera.git","ssh_url":"git@github.com:Keats/tera.git","clone_url":"https://github.com/Keats/tera.git","svn_url":"https://github.com/Keats/tera","homepage":"","size":163,"stargazers_count":97,"watchers_count":97,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":10,"mirror_url":null,"open_issues_count":11,"forks":10,"open_issues":11,"watchers":97,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Keats/tera/pulls/37"},"html":{"href":"https://github.com/Keats/tera/pull/37"},"issue":{"href":"https://api.github.com/repos/Keats/tera/issues/37"},"comments":{"href":"https://api.github.com/repos/Keats/tera/issues/37/comments"},"review_comments":{"href":"https://api.github.com/repos/Keats/tera/pulls/37/comments"},"review_comment":{"href":"https://api.github.com/repos/Keats/tera/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Keats/tera/pulls/37/commits"},"statuses":{"href":"https://api.github.com/repos/Keats/tera/statuses/6e1d9427f303ef4db06dc113ea4b8d448c5603de"}}}}
{"actor":{"display_login":"dragostis"}}