)]}'
{
  "commit": "9a29b384b84fac20f3c417ff9dcf3d461627e185",
  "tree": "f872126e803a9b6452a18050cc4b701fd9b12da2",
  "parents": [
    "51712fc87ec0487bd471f24b2986a367847d24e9"
  ],
  "author": {
    "name": "Matthias Andreas Benkard",
    "email": "code@mail.matthias.benkard.de",
    "time": "Mon Jul 13 21:33:43 2026 +0200"
  },
  "committer": {
    "name": "Matthias Andreas Benkard",
    "email": "code@mail.matthias.benkard.de",
    "time": "Mon Jul 13 21:33:43 2026 +0200"
  },
  "message": "Support range, renumbering, and punctuation commands\n\nExtend the parser and applier for several command families that were\nfalling back to UnbekannterBefehl:\n\n- Range/coordinated Aufhebung (\"Die Nummern 1 bis 3 werden aufgehoben.\",\n  \"Die Absätze 4 und 5 werden aufgehoben.\") via bis-range expansion in\n  StellenParser.parseMehrfach and ausStellen.\n- Range renumbering without \"zu den\" and for Nummern/Buchstaben (\"Die\n  bisherigen Nummern 4 bis 6 werden die Nummern 8 bis 10.\"); single\n  renumbering now also covers Nummer/Buchstabe and \"Die bisherige\".\n- §-range Neufassung (\"Die §§ 52 bis 56 werden wie folgt gefasst: …\"),\n  splitting the quoted block at \"§ N\" boundaries.\n- \"Der Wortlaut wird Absatz N.\" — a new WortlautZuAbsatz command that\n  numbers the previously unnumbered body.\n- Word-to-punctuation replacement (\"… das Wort „oder\" am Ende durch ein\n  Komma ersetzt\") and comma+words insert/replace variants.\n\nStellenParser gains plural component words (Absätze/Sätze/Nummern/\nBuchstaben) and bis-range expansion. Cuts UnbekannterBefehl further:\nGEG 36-\u003e21, IfSG 7-\u003e3.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\nChange-Id: I4972d4eb1d6062521a55710c1f23822e8e22b0c4\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6b7c093d5c9a77e0c80ca6a016eef302f576a3f7",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/aenderung/Aenderungsbefehl.java",
      "new_id": "a2db382169bb4b386882541383aa28520fde318f",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/Aenderungsbefehl.java"
    },
    {
      "type": "modify",
      "old_id": "0ef0973053a87a9eb90da2f260ab8d2fee633c0d",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/BefehlErkenner.java",
      "new_id": "80f664ebf379b9dc6bd65de5c1819d277876eacb",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/BefehlErkenner.java"
    },
    {
      "type": "modify",
      "old_id": "db7633ef8bd44ef799c8fa2616a3cf933beec10c",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/StellenParser.java",
      "new_id": "2b2b80eab54400dc05fd8d75258a4685c54deb41",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/StellenParser.java"
    },
    {
      "type": "modify",
      "old_id": "2c9a33e1521c18d8fbcef4b061a3c5283778955a",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/anwendung/BefehlAnwender.java",
      "new_id": "94c5db1be9a436c81ba9b1d0e310747798762199",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/anwendung/BefehlAnwender.java"
    },
    {
      "type": "modify",
      "old_id": "ba0dd05abc3274034c408d0f14e74c0f4d1f0a50",
      "old_mode": 33188,
      "old_path": "src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java",
      "new_id": "2d0db8a92b62d6e765cde8e96067d7c8f989bd01",
      "new_mode": 33188,
      "new_path": "src/test/java/eu/mulk/aendggner/aenderung/parse/BefehlErkennerTest.java"
    },
    {
      "type": "modify",
      "old_id": "a854632a152c27c614a694af4f8dc08f69671985",
      "old_mode": 33188,
      "old_path": "src/test/java/eu/mulk/aendggner/anwendung/BefehlAnwenderTest.java",
      "new_id": "8a1b1e094a5938be2128b633d2e235b1a34e9351",
      "new_mode": 33188,
      "new_path": "src/test/java/eu/mulk/aendggner/anwendung/BefehlAnwenderTest.java"
    }
  ]
}
