)]}'
{
  "commit": "3ef81ccf3f8b021f4eea6a1dcdb281b4e5028370",
  "tree": "58d314e57ad69d537e2b823b0e8a8a49ec9e8cd7",
  "parents": [
    "749cff7b9d2ea0470d043700751f5570aa2cd720"
  ],
  "author": {
    "name": "Lucas De Marchi",
    "email": "lucas.demarchi@profusion.mobi",
    "time": "Tue Jun 14 01:19:14 2011 -0300"
  },
  "committer": {
    "name": "Lucas De Marchi",
    "email": "lucas.demarchi@profusion.mobi",
    "time": "Tue Jun 14 01:58:40 2011 -0300"
  },
  "message": "Fix replacement of same word in one line\n\nWhen one line had the same mispelled word, codespell was incorrectly\nfixing that line, even introducing new typos. This was because the list\nof misspelled words is not updated according to the fixes.\n\nInstead of always updating this list and making the loop more difficult,\nwe do as following:\n\n- Cache the words that are fixed in a certain line\n- Fix all cases of a misspelled in each line (this means that\n  interactive mode will fix all cases with the same suggestions... not\n  awesome, but simplifies a lot the code)\n- Use a regex with re.sub() instead of the naive string.replace()\n  function. This eliminates dumb cases of matching partial words and\n  modifying them. Eg.: addres-\u003eaddress would modify addressable to\n  addresssable.\n- Skip words that were already fixed by previous iteration.\n\nThanks to Bruce Cran \u003cbruce@cran.org.uk\u003e for reporting this issue.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2aac706339cedce9af8c9c1c76b0486afd6f8c30",
      "old_mode": 33261,
      "old_path": "codespell.py",
      "new_id": "18560b5524e0122345de16413a6fddfc63978982",
      "new_mode": 33261,
      "new_path": "codespell.py"
    }
  ]
}
