{"action":"created","comment":{"url":"https://api.github.com/repos/moment/moment/pulls/comments/90768165","pull_request_review_id":11286508,"id":90768165,"diff_hunk":"@@ -0,0 +1,283 @@\n+import { createDuration } from './create';\n+import each from '../utils/each';\n+import extend from '../utils/extend';\n+import isArray from '../utils/is-array';\n+import isObject from '../utils/is-object';\n+import indexOf from '../utils/index-of';\n+import map from '../utils/map';\n+import zeroFill from '../utils/zero-fill';\n+\n+// formatDuration([template] [, precision] [, settings])\n+export function formatDuration() {\n+    var tokenizer, tokens, types, typeMap, momentTypes, foundFirst,\n+        args = [].slice.call(arguments),\n+        settings = extend({}, this.format.defaults),\n+        // keep a shadow copy of this moment for calculating remainders\n+        remainder = createDuration(this);\n+\n+    // add a reference to this duration object to the settings for use in a template function\n+    settings.duration = this;\n+\n+    // parse arguments\n+    each.call(args, function (arg) {\n+        if (typeof arg === 'string' || typeof arg === 'function') {\n+            settings.template = arg;\n+            return;\n+        }\n+\n+        if (typeof arg === 'number') {\n+            settings.precision = arg;\n+            return;\n+        }\n+\n+        if (isObject(arg)) {\n+            extend(settings, arg);\n+        }\n+    });\n+\n+    // types\n+    types = settings.types = (isArray(settings.types) ? settings.types : settings.types.split(' '));\n+\n+    // template\n+    if (typeof settings.template === 'function') {\n+        settings.template = settings.template.apply(settings);\n+    }\n+\n+    // decimalSeparator\n+    if (typeof settings.decimalSeparator === 'function') {\n+        settings.decimalSeparator = settings.decimalSeparator.apply(settings);\n+    }\n+\n+    // tokenizer regexp\n+    tokenizer = new RegExp(map(types, function (type) {\n+        return settings[type].source;\n+    }).join('|'), 'g');\n+\n+    // token type map function\n+    typeMap = function (token) {\n+        for (var i = 0; i < types.length; ++i) {\n+            if (settings[types[i]].test(token)) {\n+                return types[i];\n+            }\n+        }\n+    };\n+\n+    // tokens array\n+    tokens = map(settings.template.match(tokenizer), function (token, index) {\n+        var type = typeMap(token),\n+            length = token.length;\n+\n+        return {\n+            index: index,\n+            length: length,\n+\n+            // replace escaped tokens with the non-escaped token text\n+            token: (type === 'escape' ? token.replace(settings.escape, '$1') : token),\n+\n+            // ignore type on non-moment tokens\n+            type: ((type === 'escape' || type === 'general') ? null : type)\n+        };\n+    }, this);\n+\n+    // unique moment token types in the template (in order of descending magnitude)\n+    momentTypes = [];\n+    each.call(tokens, function (token) {\n+        if (indexOf.call(types, token.type) > -1 && indexOf.call(momentTypes, token.type) === -1) {\n+            momentTypes.push(token.type);\n+        }\n+    });\n+\n+    // exit early if there are no momentTypes\n+    if (!momentTypes.length) {\n+        return map(tokens, function (v) {\n+            return v.token;\n+        }).join('');\n+    }\n+\n+    // calculate values for each token type in the template\n+    each.call(momentTypes, function (momentType, index) {\n+        var value, wholeValue, decimalValue, isLeast, isMost, truncMethod, decVal;\n+\n+        // is this the least or most significant moment token found?\n+        isLeast = (index === (momentTypes.length - 1));\n+        isMost = (index === 0);\n+\n+        // get the value in the current units\n+        value = remainder.as(momentType);\n+\n+        // determine the truncation method: floor for positive numbers, ceiling for negative numbers\n+        truncMethod = (value > 0 ? 'floor' : 'ceil');\n+        // calculate integer and decimal value portions\n+        if (isLeast) {\n+            // apply precision to least significant token value\n+            if (settings.precision <= 0) {\n+                wholeValue = Math[settings.trunc ? truncMethod : 'round'](value * Math.pow(10, settings.precision)) * Math.pow(10, -settings.precision);\n+                decimalValue = 0;\n+            } else { // settings.precision > 0\n+                wholeValue = Math[truncMethod](value);\n+                decVal = settings.trunc ? value - wholeValue : Math.round((value - wholeValue) * Math.pow(10, settings.precision)) * Math.pow(10, -settings.precision);\n+\n+                decVal = decVal.toString().replace(/^\\-/, '').split(/\\.|e\\-/);\n+\n+                // not sure what this does...\n+                switch (decVal.length) {\n+                    case 1:\n+                        decimalValue = (decVal[0] + zeroFill(0, settings.precision)).slice(0, settings.precision);\n+                        break;\n+\n+                    case 2:\n+                        decimalValue = (decVal[1] + zeroFill(0, settings.precision)).slice(0, settings.precision);\n+                        break;\n+\n+                    case 3:\n+                        decimalValue = (zeroFill(0, (+decVal[2]) - 1) + (decVal[0] || '0') + decVal[1] + zeroFill(0, settings.precision)).slice(0, settings.precision);\n+                        break;\n+\n+                    default:\n+                        break;\n+                    //     throw 'Moment Duration Format: unable to parse token decimal value.';\n+                    // TODO: what should we do instead of throwing an error?\n+                }\n+            }\n+        } else {\n+            wholeValue = Math[truncMethod](value);\n+            decimalValue = value - wholeValue;\n+        }\n+\n+        // update tokens array\n+        // using this algorithm to not assume anything about the order or frequency of any tokens\n+        each.call(tokens, function (token) {\n+            if (token.type === momentType) {\n+                extend(token, {\n+                    value: value,\n+                    wholeValue: wholeValue,\n+                    decimalValue: decimalValue,\n+                    isLeast: isLeast,\n+                    isMost: isMost\n+                });\n+            }\n+        });\n+\n+        // update remainder\n+        remainder.subtract(wholeValue, momentType);\n+    });\n+\n+    // build output\n+\n+    // the first moment token can have special handling\n+    foundFirst = false;\n+\n+    tokens = map(tokens, function (token, index) {\n+        var val,\n+            decVal;\n+\n+        if (!token.type) {\n+            // if it is not a moment token, use the token as its own value\n+            return token.token;\n+        }\n+\n+        // remove negative sign from the beginning\n+        val = token.wholeValue.toString().replace(/^\\-/, '');\n+\n+        // apply token length formatting\n+        // special handling for the first moment token that is not the most significant in a trimmed template\n+        if (token.length > 1 && (foundFirst || token.isMost)) {\n+            val = zeroFill(val, token.length);\n+        }\n+\n+        // add decimal value if precision > 0\n+        if (token.isLeast && (settings.precision > 0)) {\n+            decVal = token.decimalValue.toString();\n+            val += settings.decimalSeparator + decVal;\n+        }\n+\n+        // add a negative sign if the value is negative and token is the first one\n+        if (token.value < 0 && !index) {\n+            val = '-' + val;\n+        }\n+\n+        foundFirst = true;\n+\n+        return val;\n+    });\n+\n+\n+    return this.localeData().postformat(tokens.join(''));\n+}\n+\n+formatDuration.defaults = {\n+    // token definitions\n+    escape: /\\[(.+?)\\]/,\n+    years: /[Yy]+/,\n+    months: /M+/,\n+    weeks: /[Ww]+/,\n+    days: /[Dd]+/,\n+    hours: /[Hh]+/,\n+    minutes: /m+/,\n+    seconds: /s+/,\n+    milliseconds: /S+/,\n+    general: /.+?/,\n+\n+    // token type names\n+    // in order of descending magnitude\n+    // can be a space-separated token name list or an array of token names\n+    types: 'escape years months weeks days hours minutes seconds milliseconds general',","path":"src/lib/duration/format.js","position":224,"original_position":224,"commit_id":"baf7435d923f0d438c76dcb88e1383c8f6631e16","original_commit_id":"baf7435d923f0d438c76dcb88e1383c8f6631e16","user":{"login":"maggiepint","id":6054610,"avatar_url":"https://avatars.githubusercontent.com/u/6054610?v=3","gravatar_id":"","url":"https://api.github.com/users/maggiepint","html_url":"https://github.com/maggiepint","followers_url":"https://api.github.com/users/maggiepint/followers","following_url":"https://api.github.com/users/maggiepint/following{/other_user}","gists_url":"https://api.github.com/users/maggiepint/gists{/gist_id}","starred_url":"https://api.github.com/users/maggiepint/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maggiepint/subscriptions","organizations_url":"https://api.github.com/users/maggiepint/orgs","repos_url":"https://api.github.com/users/maggiepint/repos","events_url":"https://api.github.com/users/maggiepint/events{/privacy}","received_events_url":"https://api.github.com/users/maggiepint/received_events","type":"User","site_admin":false},"body":"As I read everything here, there is support for changing the format tokens. This is fine for the plugin, but if it can be removed from this pull, that would really reduce size and complexity. I don't see it as a necessary component in all of this.","created_at":"2016-12-04T00:39:44Z","updated_at":"2016-12-04T00:39:44Z","html_url":"https://github.com/moment/moment/pull/3615#discussion_r90768165","pull_request_url":"https://api.github.com/repos/moment/moment/pulls/3615","_links":{"self":{"href":"https://api.github.com/repos/moment/moment/pulls/comments/90768165"},"html":{"href":"https://github.com/moment/moment/pull/3615#discussion_r90768165"},"pull_request":{"href":"https://api.github.com/repos/moment/moment/pulls/3615"}}},"pull_request":{"url":"https://api.github.com/repos/moment/moment/pulls/3615","id":94494103,"html_url":"https://github.com/moment/moment/pull/3615","diff_url":"https://github.com/moment/moment/pull/3615.diff","patch_url":"https://github.com/moment/moment/pull/3615.patch","issue_url":"https://api.github.com/repos/moment/moment/issues/3615","number":3615,"state":"open","locked":false,"title":"duration format in core moment","user":{"login":"marwahaha","id":2541209,"avatar_url":"https://avatars.githubusercontent.com/u/2541209?v=3","gravatar_id":"","url":"https://api.github.com/users/marwahaha","html_url":"https://github.com/marwahaha","followers_url":"https://api.github.com/users/marwahaha/followers","following_url":"https://api.github.com/users/marwahaha/following{/other_user}","gists_url":"https://api.github.com/users/marwahaha/gists{/gist_id}","starred_url":"https://api.github.com/users/marwahaha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marwahaha/subscriptions","organizations_url":"https://api.github.com/users/marwahaha/orgs","repos_url":"https://api.github.com/users/marwahaha/repos","events_url":"https://api.github.com/users/marwahaha/events{/privacy}","received_events_url":"https://api.github.com/users/marwahaha/received_events","type":"User","site_admin":false},"body":"I was hoping to address #1048 by porting @jsmreese 's plugin into moment core. Since #3308 closed, I tried to pick up where @butterflyhug left off.\r\n\r\n(Of course, the two above-mentioned wrote most of this code.)\r\n\r\nNotes:\r\n-----\r\n❓ I've taken out all references to `trim` (and `forceLength`). Would that be something we re-implement, using core moment? The behavior is now slightly different than in the plugin.\r\n❓   I briefly tried to implement using `src/lib/format/format.js`, but I realized that the symbols would have different meanings. Is this appropriate?\r\n❗️ Conversions to months are handled a bit differently! I suppose @jsmreese used 30 days to a month, but it's now something more like 365/12 . So, I adjusted some of the tests to make it pass.\r\n❗️ I preserved `truncMethod`, but due to rounding errors, things won't be perfect. (Try `moment.duration(1234.55, 'hours').format('d h', 1)` and see for yourself). This isn't new to core moment; for example, see #2978.\r\n✔️ I've added internationalization using `this.localeData().postformat`, similar to other core moment formatting. This should work ok even with the `decimalSeparator` setting.\r\n✔️ This adds about 2.9K to `moment.min.js` (I think this is ~6%). If you need it thinner, let me know.\r\n\r\nArchitecturally, this seems a bit different than core moment, and this probably needs more work and discussion. I'm happy to code, but I want to hear from all of you.\r\n\r\n\r\n","created_at":"2016-11-19T20:17:59Z","updated_at":"2016-12-04T00:39:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a7e0866c1a16ddca7bb67cc044e8ebadd17cfdf3","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/moment/moment/pulls/3615/commits","review_comments_url":"https://api.github.com/repos/moment/moment/pulls/3615/comments","review_comment_url":"https://api.github.com/repos/moment/moment/pulls/comments{/number}","comments_url":"https://api.github.com/repos/moment/moment/issues/3615/comments","statuses_url":"https://api.github.com/repos/moment/moment/statuses/baf7435d923f0d438c76dcb88e1383c8f6631e16","head":{"label":"marwahaha:patch-1048","ref":"patch-1048","sha":"baf7435d923f0d438c76dcb88e1383c8f6631e16","user":{"login":"marwahaha","id":2541209,"avatar_url":"https://avatars.githubusercontent.com/u/2541209?v=3","gravatar_id":"","url":"https://api.github.com/users/marwahaha","html_url":"https://github.com/marwahaha","followers_url":"https://api.github.com/users/marwahaha/followers","following_url":"https://api.github.com/users/marwahaha/following{/other_user}","gists_url":"https://api.github.com/users/marwahaha/gists{/gist_id}","starred_url":"https://api.github.com/users/marwahaha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marwahaha/subscriptions","organizations_url":"https://api.github.com/users/marwahaha/orgs","repos_url":"https://api.github.com/users/marwahaha/repos","events_url":"https://api.github.com/users/marwahaha/events{/privacy}","received_events_url":"https://api.github.com/users/marwahaha/received_events","type":"User","site_admin":false},"repo":{"id":74194119,"name":"moment","full_name":"marwahaha/moment","owner":{"login":"marwahaha","id":2541209,"avatar_url":"https://avatars.githubusercontent.com/u/2541209?v=3","gravatar_id":"","url":"https://api.github.com/users/marwahaha","html_url":"https://github.com/marwahaha","followers_url":"https://api.github.com/users/marwahaha/followers","following_url":"https://api.github.com/users/marwahaha/following{/other_user}","gists_url":"https://api.github.com/users/marwahaha/gists{/gist_id}","starred_url":"https://api.github.com/users/marwahaha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marwahaha/subscriptions","organizations_url":"https://api.github.com/users/marwahaha/orgs","repos_url":"https://api.github.com/users/marwahaha/repos","events_url":"https://api.github.com/users/marwahaha/events{/privacy}","received_events_url":"https://api.github.com/users/marwahaha/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/marwahaha/moment","description":"Parse, validate, manipulate, and display dates in javascript.","fork":true,"url":"https://api.github.com/repos/marwahaha/moment","forks_url":"https://api.github.com/repos/marwahaha/moment/forks","keys_url":"https://api.github.com/repos/marwahaha/moment/keys{/key_id}","collaborators_url":"https://api.github.com/repos/marwahaha/moment/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/marwahaha/moment/teams","hooks_url":"https://api.github.com/repos/marwahaha/moment/hooks","issue_events_url":"https://api.github.com/repos/marwahaha/moment/issues/events{/number}","events_url":"https://api.github.com/repos/marwahaha/moment/events","assignees_url":"https://api.github.com/repos/marwahaha/moment/assignees{/user}","branches_url":"https://api.github.com/repos/marwahaha/moment/branches{/branch}","tags_url":"https://api.github.com/repos/marwahaha/moment/tags","blobs_url":"https://api.github.com/repos/marwahaha/moment/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/marwahaha/moment/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/marwahaha/moment/git/refs{/sha}","trees_url":"https://api.github.com/repos/marwahaha/moment/git/trees{/sha}","statuses_url":"https://api.github.com/repos/marwahaha/moment/statuses/{sha}","languages_url":"https://api.github.com/repos/marwahaha/moment/languages","stargazers_url":"https://api.github.com/repos/marwahaha/moment/stargazers","contributors_url":"https://api.github.com/repos/marwahaha/moment/contributors","subscribers_url":"https://api.github.com/repos/marwahaha/moment/subscribers","subscription_url":"https://api.github.com/repos/marwahaha/moment/subscription","commits_url":"https://api.github.com/repos/marwahaha/moment/commits{/sha}","git_commits_url":"https://api.github.com/repos/marwahaha/moment/git/commits{/sha}","comments_url":"https://api.github.com/repos/marwahaha/moment/comments{/number}","issue_comment_url":"https://api.github.com/repos/marwahaha/moment/issues/comments{/number}","contents_url":"https://api.github.com/repos/marwahaha/moment/contents/{+path}","compare_url":"https://api.github.com/repos/marwahaha/moment/compare/{base}...{head}","merges_url":"https://api.github.com/repos/marwahaha/moment/merges","archive_url":"https://api.github.com/repos/marwahaha/moment/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/marwahaha/moment/downloads","issues_url":"https://api.github.com/repos/marwahaha/moment/issues{/number}","pulls_url":"https://api.github.com/repos/marwahaha/moment/pulls{/number}","milestones_url":"https://api.github.com/repos/marwahaha/moment/milestones{/number}","notifications_url":"https://api.github.com/repos/marwahaha/moment/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/marwahaha/moment/labels{/name}","releases_url":"https://api.github.com/repos/marwahaha/moment/releases{/id}","deployments_url":"https://api.github.com/repos/marwahaha/moment/deployments","created_at":"2016-11-19T07:27:52Z","updated_at":"2016-11-19T07:27:59Z","pushed_at":"2016-11-30T06:06:58Z","git_url":"git://github.com/marwahaha/moment.git","ssh_url":"git@github.com:marwahaha/moment.git","clone_url":"https://github.com/marwahaha/moment.git","svn_url":"https://github.com/marwahaha/moment","homepage":"momentjs.com","size":12320,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"moment:develop","ref":"develop","sha":"fae800443e37152f4137961b5308a243a4f87b0b","user":{"login":"moment","id":4129662,"avatar_url":"https://avatars.githubusercontent.com/u/4129662?v=3","gravatar_id":"","url":"https://api.github.com/users/moment","html_url":"https://github.com/moment","followers_url":"https://api.github.com/users/moment/followers","following_url":"https://api.github.com/users/moment/following{/other_user}","gists_url":"https://api.github.com/users/moment/gists{/gist_id}","starred_url":"https://api.github.com/users/moment/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/moment/subscriptions","organizations_url":"https://api.github.com/users/moment/orgs","repos_url":"https://api.github.com/users/moment/repos","events_url":"https://api.github.com/users/moment/events{/privacy}","received_events_url":"https://api.github.com/users/moment/received_events","type":"Organization","site_admin":false},"repo":{"id":1424470,"name":"moment","full_name":"moment/moment","owner":{"login":"moment","id":4129662,"avatar_url":"https://avatars.githubusercontent.com/u/4129662?v=3","gravatar_id":"","url":"https://api.github.com/users/moment","html_url":"https://github.com/moment","followers_url":"https://api.github.com/users/moment/followers","following_url":"https://api.github.com/users/moment/following{/other_user}","gists_url":"https://api.github.com/users/moment/gists{/gist_id}","starred_url":"https://api.github.com/users/moment/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/moment/subscriptions","organizations_url":"https://api.github.com/users/moment/orgs","repos_url":"https://api.github.com/users/moment/repos","events_url":"https://api.github.com/users/moment/events{/privacy}","received_events_url":"https://api.github.com/users/moment/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/moment/moment","description":"Parse, validate, manipulate, and display dates in javascript.","fork":false,"url":"https://api.github.com/repos/moment/moment","forks_url":"https://api.github.com/repos/moment/moment/forks","keys_url":"https://api.github.com/repos/moment/moment/keys{/key_id}","collaborators_url":"https://api.github.com/repos/moment/moment/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/moment/moment/teams","hooks_url":"https://api.github.com/repos/moment/moment/hooks","issue_events_url":"https://api.github.com/repos/moment/moment/issues/events{/number}","events_url":"https://api.github.com/repos/moment/moment/events","assignees_url":"https://api.github.com/repos/moment/moment/assignees{/user}","branches_url":"https://api.github.com/repos/moment/moment/branches{/branch}","tags_url":"https://api.github.com/repos/moment/moment/tags","blobs_url":"https://api.github.com/repos/moment/moment/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/moment/moment/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/moment/moment/git/refs{/sha}","trees_url":"https://api.github.com/repos/moment/moment/git/trees{/sha}","statuses_url":"https://api.github.com/repos/moment/moment/statuses/{sha}","languages_url":"https://api.github.com/repos/moment/moment/languages","stargazers_url":"https://api.github.com/repos/moment/moment/stargazers","contributors_url":"https://api.github.com/repos/moment/moment/contributors","subscribers_url":"https://api.github.com/repos/moment/moment/subscribers","subscription_url":"https://api.github.com/repos/moment/moment/subscription","commits_url":"https://api.github.com/repos/moment/moment/commits{/sha}","git_commits_url":"https://api.github.com/repos/moment/moment/git/commits{/sha}","comments_url":"https://api.github.com/repos/moment/moment/comments{/number}","issue_comment_url":"https://api.github.com/repos/moment/moment/issues/comments{/number}","contents_url":"https://api.github.com/repos/moment/moment/contents/{+path}","compare_url":"https://api.github.com/repos/moment/moment/compare/{base}...{head}","merges_url":"https://api.github.com/repos/moment/moment/merges","archive_url":"https://api.github.com/repos/moment/moment/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/moment/moment/downloads","issues_url":"https://api.github.com/repos/moment/moment/issues{/number}","pulls_url":"https://api.github.com/repos/moment/moment/pulls{/number}","milestones_url":"https://api.github.com/repos/moment/moment/milestones{/number}","notifications_url":"https://api.github.com/repos/moment/moment/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/moment/moment/labels{/name}","releases_url":"https://api.github.com/repos/moment/moment/releases{/id}","deployments_url":"https://api.github.com/repos/moment/moment/deployments","created_at":"2011-03-01T02:46:06Z","updated_at":"2016-12-03T21:48:08Z","pushed_at":"2016-11-30T06:07:03Z","git_url":"git://github.com/moment/moment.git","ssh_url":"git@github.com:moment/moment.git","clone_url":"https://github.com/moment/moment.git","svn_url":"https://github.com/moment/moment","homepage":"momentjs.com","size":19699,"stargazers_count":28908,"watchers_count":28908,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4131,"mirror_url":null,"open_issues_count":191,"forks":4131,"open_issues":191,"watchers":28908,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/moment/moment/pulls/3615"},"html":{"href":"https://github.com/moment/moment/pull/3615"},"issue":{"href":"https://api.github.com/repos/moment/moment/issues/3615"},"comments":{"href":"https://api.github.com/repos/moment/moment/issues/3615/comments"},"review_comments":{"href":"https://api.github.com/repos/moment/moment/pulls/3615/comments"},"review_comment":{"href":"https://api.github.com/repos/moment/moment/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/moment/moment/pulls/3615/commits"},"statuses":{"href":"https://api.github.com/repos/moment/moment/statuses/baf7435d923f0d438c76dcb88e1383c8f6631e16"}}}}
{"actor":{"display_login":"maggiepint"}}