)]}'
{
  "commit": "8099a9787ce5dc5984ed879a3bda47dc730a8e97",
  "tree": "4eafcf2c12800217e0366ea1db1fd7e8aa918af1",
  "parents": [
    "3fe02156777c9eff14a88826cf3aa495b5db3544"
  ],
  "author": {
    "name": "Joe Tsai",
    "email": "joetsai@digital-static.net",
    "time": "Thu Aug 03 17:35:09 2017"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Aug 03 17:35:09 2017"
  },
  "message": "Refactor option evaluation logic (#32)\n\nThe previous implementation of options had a single \"option\" type\r\nthat was used to represent either an Ignore, Comparer, or Transformer\r\nand all of the filters relevant to each of them.\r\n\r\nWe refactor this logic by creating a new type to represent each of\r\nthe fundamental options and filtering options. Construction of\r\nfiltered options is now as simple as wrapping the input option with\r\nthe appropriate filter type.\r\n\r\nEvaluation of filters now takes a top-down two-step approach where\r\n1. We start with the set of all options, and recursively apply the filters\r\nto create the \"applicable\" set S.\r\n2. We apply the set S.\r\n\r\nBoth steps are represented as the filter and apply methods on\r\neach of the core options.\r\n\r\nThis approach has the following advantages:\r\n* It is faster because the same filter that was applied to multiple\r\noptions now only needs to execute once.\r\n* It more closely matches the documented algorithm in cmp.Equal.\r\n* It allows for easier extension of the API to add new fundamental\r\noption types.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "177fc1004c25d3a399950f43871b5e7d19eefa13",
      "old_mode": 33188,
      "old_path": "cmp/compare.go",
      "new_id": "5527f0149761ed5500614f805c93cd5b7a7bd138",
      "new_mode": 33188,
      "new_path": "cmp/compare.go"
    },
    {
      "type": "modify",
      "old_id": "a0c003e5d3cec57a67015b56b4d855b2d552811e",
      "old_mode": 33188,
      "old_path": "cmp/compare_test.go",
      "new_id": "36a4ecf7d70379e1131b9b7102cb78bb135624f9",
      "new_mode": 33188,
      "new_path": "cmp/compare_test.go"
    },
    {
      "type": "modify",
      "old_id": "0498a55559b3dfe50b61cfa8c64f0fee858fc291",
      "old_mode": 33188,
      "old_path": "cmp/options.go",
      "new_id": "a4e159ac483ca0b8a457c2f018cf047a14369aa0",
      "new_mode": 33188,
      "new_path": "cmp/options.go"
    },
    {
      "type": "modify",
      "old_id": "2bde79844d34cad409084ca1486d10357b3a5023",
      "old_mode": 33188,
      "old_path": "cmp/options_test.go",
      "new_id": "009b524afb2a2000f02646a1e127204ecce9c1e6",
      "new_mode": 33188,
      "new_path": "cmp/options_test.go"
    }
  ]
}
