sokoban-elements 0.2.1

Parsing and writing Sokoban, Hexoban, Trioban and Octoban file formats.
Documentation
{
  "title": "Mixed collection",
  "author": "ZOMG! Collection author",
  "created_at": "2022-07-01  01:05:06",
  "updated_at": "2022-07-02  09:48:22",
  "email": "",
  "url": "",
  "notes": "Random collection notes...",
  "puzzles": [
    {
      "board": {
        "tessellation": "Sokoban",
        "board": "----#####----------\n----#---#----------\n----#$--#----------\n--###--$##---------\n--#--$-$-#---------\n###-#-##-#---######\n#---#-##-#####--..#\n#-$--$----------..#\n#####-###-#@##--..#\n----#-----#########\n----#######--------"
      },
      "title": "Sokoban Level 1",
      "author": "Thinking Rabbit",
      "notes": "Level notes\n\nTime: 00:01:00",
      "saved_games": [
        {
          "tessellation": "Sokoban",
          "moves": "ullluuuLUllDlldddrRRRRRRRRRRRRlllllllllllllulldRRRRRRRRRRRRRdrUllllllluuululldDDuulldddrRRRRRRRRRRuRRlDllllllluuulLulDDDuulldddrRRRRRRRRRRdRRlUllllllluuulluuurDDluulDDDDDuulldddrRRRRRRRRRRRllllllluuuLLulDDDuulldddrRRRRRRRRRRuRDldR",
          "title": "First Sokoban save game",
          "solved_by": "",
          "notes": "",
          "current_move_idx": 0
        },
        {
          "tessellation": "Sokoban",
          "moves": "ullluuuLUllDlldddrRRRRRRRRRRRRlllllllllllllulldRRRRRRRRRRRRRdrUllllllluuululldDDuulldddrRRRRRRRRRRuRRlDllllllluuulLulDDDuulldddrRRRRRRRRRRdRRlUllllllluuulluuurDDluulDDDDDuulldddrRRRRRRRRRRRllllllluuuLLulDDDuulldddrRRRRRRRRRRuRDldR",
          "title": "Second Sokoban save game",
          "solved_by": "ZOMG! SavedGame solver",
          "notes": "",
          "current_move_idx": 0
        },
        {
          "tessellation": "Sokoban",
          "moves": "[]ulll[uuululldlldddrrrrrrrrrrrrrlllllllllllllulldrrrrrrrrrrrrrdrullllllluuulu]lldDDuulldddrRRRRRRRRRRuRRlDllllllluuulLulDDDuulldddrRRRRRRRRRRdRRlUllllllluuulluuurDDluulDDDDDuulldddrRRRRRRRRRRRllllllluuuLLulDDDuulldddrRRRRRRRRRRuRDldR",
          "title": "Third Sokoban save game",
          "solved_by": "ZOMG! SavedGame solver",
          "notes": "",
          "current_move_idx": 0
        }
      ],
      "sokoban_plus": null
    },
    {
      "board": {
        "tessellation": "Sokoban",
        "board": "-----------########\n-----------#--....#\n############--....#\n#----#--$-$---....#\n#-$$$#$--$-#--....#\n#--$-----$-#--....#\n#-$$-#$-$-$########\n#--$-#-----#-------\n##-#########-------\n#----#----#--------\n#-----$---##-------\n#--$$#$$--@#-------\n#----#----##-------\n###########--------"
      },
      "title": "Sokoban level 3",
      "author": "Thinking Rabbit",
      "notes": "",
      "saved_games": [],
      "sokoban_plus": {
        "boxorder": [
          1,
          2,
          3,
          4,
          5
        ],
        "goalorder": [
          3,
          4,
          5,
          2,
          1
        ]
      }
    },
    {
      "board": {
        "tessellation": "Hexoban",
        "board": "---------#-#-------\n--------#-@-#------\n-------#-.-$-#-----\n------#-$-#---#----\n---#-#-.---.-$-#-#-\n--#-----#---#-----#\n---#---#-#---#---#-\n--#---------------#\n---#-#-#-#-#---#-#-\n------------#-#----"
      },
      "title": "A",
      "author": "Aymeric du Peloux (Hexocet)",
      "notes": "Difficulty: 5\nDate: Jan.2002",
      "saved_games": [],
      "sokoban_plus": null
    }
  ]
}