{"action":"created","comment":{"url":"https://api.github.com/repos/attic-labs/noms/pulls/comments/73418284","id":73418284,"diff_hunk":"@@ -145,96 +123,121 @@ func (p Path) String() string {\n \treturn strings.Join(strs, \"\")\n }\n \n-type fieldPart struct {\n-\tname string\n-}\n-\n-func newFieldPart(name string) fieldPart {\n-\treturn fieldPart{name}\n+// Gets Struct field values by name.\n+type FieldPathPart struct {\n+\t// The name of the field, e.g. `.Name`.\n+\tName string\n }\n \n-func (fp fieldPart) Resolve(v Value) Value {\n+func (fp FieldPathPart) Resolve(v Value) Value {\n \tif s, ok := v.(Struct); ok {\n-\t\tif fv, ok := s.MaybeGet(fp.name); ok {\n+\t\tif fv, ok := s.MaybeGet(fp.Name); ok {\n \t\t\treturn fv\n \t\t}\n \t}\n \n \treturn nil\n }\n \n-func (fp fieldPart) String() string {\n-\treturn fmt.Sprintf(\".%s\", fp.name)\n+func (fp FieldPathPart) String() string {\n+\treturn fmt.Sprintf(\".%s\", fp.Name)\n+}\n+\n+// Indexes into Maps and Lists by key or index.\n+type IndexPathPart struct {\n+\t// The value of the index, e.g. `[42]` or `[\"value\"]`.\n+\tIndex Value\n+\t// Whether this index should resolve to the key of a map, given by a `@key` annotation.\n+\t// Typically IntoKey is false, and indices would resolve to the values. E.g. given `{a: 42}` then `[\"a\"]` resolves to `42`.\n+\t// If IntoKey is true, then it resolves to `\"a\"`. For IndexPathPart this isn't particularly useful - it's mostly provided for consistency with HashIndexPathPart - but note that given `{a: 42}` then `[\"b\"]` resolves to nil, not `\"b\"`.\n+\tIntoKey bool","path":"go/types/path.go","position":166,"original_position":166,"commit_id":"6ba02bb10d2017e74786e1ebbbc27d24595473af","original_commit_id":"6ba02bb10d2017e74786e1ebbbc27d24595473af","user":{"login":"kalman","id":657134,"avatar_url":"https://avatars.githubusercontent.com/u/657134?v=3","gravatar_id":"","url":"https://api.github.com/users/kalman","html_url":"https://github.com/kalman","followers_url":"https://api.github.com/users/kalman/followers","following_url":"https://api.github.com/users/kalman/following{/other_user}","gists_url":"https://api.github.com/users/kalman/gists{/gist_id}","starred_url":"https://api.github.com/users/kalman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kalman/subscriptions","organizations_url":"https://api.github.com/users/kalman/orgs","repos_url":"https://api.github.com/users/kalman/repos","events_url":"https://api.github.com/users/kalman/events{/privacy}","received_events_url":"https://api.github.com/users/kalman/received_events","type":"User","site_admin":false},"body":"Now these are part of the public API, I want to give them better names.","created_at":"2016-08-03T20:51:13Z","updated_at":"2016-08-03T20:51:13Z","html_url":"https://github.com/attic-labs/noms/pull/2262#discussion_r73418284","pull_request_url":"https://api.github.com/repos/attic-labs/noms/pulls/2262","_links":{"self":{"href":"https://api.github.com/repos/attic-labs/noms/pulls/comments/73418284"},"html":{"href":"https://github.com/attic-labs/noms/pull/2262#discussion_r73418284"},"pull_request":{"href":"https://api.github.com/repos/attic-labs/noms/pulls/2262"}}},"pull_request":{"url":"https://api.github.com/repos/attic-labs/noms/pulls/2262","id":79975764,"html_url":"https://github.com/attic-labs/noms/pull/2262","diff_url":"https://github.com/attic-labs/noms/pull/2262.diff","patch_url":"https://github.com/attic-labs/noms/pull/2262.patch","issue_url":"https://api.github.com/repos/attic-labs/noms/issues/2262","number":2262,"state":"open","locked":false,"title":"Simplify Path construction in Go","user":{"login":"kalman","id":657134,"avatar_url":"https://avatars.githubusercontent.com/u/657134?v=3","gravatar_id":"","url":"https://api.github.com/users/kalman","html_url":"https://github.com/kalman","followers_url":"https://api.github.com/users/kalman/followers","following_url":"https://api.github.com/users/kalman/following{/other_user}","gists_url":"https://api.github.com/users/kalman/gists{/gist_id}","starred_url":"https://api.github.com/users/kalman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kalman/subscriptions","organizations_url":"https://api.github.com/users/kalman/orgs","repos_url":"https://api.github.com/users/kalman/repos","events_url":"https://api.github.com/users/kalman/events{/privacy}","received_events_url":"https://api.github.com/users/kalman/received_events","type":"User","site_admin":false},"body":"There are 3 ways to construct a Path: via methods like AddIndex, via\r\nparsing/AddPath, and simply via using append() (since Path is a slice).\r\nThis patch deletes the former and leaves only (Maybe)ParsePath and\r\nappend() with the ability to manually create the various path parts.","created_at":"2016-08-03T20:45:31Z","updated_at":"2016-08-03T20:51:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cb76047202fb1f26ae9beb4c59b39245a75cfddf","assignee":{"login":"aboodman","id":80388,"avatar_url":"https://avatars.githubusercontent.com/u/80388?v=3","gravatar_id":"","url":"https://api.github.com/users/aboodman","html_url":"https://github.com/aboodman","followers_url":"https://api.github.com/users/aboodman/followers","following_url":"https://api.github.com/users/aboodman/following{/other_user}","gists_url":"https://api.github.com/users/aboodman/gists{/gist_id}","starred_url":"https://api.github.com/users/aboodman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aboodman/subscriptions","organizations_url":"https://api.github.com/users/aboodman/orgs","repos_url":"https://api.github.com/users/aboodman/repos","events_url":"https://api.github.com/users/aboodman/events{/privacy}","received_events_url":"https://api.github.com/users/aboodman/received_events","type":"User","site_admin":false},"assignees":[{"login":"aboodman","id":80388,"avatar_url":"https://avatars.githubusercontent.com/u/80388?v=3","gravatar_id":"","url":"https://api.github.com/users/aboodman","html_url":"https://github.com/aboodman","followers_url":"https://api.github.com/users/aboodman/followers","following_url":"https://api.github.com/users/aboodman/following{/other_user}","gists_url":"https://api.github.com/users/aboodman/gists{/gist_id}","starred_url":"https://api.github.com/users/aboodman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aboodman/subscriptions","organizations_url":"https://api.github.com/users/aboodman/orgs","repos_url":"https://api.github.com/users/aboodman/repos","events_url":"https://api.github.com/users/aboodman/events{/privacy}","received_events_url":"https://api.github.com/users/aboodman/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/attic-labs/noms/pulls/2262/commits","review_comments_url":"https://api.github.com/repos/attic-labs/noms/pulls/2262/comments","review_comment_url":"https://api.github.com/repos/attic-labs/noms/pulls/comments{/number}","comments_url":"https://api.github.com/repos/attic-labs/noms/issues/2262/comments","statuses_url":"https://api.github.com/repos/attic-labs/noms/statuses/6ba02bb10d2017e74786e1ebbbc27d24595473af","head":{"label":"kalman:clean-go-path","ref":"clean-go-path","sha":"6ba02bb10d2017e74786e1ebbbc27d24595473af","user":{"login":"kalman","id":657134,"avatar_url":"https://avatars.githubusercontent.com/u/657134?v=3","gravatar_id":"","url":"https://api.github.com/users/kalman","html_url":"https://github.com/kalman","followers_url":"https://api.github.com/users/kalman/followers","following_url":"https://api.github.com/users/kalman/following{/other_user}","gists_url":"https://api.github.com/users/kalman/gists{/gist_id}","starred_url":"https://api.github.com/users/kalman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kalman/subscriptions","organizations_url":"https://api.github.com/users/kalman/orgs","repos_url":"https://api.github.com/users/kalman/repos","events_url":"https://api.github.com/users/kalman/events{/privacy}","received_events_url":"https://api.github.com/users/kalman/received_events","type":"User","site_admin":false},"repo":{"id":64782667,"name":"noms","full_name":"kalman/noms","owner":{"login":"kalman","id":657134,"avatar_url":"https://avatars.githubusercontent.com/u/657134?v=3","gravatar_id":"","url":"https://api.github.com/users/kalman","html_url":"https://github.com/kalman","followers_url":"https://api.github.com/users/kalman/followers","following_url":"https://api.github.com/users/kalman/following{/other_user}","gists_url":"https://api.github.com/users/kalman/gists{/gist_id}","starred_url":"https://api.github.com/users/kalman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kalman/subscriptions","organizations_url":"https://api.github.com/users/kalman/orgs","repos_url":"https://api.github.com/users/kalman/repos","events_url":"https://api.github.com/users/kalman/events{/privacy}","received_events_url":"https://api.github.com/users/kalman/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kalman/noms","description":"The versioned, forkable, syncable database","fork":true,"url":"https://api.github.com/repos/kalman/noms","forks_url":"https://api.github.com/repos/kalman/noms/forks","keys_url":"https://api.github.com/repos/kalman/noms/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kalman/noms/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kalman/noms/teams","hooks_url":"https://api.github.com/repos/kalman/noms/hooks","issue_events_url":"https://api.github.com/repos/kalman/noms/issues/events{/number}","events_url":"https://api.github.com/repos/kalman/noms/events","assignees_url":"https://api.github.com/repos/kalman/noms/assignees{/user}","branches_url":"https://api.github.com/repos/kalman/noms/branches{/branch}","tags_url":"https://api.github.com/repos/kalman/noms/tags","blobs_url":"https://api.github.com/repos/kalman/noms/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kalman/noms/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kalman/noms/git/refs{/sha}","trees_url":"https://api.github.com/repos/kalman/noms/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kalman/noms/statuses/{sha}","languages_url":"https://api.github.com/repos/kalman/noms/languages","stargazers_url":"https://api.github.com/repos/kalman/noms/stargazers","contributors_url":"https://api.github.com/repos/kalman/noms/contributors","subscribers_url":"https://api.github.com/repos/kalman/noms/subscribers","subscription_url":"https://api.github.com/repos/kalman/noms/subscription","commits_url":"https://api.github.com/repos/kalman/noms/commits{/sha}","git_commits_url":"https://api.github.com/repos/kalman/noms/git/commits{/sha}","comments_url":"https://api.github.com/repos/kalman/noms/comments{/number}","issue_comment_url":"https://api.github.com/repos/kalman/noms/issues/comments{/number}","contents_url":"https://api.github.com/repos/kalman/noms/contents/{+path}","compare_url":"https://api.github.com/repos/kalman/noms/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kalman/noms/merges","archive_url":"https://api.github.com/repos/kalman/noms/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kalman/noms/downloads","issues_url":"https://api.github.com/repos/kalman/noms/issues{/number}","pulls_url":"https://api.github.com/repos/kalman/noms/pulls{/number}","milestones_url":"https://api.github.com/repos/kalman/noms/milestones{/number}","notifications_url":"https://api.github.com/repos/kalman/noms/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kalman/noms/labels{/name}","releases_url":"https://api.github.com/repos/kalman/noms/releases{/id}","deployments_url":"https://api.github.com/repos/kalman/noms/deployments","created_at":"2016-08-02T18:36:44Z","updated_at":"2016-08-02T18:36:46Z","pushed_at":"2016-08-03T20:45:28Z","git_url":"git://github.com/kalman/noms.git","ssh_url":"git@github.com:kalman/noms.git","clone_url":"https://github.com/kalman/noms.git","svn_url":"https://github.com/kalman/noms","homepage":"","size":24478,"stargazers_count":0,"watchers_count":0,"language":"Go","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":"attic-labs:master","ref":"master","sha":"66100a96255251900692ea7eab82913057c40984","user":{"login":"attic-labs","id":12534679,"avatar_url":"https://avatars.githubusercontent.com/u/12534679?v=3","gravatar_id":"","url":"https://api.github.com/users/attic-labs","html_url":"https://github.com/attic-labs","followers_url":"https://api.github.com/users/attic-labs/followers","following_url":"https://api.github.com/users/attic-labs/following{/other_user}","gists_url":"https://api.github.com/users/attic-labs/gists{/gist_id}","starred_url":"https://api.github.com/users/attic-labs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/attic-labs/subscriptions","organizations_url":"https://api.github.com/users/attic-labs/orgs","repos_url":"https://api.github.com/users/attic-labs/repos","events_url":"https://api.github.com/users/attic-labs/events{/privacy}","received_events_url":"https://api.github.com/users/attic-labs/received_events","type":"Organization","site_admin":false},"repo":{"id":36778364,"name":"noms","full_name":"attic-labs/noms","owner":{"login":"attic-labs","id":12534679,"avatar_url":"https://avatars.githubusercontent.com/u/12534679?v=3","gravatar_id":"","url":"https://api.github.com/users/attic-labs","html_url":"https://github.com/attic-labs","followers_url":"https://api.github.com/users/attic-labs/followers","following_url":"https://api.github.com/users/attic-labs/following{/other_user}","gists_url":"https://api.github.com/users/attic-labs/gists{/gist_id}","starred_url":"https://api.github.com/users/attic-labs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/attic-labs/subscriptions","organizations_url":"https://api.github.com/users/attic-labs/orgs","repos_url":"https://api.github.com/users/attic-labs/repos","events_url":"https://api.github.com/users/attic-labs/events{/privacy}","received_events_url":"https://api.github.com/users/attic-labs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/attic-labs/noms","description":"The versioned, forkable, syncable database","fork":false,"url":"https://api.github.com/repos/attic-labs/noms","forks_url":"https://api.github.com/repos/attic-labs/noms/forks","keys_url":"https://api.github.com/repos/attic-labs/noms/keys{/key_id}","collaborators_url":"https://api.github.com/repos/attic-labs/noms/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/attic-labs/noms/teams","hooks_url":"https://api.github.com/repos/attic-labs/noms/hooks","issue_events_url":"https://api.github.com/repos/attic-labs/noms/issues/events{/number}","events_url":"https://api.github.com/repos/attic-labs/noms/events","assignees_url":"https://api.github.com/repos/attic-labs/noms/assignees{/user}","branches_url":"https://api.github.com/repos/attic-labs/noms/branches{/branch}","tags_url":"https://api.github.com/repos/attic-labs/noms/tags","blobs_url":"https://api.github.com/repos/attic-labs/noms/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/attic-labs/noms/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/attic-labs/noms/git/refs{/sha}","trees_url":"https://api.github.com/repos/attic-labs/noms/git/trees{/sha}","statuses_url":"https://api.github.com/repos/attic-labs/noms/statuses/{sha}","languages_url":"https://api.github.com/repos/attic-labs/noms/languages","stargazers_url":"https://api.github.com/repos/attic-labs/noms/stargazers","contributors_url":"https://api.github.com/repos/attic-labs/noms/contributors","subscribers_url":"https://api.github.com/repos/attic-labs/noms/subscribers","subscription_url":"https://api.github.com/repos/attic-labs/noms/subscription","commits_url":"https://api.github.com/repos/attic-labs/noms/commits{/sha}","git_commits_url":"https://api.github.com/repos/attic-labs/noms/git/commits{/sha}","comments_url":"https://api.github.com/repos/attic-labs/noms/comments{/number}","issue_comment_url":"https://api.github.com/repos/attic-labs/noms/issues/comments{/number}","contents_url":"https://api.github.com/repos/attic-labs/noms/contents/{+path}","compare_url":"https://api.github.com/repos/attic-labs/noms/compare/{base}...{head}","merges_url":"https://api.github.com/repos/attic-labs/noms/merges","archive_url":"https://api.github.com/repos/attic-labs/noms/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/attic-labs/noms/downloads","issues_url":"https://api.github.com/repos/attic-labs/noms/issues{/number}","pulls_url":"https://api.github.com/repos/attic-labs/noms/pulls{/number}","milestones_url":"https://api.github.com/repos/attic-labs/noms/milestones{/number}","notifications_url":"https://api.github.com/repos/attic-labs/noms/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/attic-labs/noms/labels{/name}","releases_url":"https://api.github.com/repos/attic-labs/noms/releases{/id}","deployments_url":"https://api.github.com/repos/attic-labs/noms/deployments","created_at":"2015-06-03T03:44:49Z","updated_at":"2016-08-03T20:49:52Z","pushed_at":"2016-08-03T20:45:31Z","git_url":"git://github.com/attic-labs/noms.git","ssh_url":"git@github.com:attic-labs/noms.git","clone_url":"https://github.com/attic-labs/noms.git","svn_url":"https://github.com/attic-labs/noms","homepage":"","size":28267,"stargazers_count":2119,"watchers_count":2119,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":52,"mirror_url":null,"open_issues_count":201,"forks":52,"open_issues":201,"watchers":2119,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/attic-labs/noms/pulls/2262"},"html":{"href":"https://github.com/attic-labs/noms/pull/2262"},"issue":{"href":"https://api.github.com/repos/attic-labs/noms/issues/2262"},"comments":{"href":"https://api.github.com/repos/attic-labs/noms/issues/2262/comments"},"review_comments":{"href":"https://api.github.com/repos/attic-labs/noms/pulls/2262/comments"},"review_comment":{"href":"https://api.github.com/repos/attic-labs/noms/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/attic-labs/noms/pulls/2262/commits"},"statuses":{"href":"https://api.github.com/repos/attic-labs/noms/statuses/6ba02bb10d2017e74786e1ebbbc27d24595473af"}}}}
{"actor":{"display_login":"kalman"}}