{"action":"created","comment":{"url":"https://api.github.com/repos/mdn/kumascript/pulls/comments/148673639","pull_request_review_id":73948517,"id":148673639,"diff_hunk":"@@ -0,0 +1,603 @@\n+<%\n+/*\n+\n+Retrieves MDN compat data for a given feature\n+\n+Parameters\n+\n+$0 – A query string indicating for which feature to retrieve compat data for.\n+$1 – A depth setting indicating how deep sub features should be added to the table\n+(flattened, default: 1, first level of sub feature data will be included).\n+\n+Example calls\n+\n+{{compat(\"webextensions.api.alarms\")}}\n+{{compat(\"webextensions.api.alarms.Alarm\")}}\n+{{compat(\"webextensions.manifest\")}}\n+{{compat(\"webextensions.manifest.applications\")}}\n+{{compat(\"css.properties.background-attachment\")}}\n+{{compat(\"css.selectors.any-link\")}}\n+{{compat(\"css.at-rules.font-face\")}}\n+{{compat(\"http.headers.Cache-Control\")}}\n+{{compat(\"http.status.404\")}}\n+{{compat(\"http.method.CONNECT\")}}\n+{{compat(\"api.WebGL2RenderingContext\")}}\n+{{compat(\"api.WebGL2RenderingContext.beginQuery\")}}\n+{{compat(\"html.elements.input\")}}\n+\n+{{compat(\"html.elements.link\", 2)}}\n+{{compat(\"webextensions.api.alarms\", 3)}}\n+\n+*/\n+\n+const bcd = require('mdn-browser-compat-data');\n+var query = $0;\n+var depth = $1 || 1;\n+var output = '';\n+var category = query.split(\".\")[0];\n+\n+var compatStrings = string.deserialize(template('L10n:CompatTable'));\n+var localize = mdn.getLocalString;\n+\n+var s_no_data_found = mdn.localString({\n+  'en-US': `No compatibility data found. Please contribute data for \"${query}\" (depth: ${depth}) to the <a href=\"https://github.com/mdn/browser-compat-data\">MDN compatibility data repository</a>.`\n+});\n+\n+const browsers = {\n+  \"desktop\": ['chrome', 'edge', 'firefox', 'ie', 'opera', 'safari'],\n+  \"mobile\": ['webview_android', 'chrome_android', 'edge_mobile', 'firefox_android', 'ie_mobile', 'opera_android', 'safari_ios'],\n+  \"server\": ['nodejs'],\n+  \"webextensions-desktop\": ['chrome', 'edge', 'firefox', 'opera'],\n+  \"webextensions-mobile\": ['firefox_android']\n+};\n+\n+let browserCount = browsers[\"desktop\"].length + browsers[\"mobile\"].length;\n+let displayBrowers = [...browsers[\"desktop\"], ...browsers[\"mobile\"]];\n+\n+if (category === 'javascript') {\n+  browserCount +=  browsers[\"server\"].length;\n+  displayBrowers.push(...browsers[\"server\"]);\n+}\n+if (category === 'webextensions') {\n+  browserCount = browsers[\"webextensions-desktop\"].length +\n+                 browsers[\"webextensions-mobile\"].length;\n+  displayBrowers = [...browsers[\"webextensions-desktop\"], ...browsers[\"webextensions-mobile\"]];\n+}\n+\n+function writeIcon(iconSlug, replacer) {\n+  let iconName = localize(compatStrings, 'bc_icon_name_' + iconSlug).replace('$1$', replacer);\n+  let iconTitle = localize(compatStrings, 'bc_icon_title_' + iconSlug).replace('$1$', replacer);\n+  // there is no iconTitle, fall back to iconName\n+  if (iconTitle === 'bc_icon_title_' + iconSlug) {\n+    iconTitle = iconName;\n+  }\n+  let output = '';\n+  output += `<abbr class=\"only-icon\" title=\"${iconTitle}\">`;\n+  output += `<span>${iconName}</span>`;\n+  output += `<i aria-hidden=\"true\" class=\"ic-${iconSlug}\"></i>`;\n+  output += '</abbr>';\n+  return output;\n+}\n+\n+function writeFeatureName(row, feature) {\n+  let desc = '';\n+  let featureIcons = '';\n+  let experimentalIcon = '';\n+  let deprecatedIcon = '';\n+  let nonStandardIcon = '';\n+  let label = Object.keys(row)[0];\n+\n+  if (feature.description) {\n+    // Basic support or unnested features need no prefixing\n+    if (label.indexOf('.') === -1) {\n+      desc += feature.description;\n+      // otherwise add a prefix so that we know where this belongs to (e.g. \"parse: ISO 8601 format\")\n+    } else {\n+      desc += `<code>${label.slice(0, label.lastIndexOf('.'))}</code>: ${feature.description}`;\n+    }\n+  } else {\n+    desc += `<code>${Object.keys(row)[0]}</code>`;\n+  }\n+  // Add relative MDN url, but don't add it for \"Basic support\"\n+  if (feature.mdn_url && label != identifier) {\n+    desc = `<a href=\"${feature.mdn_url.replace('https://developer.mozilla.org', '')}\">${desc}</a>`;\n+  }\n+\n+  if (feature.hasOwnProperty('status')) {\n+    if (feature.status.experimental === true) {\n+      experimentalIcon = writeIcon('experimental');\n+    }\n+    if (feature.status.deprecated === true) {\n+      deprecatedIcon = writeIcon('deprecated');\n+    }\n+    if (feature.status.standard_track === false) {\n+      nonStandardIcon = writeIcon('non-standard');\n+    }\n+    if (experimentalIcon || deprecatedIcon || nonStandardIcon) {\n+      featureIcons += ' <div class=\"bc-icons\">';\n+      featureIcons += experimentalIcon;\n+      featureIcons += deprecatedIcon;\n+      featureIcons += nonStandardIcon;\n+      featureIcons += '</div>';\n+    }\n+  }\n+  return desc + featureIcons;\n+}\n+\n+/*\n+Returns the string to appear in the table cell, like \"Yes\", \"No\" or \"?\", \"Partial\"\n+or the version number\n+\n+`added` and `removed` are either null, true, false or a string containing a version number\n+`partial` is either null, true, or false indicating partial_implementation\n+*/\n+function getCellString(added, removed, partial) {\n+  let output = '';\n+  switch (added) {\n+    case null:\n+      output = `<abbr title=\"${localize(compatStrings, 'supportsShort_unknown_title')}\">\n+                ${localize(compatStrings, 'supportsShort_unknown')}\n+              </abbr>`;\n+    break;\n+    case true:\n+      output = `<abbr title=\"${localize(compatStrings, 'supportsLong_yes')}\"\n+                class=\"bc-level bc-level-yes only-icon\">\n+                <span>${localize(compatStrings, 'supportsLong_yes')}</span>\n+              </abbr>\n+              ${localize(compatStrings, 'supportsShort_yes')}`;\n+    break;\n+    case false:\n+      output = `<abbr title=\"${localize(compatStrings, 'supportsLong_no')}\"\n+                class=\"bc-level bc-level-no only-icon\">\n+                <span>${localize(compatStrings, 'supportsLong_no')}</span>\n+              </abbr>\n+              ${localize(compatStrings, 'supportsShort_no')}`;\n+    break;\n+    default:\n+      output = `<abbr title=\"${localize(compatStrings, 'supportsLong_yes')}\"\n+                class=\"bc-level bc-level-yes only-icon\">\n+                <span>${localize(compatStrings, 'supportsLong_yes')}</span>\n+              </abbr>\n+              ${added}`;\n+  }\n+  if (removed) {\n+    output = `<abbr title=\"${localize(compatStrings, 'supportsLong_no')}\"\n+              class=\"bc-level bc-level-no only-icon\">\n+              <span>${localize(compatStrings, 'supportsLong_no')}</span>\n+            </abbr>`;\n+    // We don't know when supported started\n+    if (typeof(added) === 'boolean' && added) {\n+      output += '?'\n+    } else { // We know when\n+      output += added\n+    }\n+    output += '&nbsp;— ';\n+    // We don't know when supported ended\n+    if (typeof(removed) === 'boolean' && removed) {\n+      output += '?'\n+    } else { // We know when\n+      output += removed;\n+    }\n+    // removed wins over partial\n+  } else if (partial) {\n+    output = `<abbr title=\"${localize(compatStrings, 'supportsLong_partial')}\"\n+              class=\"bc-level bc-level-partial only-icon\">\n+              <span>${localize(compatStrings, 'supportsLong_partial')}</span>\n+            </abbr>`;\n+    // Display \"Partial\" instead of \"Yes\", \"No\", or \"?\" if we have no version string\n+    if (typeof(added) !== 'string') {\n+      output += localize(compatStrings, 'supportsShort_partial');\n+    } else {\n+      output += added;\n+    }\n+  }\n+  return output;\n+}\n+\n+/*\n+Given the support information for a browser, this returns\n+a CSS class to apply to the table cell.\n+\n+`supportData` is a (or an array of) support_statement(s)\n+*/\n+function getSupportClass(supportInfo) {\n+  let cssClass = 'unknown';\n+\n+  if (Array.isArray(supportInfo)) {\n+    // the first entry should be the most relevant/recent and will be treated as \"the truth\"\n+    checkSupport(supportInfo[0].version_added,\n+                 supportInfo[0].version_removed,\n+                 supportInfo[0].partial_implementation);\n+  } else if (supportInfo) { // there is just one support statement\n+    checkSupport(supportInfo.version_added,\n+                 supportInfo.version_removed,\n+                 supportInfo.partial_implementation);\n+  } else { // this browser has no info, it's unknown\n+    return 'unknown';\n+  }\n+\n+  function checkSupport(added, removed, partial) {\n+    if (added === null) {\n+      cssClass = 'unknown';\n+    } else if (added) {\n+      cssClass = 'yes';\n+      if (removed) {\n+        cssClass = 'no';\n+      }\n+    } else {\n+      cssClass = 'no';\n+    }\n+    if (partial && !removed) {\n+      cssClass = 'partial';\n+    }\n+  }\n+\n+  return cssClass;\n+}\n+\n+/*\n+Generate the note for a browser flag or preference\n+First checks version_added and version_removed to create a string indicating when\n+a preference setting is present. Then creates a (browser specific) string\n+for either a preference flag or a compile flag.\n+\n+// TODO handle array of flags (rename flag to flags)\n+// see https://github.com/mdn/browser-compat-data/issues/546\n+\n+`supportData` is a support_statement\n+`browserId` is a compat_block browser ID\n+*/\n+function writeFlagsNote(supportData, browserId) {\n+  let output = '';\n+\n+  const firefoxPrefs = 'To change preferences in Firefox, visit about:config.';\n+  const chromePrefs = 'To change preferences in Chrome, visit chrome://flags.';\n+\n+  if (typeof(supportData.version_added) === 'string') {\n+    output = `From version ${supportData.version_added}`;\n+  }\n+\n+  if (typeof(supportData.version_removed) === 'string') {\n+    if (output) {\n+      output += ` until version ${supportData.version_removed} (exclusive)`;\n+    } else {\n+      output = `Until version ${supportData.version_removed} (exclusive)`;\n+    }\n+  }\n+\n+  let flagTextStart = 'This';\n+  if (output) {\n+    output += ':';\n+    flagTextStart = ' this';\n+  }\n+\n+  let flagText = `${flagTextStart} feature is behind the <code>${supportData.flag.name}</code>`;\n+\n+  // value_to_set is optional\n+  let valueToSet = '';\n+  if (supportData.flag.value_to_set) {\n+    valueToSet = ` (needs to be set to <code>${supportData.flag.value_to_set}</code>)`;\n+  }\n+\n+  if (supportData.flag.type === 'preference') {\n+    let prefSettings = '';\n+    switch (browserId) {\n+      case 'firefox':\n+      case 'firefox_android':\n+        prefSettings = firefoxPrefs;\n+      break;\n+      case 'chrome':\n+      case 'chrome_android':\n+        prefSettings = chromePrefs;\n+      break;\n+    }\n+    output += `${flagText} preference${valueToSet}. ${prefSettings}`;\n+  }\n+\n+  if (supportData.flag.type === 'compile_flag') {\n+    output += `${flagText} compile flag${valueToSet}.`;\n+  }\n+\n+  return output;\n+}\n+\n+/*\n+Generates icons for the main cell\n+`supportData` is a support_statement\n+\n+*/\n+function writeCellIcons(support) {\n+  let output = '<div class=\"bc-icons\">';\n+\n+  if (support.prefix) {\n+    output += writeIcon('prefix', support.prefix) + ' ';\n+  }\n+\n+  if (support.notes) {\n+    output += writeIcon('footnote') + ' ';\n+  }\n+\n+  if (support.alternative_name) {\n+    output += writeIcon('altname', support.alternative_name) + ' ';\n+  }\n+\n+  if (support.flag) {\n+    // TODO handle array of flags (rename flag to flags)\n+    // see https://github.com/mdn/browser-compat-data/issues/546\n+    output += writeIcon('disabled') + ' ';\n+  }\n+\n+  output += '</div>';\n+\n+  return output;\n+}\n+\n+/*\n+Create notes section\n+\n+`supportData` is a support_statement\n+`browserId` is a compat_block browser ID\n+\n+*/\n+function writeNotes(support, browserId) {\n+  let output = '<section class=\"bc-history\" aria-hidden=\"true\"><dl>';\n+\n+  if (Array.isArray(support)) {\n+    for (supportItem of support) {\n+      writeSingleNote(supportItem, browserId);\n+    }\n+  } else {\n+    writeSingleNote(support, browserId);\n+  }\n+\n+  function writeSingleNote(support) {\n+    let notes = [];\n+\n+    output += `<dt class=\"bc-supports-${getSupportClass(support)} bc-supports\">`;\n+    output += getCellString(support.version_added,\n+                            support.version_removed,\n+                            support.partial_implementation);\n+    output += writeCellIcons(support);\n+    output += '</dt>';\n+\n+    if (support.prefix) {\n+      notes.push({\n+        icon: writeIcon('prefix', support.prefix),\n+        text: localize(compatStrings, 'bc_icon_title_prefix').replace('$1$', support.prefix)\n+      });\n+    }\n+\n+    if (support.notes) {\n+      if (Array.isArray(support.notes)) {\n+        for (let note of support.notes) {\n+          notes.push({\n+            icon: writeIcon('footnote'),\n+            text: note\n+          });\n+        }\n+      } else {\n+        notes.push({\n+          icon: writeIcon('footnote'),\n+          text: support.notes\n+        });\n+      }\n+    }\n+\n+    if (support.alternative_name) {\n+      notes.push({\n+        icon: writeIcon('altname', support.alternative_name),\n+        text: localize(compatStrings, 'bc_icon_title_altname').replace('$1$', support.alternative_name)\n+      });\n+    }\n+\n+    if (support.flag) {\n+      // TODO handle array of flags (rename flag to flags)\n+      // see https://github.com/mdn/browser-compat-data/issues/546\n+      notes.push({\n+        icon: writeIcon('disabled'),\n+        text: writeFlagsNote(support, browserId)\n+      });\n+    }\n+\n+    if (notes.length > 0) {\n+      for (let note of notes) {\n+        output += '<dd>';\n+        output += note.icon;\n+        output += ' ' + note.text;\n+        output += '</dd>';\n+      }\n+    } else {\n+      output += '<dd></dd>';\n+    }\n+  }\n+\n+  output += '</dl></section>';\n+\n+  return output;\n+}\n+\n+/*\n+For a single row, write all the cells that contain support data.\n+(That is, every cell in the row except the first, which contains\n+an identifier for the row,  like \"Basic support\".\n+\n+*/\n+function writeCompatCells(supportData) {\n+  let output = '';\n+\n+  for (let browserNameKey of displayBrowers) {\n+    let needsNotes = false;\n+    let support = supportData[browserNameKey];\n+    let supportInfo = '';\n+    if (support) {\n+      if (Array.isArray(support)) {\n+        // Take first support data\n+        supportInfo += getCellString(support[0].version_added,\n+                                     support[0].version_removed,\n+                                     support[0].partial_implementation);\n+        needsNotes = true;\n+      } else {\n+        supportInfo += getCellString(support.version_added,\n+                                     support.version_removed,\n+                                     support.partial_implementation);\n+        if (support.notes || support.prefix || support.flag || support.alternative_name) {\n+          needsNotes = true;\n+        }\n+      }\n+    } else { // browsers are optional in the data, display them as \"?\" in our table\n+      supportInfo += getCellString(null);\n+    }\n+\n+    output += `<td class=\"bc-supports-${getSupportClass(support)} bc-browser-${browserNameKey}`;\n+\n+    if (needsNotes) {\n+      output += ' bc-has-history';\n+    }\n+\n+    output += `\">${supportInfo}`;\n+\n+    if (needsNotes) {\n+      output += writeCellIcons(support);\n+      output += writeNotes(support, browserNameKey);\n+    }\n+    output += '</td>';\n+  }\n+\n+  return output;\n+}\n+\n+function writeCompatFeatureRow() {\n+  let output = '';\n+  for (let row of features) {\n+    output += '<tr>';\n+    let feature = Object.keys(row).map((k) => row[k])[0];\n+    output += `<th scope=\"row\">${writeFeatureName(row, feature)}</th>`;\n+    output += `${writeCompatCells(feature.support)}</tr>`;\n+    output += '</tr>';\n+  }\n+  return output;\n+}\n+\n+function writeCompatBody() {\n+  let output = '<tbody>';\n+  output += writeCompatFeatureRow()\n+  output += '</tbody>';\n+  return output;\n+}\n+\n+function writeCompatPlatformsRow() {\n+  let output = '<tr class=\"bc-platforms\">';\n+  output += '<td></td>';\n+\n+  let platforms = ['desktop', 'mobile'];\n+  if (category === 'javascript') {\n+    platforms.push('server');\n+  }\n+  if (category === 'webextensions') {","path":"macros/CompatBeta.ejs","position":496,"original_position":496,"commit_id":"d5e5527e47cc5d3968097a10c63c466cfd4eb663","original_commit_id":"d5e5527e47cc5d3968097a10c63c466cfd4eb663","user":{"login":"stephaniehobson","id":854701,"avatar_url":"https://avatars0.githubusercontent.com/u/854701?v=4","gravatar_id":"","url":"https://api.github.com/users/stephaniehobson","html_url":"https://github.com/stephaniehobson","followers_url":"https://api.github.com/users/stephaniehobson/followers","following_url":"https://api.github.com/users/stephaniehobson/following{/other_user}","gists_url":"https://api.github.com/users/stephaniehobson/gists{/gist_id}","starred_url":"https://api.github.com/users/stephaniehobson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stephaniehobson/subscriptions","organizations_url":"https://api.github.com/users/stephaniehobson/orgs","repos_url":"https://api.github.com/users/stephaniehobson/repos","events_url":"https://api.github.com/users/stephaniehobson/events{/privacy}","received_events_url":"https://api.github.com/users/stephaniehobson/received_events","type":"User","site_admin":false},"body":"Can this switching on table type stuff be moved up to line 60ish where the other switching is done?","created_at":"2017-11-02T22:08:37Z","updated_at":"2017-11-02T22:17:39Z","html_url":"https://github.com/mdn/kumascript/pull/367#discussion_r148673639","pull_request_url":"https://api.github.com/repos/mdn/kumascript/pulls/367","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/mdn/kumascript/pulls/comments/148673639"},"html":{"href":"https://github.com/mdn/kumascript/pull/367#discussion_r148673639"},"pull_request":{"href":"https://api.github.com/repos/mdn/kumascript/pulls/367"}}},"pull_request":{"url":"https://api.github.com/repos/mdn/kumascript/pulls/367","id":148959695,"html_url":"https://github.com/mdn/kumascript/pull/367","diff_url":"https://github.com/mdn/kumascript/pull/367.diff","patch_url":"https://github.com/mdn/kumascript/pull/367.patch","issue_url":"https://api.github.com/repos/mdn/kumascript/issues/367","number":367,"state":"open","locked":false,"title":"Redesigned compat table macro","user":{"login":"Elchi3","id":349114,"avatar_url":"https://avatars2.githubusercontent.com/u/349114?v=4","gravatar_id":"","url":"https://api.github.com/users/Elchi3","html_url":"https://github.com/Elchi3","followers_url":"https://api.github.com/users/Elchi3/followers","following_url":"https://api.github.com/users/Elchi3/following{/other_user}","gists_url":"https://api.github.com/users/Elchi3/gists{/gist_id}","starred_url":"https://api.github.com/users/Elchi3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Elchi3/subscriptions","organizations_url":"https://api.github.com/users/Elchi3/orgs","repos_url":"https://api.github.com/users/Elchi3/repos","events_url":"https://api.github.com/users/Elchi3/events{/privacy}","received_events_url":"https://api.github.com/users/Elchi3/received_events","type":"User","site_admin":false},"body":"To test this, you will need:\r\n- Kuma with https://github.com/mozilla/kuma/pull/4436.\r\n- A waffle flag called `compat_data` enabled.\r\n- A test page with some compat data calls. (TBD, I'll post one here).\r\n\r\nHow this works:\r\n- Compat.ejs is mostly untouched and additionally loads CompatBeta.ejs, but all HTML that is generated by CompatBeta is hidden.\r\n- Only if the waffle flag is on, the CompatBeta output is shown, and the Compat output is hidden.\r\n- This allows us to do A/B or user testing.\r\n- Once we are done with testing, CompatBeta.ejs will be copied into Compat.ejs, and CompatBeta.ejs can be deleted. (On the pages, no macro calls need to be updated. Before, during and after the beta the {{compat(\"something.something\")}} calls are the same).\r\n\r\nTesting:\r\n- run tests with `make test-macros` in the kumascript dir, it might require a `make build-kumascript` in the kuma dir before.\r\n- The CompatBeta output is tested by test-compat.js and compat data fixtures.\r\n- I've added basic tests, we should expand this going forward. There are many cases in compat data.","created_at":"2017-10-26T14:58:04Z","updated_at":"2017-11-02T22:17:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"550e8e7237557baaff9596ca0c0551aadbe5ade0","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/mdn/kumascript/pulls/367/commits","review_comments_url":"https://api.github.com/repos/mdn/kumascript/pulls/367/comments","review_comment_url":"https://api.github.com/repos/mdn/kumascript/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mdn/kumascript/issues/367/comments","statuses_url":"https://api.github.com/repos/mdn/kumascript/statuses/d5e5527e47cc5d3968097a10c63c466cfd4eb663","head":{"label":"Elchi3:compat-redesigned","ref":"compat-redesigned","sha":"d5e5527e47cc5d3968097a10c63c466cfd4eb663","user":{"login":"Elchi3","id":349114,"avatar_url":"https://avatars2.githubusercontent.com/u/349114?v=4","gravatar_id":"","url":"https://api.github.com/users/Elchi3","html_url":"https://github.com/Elchi3","followers_url":"https://api.github.com/users/Elchi3/followers","following_url":"https://api.github.com/users/Elchi3/following{/other_user}","gists_url":"https://api.github.com/users/Elchi3/gists{/gist_id}","starred_url":"https://api.github.com/users/Elchi3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Elchi3/subscriptions","organizations_url":"https://api.github.com/users/Elchi3/orgs","repos_url":"https://api.github.com/users/Elchi3/repos","events_url":"https://api.github.com/users/Elchi3/events{/privacy}","received_events_url":"https://api.github.com/users/Elchi3/received_events","type":"User","site_admin":false},"repo":{"id":79361636,"name":"kumascript","full_name":"Elchi3/kumascript","owner":{"login":"Elchi3","id":349114,"avatar_url":"https://avatars2.githubusercontent.com/u/349114?v=4","gravatar_id":"","url":"https://api.github.com/users/Elchi3","html_url":"https://github.com/Elchi3","followers_url":"https://api.github.com/users/Elchi3/followers","following_url":"https://api.github.com/users/Elchi3/following{/other_user}","gists_url":"https://api.github.com/users/Elchi3/gists{/gist_id}","starred_url":"https://api.github.com/users/Elchi3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Elchi3/subscriptions","organizations_url":"https://api.github.com/users/Elchi3/orgs","repos_url":"https://api.github.com/users/Elchi3/repos","events_url":"https://api.github.com/users/Elchi3/events{/privacy}","received_events_url":"https://api.github.com/users/Elchi3/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Elchi3/kumascript","description":"Bringing scripting to the wiki bears.","fork":true,"url":"https://api.github.com/repos/Elchi3/kumascript","forks_url":"https://api.github.com/repos/Elchi3/kumascript/forks","keys_url":"https://api.github.com/repos/Elchi3/kumascript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Elchi3/kumascript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Elchi3/kumascript/teams","hooks_url":"https://api.github.com/repos/Elchi3/kumascript/hooks","issue_events_url":"https://api.github.com/repos/Elchi3/kumascript/issues/events{/number}","events_url":"https://api.github.com/repos/Elchi3/kumascript/events","assignees_url":"https://api.github.com/repos/Elchi3/kumascript/assignees{/user}","branches_url":"https://api.github.com/repos/Elchi3/kumascript/branches{/branch}","tags_url":"https://api.github.com/repos/Elchi3/kumascript/tags","blobs_url":"https://api.github.com/repos/Elchi3/kumascript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Elchi3/kumascript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Elchi3/kumascript/git/refs{/sha}","trees_url":"https://api.github.com/repos/Elchi3/kumascript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Elchi3/kumascript/statuses/{sha}","languages_url":"https://api.github.com/repos/Elchi3/kumascript/languages","stargazers_url":"https://api.github.com/repos/Elchi3/kumascript/stargazers","contributors_url":"https://api.github.com/repos/Elchi3/kumascript/contributors","subscribers_url":"https://api.github.com/repos/Elchi3/kumascript/subscribers","subscription_url":"https://api.github.com/repos/Elchi3/kumascript/subscription","commits_url":"https://api.github.com/repos/Elchi3/kumascript/commits{/sha}","git_commits_url":"https://api.github.com/repos/Elchi3/kumascript/git/commits{/sha}","comments_url":"https://api.github.com/repos/Elchi3/kumascript/comments{/number}","issue_comment_url":"https://api.github.com/repos/Elchi3/kumascript/issues/comments{/number}","contents_url":"https://api.github.com/repos/Elchi3/kumascript/contents/{+path}","compare_url":"https://api.github.com/repos/Elchi3/kumascript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Elchi3/kumascript/merges","archive_url":"https://api.github.com/repos/Elchi3/kumascript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Elchi3/kumascript/downloads","issues_url":"https://api.github.com/repos/Elchi3/kumascript/issues{/number}","pulls_url":"https://api.github.com/repos/Elchi3/kumascript/pulls{/number}","milestones_url":"https://api.github.com/repos/Elchi3/kumascript/milestones{/number}","notifications_url":"https://api.github.com/repos/Elchi3/kumascript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Elchi3/kumascript/labels{/name}","releases_url":"https://api.github.com/repos/Elchi3/kumascript/releases{/id}","deployments_url":"https://api.github.com/repos/Elchi3/kumascript/deployments","created_at":"2017-01-18T16:49:41Z","updated_at":"2017-01-18T16:49:44Z","pushed_at":"2017-11-01T20:09:42Z","git_url":"git://github.com/Elchi3/kumascript.git","ssh_url":"git@github.com:Elchi3/kumascript.git","clone_url":"https://github.com/Elchi3/kumascript.git","svn_url":"https://github.com/Elchi3/kumascript","homepage":"https://developer.mozilla.org/docs/Project:MDN/Kuma/Introduction_to_KumaScript","size":5809,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mdn:master","ref":"master","sha":"3bbee6b4ac7b80fb2a6d8860ca1f29c4f23587c2","user":{"login":"mdn","id":7565578,"avatar_url":"https://avatars0.githubusercontent.com/u/7565578?v=4","gravatar_id":"","url":"https://api.github.com/users/mdn","html_url":"https://github.com/mdn","followers_url":"https://api.github.com/users/mdn/followers","following_url":"https://api.github.com/users/mdn/following{/other_user}","gists_url":"https://api.github.com/users/mdn/gists{/gist_id}","starred_url":"https://api.github.com/users/mdn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdn/subscriptions","organizations_url":"https://api.github.com/users/mdn/orgs","repos_url":"https://api.github.com/users/mdn/repos","events_url":"https://api.github.com/users/mdn/events{/privacy}","received_events_url":"https://api.github.com/users/mdn/received_events","type":"Organization","site_admin":false},"repo":{"id":3311772,"name":"kumascript","full_name":"mdn/kumascript","owner":{"login":"mdn","id":7565578,"avatar_url":"https://avatars0.githubusercontent.com/u/7565578?v=4","gravatar_id":"","url":"https://api.github.com/users/mdn","html_url":"https://github.com/mdn","followers_url":"https://api.github.com/users/mdn/followers","following_url":"https://api.github.com/users/mdn/following{/other_user}","gists_url":"https://api.github.com/users/mdn/gists{/gist_id}","starred_url":"https://api.github.com/users/mdn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdn/subscriptions","organizations_url":"https://api.github.com/users/mdn/orgs","repos_url":"https://api.github.com/users/mdn/repos","events_url":"https://api.github.com/users/mdn/events{/privacy}","received_events_url":"https://api.github.com/users/mdn/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mdn/kumascript","description":"Bringing scripting to the wiki bears.","fork":false,"url":"https://api.github.com/repos/mdn/kumascript","forks_url":"https://api.github.com/repos/mdn/kumascript/forks","keys_url":"https://api.github.com/repos/mdn/kumascript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mdn/kumascript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mdn/kumascript/teams","hooks_url":"https://api.github.com/repos/mdn/kumascript/hooks","issue_events_url":"https://api.github.com/repos/mdn/kumascript/issues/events{/number}","events_url":"https://api.github.com/repos/mdn/kumascript/events","assignees_url":"https://api.github.com/repos/mdn/kumascript/assignees{/user}","branches_url":"https://api.github.com/repos/mdn/kumascript/branches{/branch}","tags_url":"https://api.github.com/repos/mdn/kumascript/tags","blobs_url":"https://api.github.com/repos/mdn/kumascript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mdn/kumascript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mdn/kumascript/git/refs{/sha}","trees_url":"https://api.github.com/repos/mdn/kumascript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mdn/kumascript/statuses/{sha}","languages_url":"https://api.github.com/repos/mdn/kumascript/languages","stargazers_url":"https://api.github.com/repos/mdn/kumascript/stargazers","contributors_url":"https://api.github.com/repos/mdn/kumascript/contributors","subscribers_url":"https://api.github.com/repos/mdn/kumascript/subscribers","subscription_url":"https://api.github.com/repos/mdn/kumascript/subscription","commits_url":"https://api.github.com/repos/mdn/kumascript/commits{/sha}","git_commits_url":"https://api.github.com/repos/mdn/kumascript/git/commits{/sha}","comments_url":"https://api.github.com/repos/mdn/kumascript/comments{/number}","issue_comment_url":"https://api.github.com/repos/mdn/kumascript/issues/comments{/number}","contents_url":"https://api.github.com/repos/mdn/kumascript/contents/{+path}","compare_url":"https://api.github.com/repos/mdn/kumascript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mdn/kumascript/merges","archive_url":"https://api.github.com/repos/mdn/kumascript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mdn/kumascript/downloads","issues_url":"https://api.github.com/repos/mdn/kumascript/issues{/number}","pulls_url":"https://api.github.com/repos/mdn/kumascript/pulls{/number}","milestones_url":"https://api.github.com/repos/mdn/kumascript/milestones{/number}","notifications_url":"https://api.github.com/repos/mdn/kumascript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mdn/kumascript/labels{/name}","releases_url":"https://api.github.com/repos/mdn/kumascript/releases{/id}","deployments_url":"https://api.github.com/repos/mdn/kumascript/deployments","created_at":"2012-01-31T04:12:12Z","updated_at":"2017-10-12T13:36:19Z","pushed_at":"2017-11-02T18:06:42Z","git_url":"git://github.com/mdn/kumascript.git","ssh_url":"git@github.com:mdn/kumascript.git","clone_url":"https://github.com/mdn/kumascript.git","svn_url":"https://github.com/mdn/kumascript","homepage":"https://developer.mozilla.org/docs/Project:MDN/Kuma/Introduction_to_KumaScript","size":5834,"stargazers_count":50,"watchers_count":50,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":66,"mirror_url":null,"archived":false,"open_issues_count":32,"forks":66,"open_issues":32,"watchers":50,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mdn/kumascript/pulls/367"},"html":{"href":"https://github.com/mdn/kumascript/pull/367"},"issue":{"href":"https://api.github.com/repos/mdn/kumascript/issues/367"},"comments":{"href":"https://api.github.com/repos/mdn/kumascript/issues/367/comments"},"review_comments":{"href":"https://api.github.com/repos/mdn/kumascript/pulls/367/comments"},"review_comment":{"href":"https://api.github.com/repos/mdn/kumascript/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mdn/kumascript/pulls/367/commits"},"statuses":{"href":"https://api.github.com/repos/mdn/kumascript/statuses/d5e5527e47cc5d3968097a10c63c466cfd4eb663"}},"author_association":"OWNER"}}
{"actor":{"display_login":"stephaniehobson"}}