{"action":"created","comment":{"url":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/comments/27432889","id":27432889,"diff_hunk":"@@ -641,3 +647,290 @@ def n(v)\n     [\"a\", \"b\", \"c\"].map { |x| expect(falses.get_boolean(x)).to be false }\n   end\n end\n+\n+describe \"SimpleConfigOrigin\" do\n+  let(:has_filename) { SimpleConfigOrigin.new_file(\"foo\") }\n+  let(:no_filename) { SimpleConfigOrigin.new_simple(\"bar\") }\n+  let(:filename_with_line) { has_filename.with_line_number(3) }\n+  let(:no_filename_with_line) { no_filename.with_line_number(4) }\n+\n+  specify \"filename matches what was specified\" do\n+    expect(has_filename.filename).to eq(\"foo\")\n+    expect(filename_with_line.filename).to eq(\"foo\")\n+    expect(no_filename.filename).to be nil\n+    expect(no_filename_with_line.filename).to be nil\n+  end\n+\n+  specify \"description matches correctly\" do\n+    expect(has_filename.description).to eq(\"foo\")\n+    expect(no_filename.description).to eq(\"bar\")\n+    expect(filename_with_line.description).to eq(\"foo: 3\")\n+    expect(no_filename_with_line.description).to eq(\"bar: 4\")\n+  end\n+\n+  specify \"origins with no line number should have line number of -1\" do\n+    expect(has_filename.line_number).to eq(-1)\n+    expect(no_filename.line_number).to eq(-1)\n+  end\n+\n+  specify \"line_number returns the right line number\" do\n+    expect(filename_with_line.line_number).to eq(3)\n+    expect(no_filename_with_line.line_number).to eq(4)\n+  end\n+\n+  # Note: skipping tests related to URLs since we aren't implementing that\n+end\n+\n+\n+describe \"Config#with_only_key and with_only_path\" do\n+  context \"should keep the correct data\" do\n+    object = TestUtils.parse_object(\"{ a=1, b=2, c.d.y=3, e.f.g=4, c.d.z=5 }\")\n+\n+    it \"should keep only a\" do\n+      expect(object.with_only_key(\"a\")).to eq(TestUtils.parse_object(\"{ a=1 }\"))\n+    end\n+\n+    it \"should keep only e\" do\n+      expect(object.with_only_key(\"e\")).to eq(TestUtils.parse_object(\"{ e.f.g=4 }\"))\n+    end\n+\n+    it \"should keep only c.d\" do\n+      expect(object.to_config.with_only_path(\"c.d\").root).to eq(TestUtils.parse_object(\"{ c.d.y=3, c.d.z=5 }\"))\n+    end\n+\n+    it \"should keep only c.d.z\" do\n+      expect(object.to_config.with_only_path(\"c.d.z\").root).to eq(TestUtils.parse_object(\"{ c.d.z=5 }\"))\n+    end\n+\n+    it \"should keep nonexistent key\" do\n+      expect(object.with_only_key(\"nope\")).to eq(TestUtils.parse_object(\"{ }\"))\n+    end\n+\n+    it \"should keep nonexistent path\" do\n+      expect(object.to_config.with_only_path(\"q.w.e.r.t.y\").root).to eq(TestUtils.parse_object(\"{ }\"))\n+    end\n+\n+    it \"should keep only nonexistent underneath non-object\" do\n+      expect(object.to_config.with_only_path(\"a.nonextistent\").root).to eq(TestUtils.parse_object(\"{ }\"))\n+    end\n+\n+    it \"should keep only nonexistent underneath nested non-object\" do\n+      expect(object.to_config.with_only_path(\"c.d.z.nonexistent\").root).to eq(TestUtils.parse_object(\"{ }\"))\n+    end\n+  end\n+\n+  specify \"should handle unresolved correctly\" do\n+    object = TestUtils.parse_object(\"{ a = {}, a=${x}, b=${y}, b=${z}, x={asf:1}, y=2, z=3 }\")\n+\n+    expect(object.to_config.resolve.with_only_path(\"a.asf\").root).to eq(TestUtils.parse_object(\"{ a={asf:1} }\"))\n+\n+    TestUtils.intercept(UnresolvedSubstitutionError) do\n+      object.with_only_key(\"a\").to_config.resolve\n+    end\n+\n+    TestUtils.intercept(UnresolvedSubstitutionError) do\n+      object.with_only_key(\"b\").to_config.resolve\n+    end\n+\n+    expect(object.resolve_status).to eq(Hocon::Impl::ResolveStatus::UNRESOLVED)\n+    expect(object.with_only_key(\"z\").resolve_status).to eq(Hocon::Impl::ResolveStatus::RESOLVED)\n+  end\n+end\n+\n+describe \"Config#without_key/path\" do\n+\n+  context \"should remove keys correctly\" do\n+    object = TestUtils.parse_object(\"{ a=1, b=2, c.d.y=3, e.f.g=4, c.d.z=5 }\")\n+\n+    it \"should not have a\" do\n+      expect(object.without_key(\"a\")).to eq(TestUtils.parse_object(\"{ b=2, c.d.y=3, e.f.g=4, c.d.z=5 }\"))\n+    end\n+\n+    it \"should not have c\" do\n+      expect(object.without_key(\"c\")).to eq(TestUtils.parse_object(\"{ a=1, b=2, e.f.g=4 }\"))\n+    end\n+\n+    it \"should not have c.d\" do\n+      expect(object.to_config.without_path(\"c.d\").root).to eq(TestUtils.parse_object(\"{ a=1, b=2, e.f.g=4, c={} }\"))\n+    end\n+\n+    it \"should not have c.d.z\" do\n+      expect(object.to_config.without_path(\"c.d.z\").root).to eq(TestUtils.parse_object(\"{ a=1, b=2, c.d.y=3, e.f.g=4 }\"))\n+    end\n+\n+    it \"should not change without nonexistent key\" do\n+      expect(object.without_key(\"nonexistent\")).to eq(TestUtils.parse_object(\"{ a=1, b=2, c.d.y=3, e.f.g=4, c.d.z=5 }\"))\n+    end\n+\n+    it \"should not change without nonexistent path\" do\n+      expect(object.to_config.without_path(\"q.w.e.r.t.y\").root).to eq(TestUtils.parse_object(\"{ a=1, b=2, c.d.y=3, e.f.g=4, c.d.z=5 }\"))\n+    end\n+\n+    it \"should not change without nonexistent path with existing prefix\" do\n+      expect(object.to_config.without_path(\"a.foo\").root).to eq(TestUtils.parse_object(\"{ a=1, b=2, c.d.y=3, e.f.g=4, c.d.z=5 }\"))\n+    end\n+  end\n+end\n+\n+describe \"Config#without_key/path involving unresolved\" do\n+\n+  specify \"should handle unresolved correctly\" do\n+    object = TestUtils.parse_object(\"{ a = {}, a=${x}, b=${y}, b=${z}, x={asf:1}, y=2, z=3 }\")\n+\n+    expect(object.to_config.resolve.without_path(\"a.asf\").root).to eq(TestUtils.parse_object(\"{ a={}, b=3, x={asf:1}, y=2, z=3 }\"))\n+\n+    TestUtils.intercept(UnresolvedSubstitutionError) do\n+      object.without_key(\"x\").to_config.resolve\n+    end\n+\n+    TestUtils.intercept(UnresolvedSubstitutionError) do\n+      object.without_key(\"z\").to_config.resolve\n+    end\n+\n+    expect(object.resolve_status).to eq(Hocon::Impl::ResolveStatus::UNRESOLVED)\n+    expect(object.without_key(\"a\").resolve_status).to eq(Hocon::Impl::ResolveStatus::UNRESOLVED)\n+    expect(object.without_key(\"a\").without_key(\"b\").resolve_status).to eq(Hocon::Impl::ResolveStatus::RESOLVED)\n+  end\n+end\n+\n+describe \"Config#at_path\" do\n+  specify \"works with one element\" do\n+    v = ConfigValueFactory.from_any_ref(42)\n+    config = v.at_path(\"a\")\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a=42\"))\n+    expect(v).to eq(config.get_value(\"a\"))\n+    expect(config.origin.description).to include(\"at_path\")\n+  end\n+\n+  specify \"works with two elements\" do\n+    v = ConfigValueFactory.from_any_ref(42)\n+    config = v.at_path(\"a.b\")\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a.b=42\"))\n+    expect(v).to eq(config.get_value(\"a.b\"))\n+    expect(config.origin.description).to include(\"at_path\")\n+  end\n+\n+  specify \"works with four elements\" do\n+    v = ConfigValueFactory.from_any_ref(42)\n+    config = v.at_path(\"a.b.c.d\")\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a.b.c.d=42\"))\n+    expect(v).to eq(config.get_value(\"a.b.c.d\"))\n+    expect(config.origin.description).to include(\"at_path\")\n+  end\n+end\n+\n+describe \"Config#at_key\" do\n+  specify \"at_key works\" do\n+    v = ConfigValueFactory.from_any_ref(42)\n+    config = v.at_key(\"a\")\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a=42\"))\n+    expect(v).to eq(config.get_value(\"a\"))\n+    expect(config.origin.description).to include(\"at_key\")\n+  end\n+\n+  specify \"works with value depth 1 from empty\" do\n+    v = ConfigValueFactory.from_any_ref(42)\n+    config = ConfigFactory.empty.with_value(\"a\", v)\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a=42\"))\n+    expect(v).to eq(config.get_value(\"a\"))\n+  end\n+\n+  specify \"works with value depth 2 from empty\" do\n+    v = ConfigValueFactory.from_any_ref(42)\n+    config = ConfigFactory.empty.with_value(\"a.b\", v)\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a.b=42\"))\n+    expect(v).to eq(config.get_value(\"a.b\"))\n+  end\n+\n+  specify \"works with value depth 3 from empty\" do\n+    v = ConfigValueFactory.from_any_ref(42)\n+    config = ConfigFactory.empty.with_value(\"a.b.c\", v)\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a.b.c=42\"))\n+    expect(v).to eq(config.get_value(\"a.b.c\"))\n+  end\n+\n+  specify \"with value depth 1 overwrites existing\" do\n+    v = ConfigValueFactory.from_any_ref(47)\n+    old = v.at_path(\"a\")\n+    config = old.with_value(\"a\", ConfigValueFactory.from_any_ref(42))\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a=42\"))\n+    expect(config.get_int(\"a\")).to eq(42)\n+  end\n+\n+  specify \"with value depth 2 overwrites existing\" do\n+    v = ConfigValueFactory.from_any_ref(47)\n+    old = v.at_path(\"a.b\")\n+    config = old.with_value(\"a.b\", ConfigValueFactory.from_any_ref(42))\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a.b=42\"))\n+    expect(config.get_int(\"a.b\")).to eq(42)\n+  end\n+\n+  specify \"with value inside existing object\" do\n+    v = ConfigValueFactory.from_any_ref(47)\n+    old = v.at_path(\"a.c\")\n+    config = old.with_value(\"a.b\", ConfigValueFactory.from_any_ref(42))\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a.b=42,a.c=47\"))\n+    expect(config.get_int(\"a.b\")).to eq(42)\n+    expect(config.get_int(\"a.c\")).to eq(47)\n+  end\n+\n+  specify \"with value build complex config\" do\n+    v1 = ConfigValueFactory.from_any_ref(1)\n+    v2 = ConfigValueFactory.from_any_ref(2)\n+    v3 = ConfigValueFactory.from_any_ref(3)\n+    v4 = ConfigValueFactory.from_any_ref(4)\n+\n+    config = ConfigFactory.empty.with_value(\"a\", v1)\n+      .with_value(\"b.c\", v2)\n+      .with_value(\"b.d\", v3)\n+      .with_value(\"x.y.z\", v4)\n+\n+    expect(config).to eq(TestUtils.parse_config(\"a=1,b.c=2,b.d=3,x.y.z=4\"))\n+  end\n+end\n+\n+describe \"#render\" do\n+  context \"has newlines in description\" do\n+    v = ConfigValueFactory.from_any_ref(89, \"this is a description\\nwith some\\nnewlines\")\n+\n+    list = SimpleConfigList.new(SimpleConfigOrigin.new_simple(\"\\n5\\n6\\n7\\n\"), [v])\n+\n+    conf = ConfigFactory.empty.with_value(\"bar\", list)\n+\n+    rendered = conf.root.render\n+\n+    specify \"rendered config should have all the lines that were added, with newlines\" do\n+      expect(rendered).to include(\"is a description\\n\")\n+      expect(rendered).to include(\"with some\\n\")\n+      expect(rendered).to include(\"newlines\\n\")\n+      expect(rendered).to include(\"#\\n\")\n+      expect(rendered).to include(\"5\\n\")\n+      expect(rendered).to include(\"6\\n\")\n+      expect(rendered).to include(\"7\\n\")\n+    end\n+\n+    specify \"the rendered config should give back the original config\" do\n+      skip \"unknown bug related to comments that will be affected by upstream changes to comment parsing\"","path":"spec/unit/typesafe/config/config_value_spec.rb","position":301,"original_position":301,"commit_id":"958d72202392ee6a97fc3bf13771391222d7e124","original_commit_id":"958d72202392ee6a97fc3bf13771391222d7e124","user":{"login":"fpringvaldsen","id":5620801,"avatar_url":"https://avatars.githubusercontent.com/u/5620801?v=3","gravatar_id":"","url":"https://api.github.com/users/fpringvaldsen","html_url":"https://github.com/fpringvaldsen","followers_url":"https://api.github.com/users/fpringvaldsen/followers","following_url":"https://api.github.com/users/fpringvaldsen/following{/other_user}","gists_url":"https://api.github.com/users/fpringvaldsen/gists{/gist_id}","starred_url":"https://api.github.com/users/fpringvaldsen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpringvaldsen/subscriptions","organizations_url":"https://api.github.com/users/fpringvaldsen/orgs","repos_url":"https://api.github.com/users/fpringvaldsen/repos","events_url":"https://api.github.com/users/fpringvaldsen/events{/privacy}","received_events_url":"https://api.github.com/users/fpringvaldsen/received_events","type":"User","site_admin":false},"body":"We might want to put a TODO here so we make sure to come back and stop skipping this test once the parser gets refactored","created_at":"2015-03-30T21:17:01Z","updated_at":"2015-03-30T21:17:01Z","html_url":"https://github.com/puppetlabs/ruby-hocon/pull/48#discussion_r27432889","pull_request_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/48","_links":{"self":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/comments/27432889"},"html":{"href":"https://github.com/puppetlabs/ruby-hocon/pull/48#discussion_r27432889"},"pull_request":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/48"}}},"pull_request":{"url":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/48","id":32253722,"html_url":"https://github.com/puppetlabs/ruby-hocon/pull/48","diff_url":"https://github.com/puppetlabs/ruby-hocon/pull/48.diff","patch_url":"https://github.com/puppetlabs/ruby-hocon/pull/48.patch","issue_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/issues/48","number":48,"state":"open","locked":false,"title":"(TK-159) Final round of config value tests","user":{"login":"jpinsonault","id":137581,"avatar_url":"https://avatars.githubusercontent.com/u/137581?v=3","gravatar_id":"","url":"https://api.github.com/users/jpinsonault","html_url":"https://github.com/jpinsonault","followers_url":"https://api.github.com/users/jpinsonault/followers","following_url":"https://api.github.com/users/jpinsonault/following{/other_user}","gists_url":"https://api.github.com/users/jpinsonault/gists{/gist_id}","starred_url":"https://api.github.com/users/jpinsonault/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpinsonault/subscriptions","organizations_url":"https://api.github.com/users/jpinsonault/orgs","repos_url":"https://api.github.com/users/jpinsonault/repos","events_url":"https://api.github.com/users/jpinsonault/events{/privacy}","received_events_url":"https://api.github.com/users/jpinsonault/received_events","type":"User","site_admin":false},"body":"Implemented AbstractConfigValue#at_path/at_key\r\n\r\nMisc other stuff\r\n\r\nSkipping the serialization tests since we're not porting those","created_at":"2015-03-30T18:31:23Z","updated_at":"2015-03-30T21:17:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d73d1a761c00adfd6c6af4883101fa191e882001","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/48/commits","review_comments_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/48/comments","review_comment_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/comments{/number}","comments_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/issues/48/comments","statuses_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/statuses/958d72202392ee6a97fc3bf13771391222d7e124","head":{"label":"jpinsonault:tk-159-round-three-config-value-tests","ref":"tk-159-round-three-config-value-tests","sha":"958d72202392ee6a97fc3bf13771391222d7e124","user":{"login":"jpinsonault","id":137581,"avatar_url":"https://avatars.githubusercontent.com/u/137581?v=3","gravatar_id":"","url":"https://api.github.com/users/jpinsonault","html_url":"https://github.com/jpinsonault","followers_url":"https://api.github.com/users/jpinsonault/followers","following_url":"https://api.github.com/users/jpinsonault/following{/other_user}","gists_url":"https://api.github.com/users/jpinsonault/gists{/gist_id}","starred_url":"https://api.github.com/users/jpinsonault/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpinsonault/subscriptions","organizations_url":"https://api.github.com/users/jpinsonault/orgs","repos_url":"https://api.github.com/users/jpinsonault/repos","events_url":"https://api.github.com/users/jpinsonault/events{/privacy}","received_events_url":"https://api.github.com/users/jpinsonault/received_events","type":"User","site_admin":false},"repo":{"id":31379645,"name":"ruby-hocon","full_name":"jpinsonault/ruby-hocon","owner":{"login":"jpinsonault","id":137581,"avatar_url":"https://avatars.githubusercontent.com/u/137581?v=3","gravatar_id":"","url":"https://api.github.com/users/jpinsonault","html_url":"https://github.com/jpinsonault","followers_url":"https://api.github.com/users/jpinsonault/followers","following_url":"https://api.github.com/users/jpinsonault/following{/other_user}","gists_url":"https://api.github.com/users/jpinsonault/gists{/gist_id}","starred_url":"https://api.github.com/users/jpinsonault/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpinsonault/subscriptions","organizations_url":"https://api.github.com/users/jpinsonault/orgs","repos_url":"https://api.github.com/users/jpinsonault/repos","events_url":"https://api.github.com/users/jpinsonault/events{/privacy}","received_events_url":"https://api.github.com/users/jpinsonault/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jpinsonault/ruby-hocon","description":"","fork":true,"url":"https://api.github.com/repos/jpinsonault/ruby-hocon","forks_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/forks","keys_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/teams","hooks_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/hooks","issue_events_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/issues/events{/number}","events_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/events","assignees_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/assignees{/user}","branches_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/branches{/branch}","tags_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/tags","blobs_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/git/refs{/sha}","trees_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/statuses/{sha}","languages_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/languages","stargazers_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/stargazers","contributors_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/contributors","subscribers_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/subscribers","subscription_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/subscription","commits_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/commits{/sha}","git_commits_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/git/commits{/sha}","comments_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/comments{/number}","issue_comment_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/issues/comments{/number}","contents_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/contents/{+path}","compare_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/merges","archive_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/downloads","issues_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/issues{/number}","pulls_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/pulls{/number}","milestones_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/milestones{/number}","notifications_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/labels{/name}","releases_url":"https://api.github.com/repos/jpinsonault/ruby-hocon/releases{/id}","created_at":"2015-02-26T17:36:37Z","updated_at":"2015-03-13T21:49:46Z","pushed_at":"2015-03-30T20:35:23Z","git_url":"git://github.com/jpinsonault/ruby-hocon.git","ssh_url":"git@github.com:jpinsonault/ruby-hocon.git","clone_url":"https://github.com/jpinsonault/ruby-hocon.git","svn_url":"https://github.com/jpinsonault/ruby-hocon","homepage":null,"size":653,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"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":"puppetlabs:master","ref":"master","sha":"c2a58a41789dcb020f46f9a0e5b94dbc890be1fd","user":{"login":"puppetlabs","id":234268,"avatar_url":"https://avatars.githubusercontent.com/u/234268?v=3","gravatar_id":"","url":"https://api.github.com/users/puppetlabs","html_url":"https://github.com/puppetlabs","followers_url":"https://api.github.com/users/puppetlabs/followers","following_url":"https://api.github.com/users/puppetlabs/following{/other_user}","gists_url":"https://api.github.com/users/puppetlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/puppetlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puppetlabs/subscriptions","organizations_url":"https://api.github.com/users/puppetlabs/orgs","repos_url":"https://api.github.com/users/puppetlabs/repos","events_url":"https://api.github.com/users/puppetlabs/events{/privacy}","received_events_url":"https://api.github.com/users/puppetlabs/received_events","type":"Organization","site_admin":false},"repo":{"id":17326988,"name":"ruby-hocon","full_name":"puppetlabs/ruby-hocon","owner":{"login":"puppetlabs","id":234268,"avatar_url":"https://avatars.githubusercontent.com/u/234268?v=3","gravatar_id":"","url":"https://api.github.com/users/puppetlabs","html_url":"https://github.com/puppetlabs","followers_url":"https://api.github.com/users/puppetlabs/followers","following_url":"https://api.github.com/users/puppetlabs/following{/other_user}","gists_url":"https://api.github.com/users/puppetlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/puppetlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puppetlabs/subscriptions","organizations_url":"https://api.github.com/users/puppetlabs/orgs","repos_url":"https://api.github.com/users/puppetlabs/repos","events_url":"https://api.github.com/users/puppetlabs/events{/privacy}","received_events_url":"https://api.github.com/users/puppetlabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/puppetlabs/ruby-hocon","description":"","fork":false,"url":"https://api.github.com/repos/puppetlabs/ruby-hocon","forks_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/forks","keys_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/teams","hooks_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/hooks","issue_events_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/issues/events{/number}","events_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/events","assignees_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/assignees{/user}","branches_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/branches{/branch}","tags_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/tags","blobs_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/git/refs{/sha}","trees_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/statuses/{sha}","languages_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/languages","stargazers_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/stargazers","contributors_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/contributors","subscribers_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/subscribers","subscription_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/subscription","commits_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/commits{/sha}","git_commits_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/git/commits{/sha}","comments_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/comments{/number}","issue_comment_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/issues/comments{/number}","contents_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/contents/{+path}","compare_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/merges","archive_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/downloads","issues_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/issues{/number}","pulls_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls{/number}","milestones_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/milestones{/number}","notifications_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/labels{/name}","releases_url":"https://api.github.com/repos/puppetlabs/ruby-hocon/releases{/id}","created_at":"2014-03-01T23:44:17Z","updated_at":"2015-03-30T21:05:04Z","pushed_at":"2015-03-30T21:05:04Z","git_url":"git://github.com/puppetlabs/ruby-hocon.git","ssh_url":"git@github.com:puppetlabs/ruby-hocon.git","clone_url":"https://github.com/puppetlabs/ruby-hocon.git","svn_url":"https://github.com/puppetlabs/ruby-hocon","homepage":null,"size":1424,"stargazers_count":5,"watchers_count":5,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":2,"forks":7,"open_issues":2,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/48"},"html":{"href":"https://github.com/puppetlabs/ruby-hocon/pull/48"},"issue":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/issues/48"},"comments":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/issues/48/comments"},"review_comments":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/48/comments"},"review_comment":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/pulls/48/commits"},"statuses":{"href":"https://api.github.com/repos/puppetlabs/ruby-hocon/statuses/958d72202392ee6a97fc3bf13771391222d7e124"}}}}