From 3fae06f53fa28dbecaa2fd6454c96a180e0802b8 Mon Sep 17 00:00:00 2001 From: David Kaasen Date: Sat, 24 Jan 2026 05:19:04 +0100 Subject: [PATCH] Fikset (kanskje) json-formatet for Mapcrafter. --- src/mapcrafter_exporter/exporter.py | 30 ++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/mapcrafter_exporter/exporter.py b/src/mapcrafter_exporter/exporter.py index 78a10ec..33202f9 100644 --- a/src/mapcrafter_exporter/exporter.py +++ b/src/mapcrafter_exporter/exporter.py @@ -1,5 +1,6 @@ import json from pathlib import Path +import re from lib_marker import Area, Point, Track from marker_sets import WORLDS @@ -19,30 +20,45 @@ def generate_mapcrafter_output(output_dir: Path): ensure_ascii=False, ) + # Fjern "[" "]" rundt teksten. + exported_markers_json = re.sub( + r'^\s*\[\s*(.*\})\s*\]\s*$', + r'\1', + exported_markers_json, + flags=re.DOTALL) + template = template.replace('"@EXPORTED_MARKERS@"', exported_markers_json) with (output_dir / "markers.js").open("w", encoding="utf-8") as f: f.write(template) +def get_list_entry(lst, name): + for dings in lst: + if 'id' in dings and dings['id'] == name: + return dings + return None -def convert_data_to_mapcrafter_structure() -> dict: - result = {} +def convert_data_to_mapcrafter_structure() -> list: + result = [] for world_name, world_marker_sets in WORLDS.items(): for marker_set in world_marker_sets: # https://mapcrafter.readthedocs.io/en/latest/markers.html#manually-specifying-markers - if marker_set.name not in result: - result[marker_set.name] = { - "id": marker_set.name.lower().replace(" ", "-"), + id = marker_set.name.lower().replace(" ", "-") + result_entry = get_list_entry(result, id) + if not result_entry: + result_entry = { + "id": id, "name": marker_set.name, "showDefault": marker_set.show_by_default, "markers": {}, } + result.append(result_entry) - result[marker_set.name]["markers"][world_name] = [] + result_entry["markers"][world_name] = [] for marker in marker_set.markers: if isinstance(marker, Point): - result[marker_set.name]["markers"][world_name].append( + result_entry["markers"][world_name].append( {"pos": [marker.x, marker.y, marker.z], "title": marker.name} )