Spaces:
Running
Running
Download src/maptoposter/layers.py from isaachwf/MapToPoster: direct link, hf CLI and curl.
- Browser
- Download file 2.11 kB
-
https://huggingface.co/spaces/isaachwf/MapToPoster/resolve/main/src/maptoposter/layers.py
- Command line
-
hf download hf://spaces/isaachwf/MapToPoster/src/maptoposter/layers.py
-
curl -L -o layers.py https://huggingface.co/spaces/isaachwf/MapToPoster/resolve/main/src/maptoposter/layers.py
2.11 kB
| """Map layer labels and conversion helpers.""" | |
| from __future__ import annotations | |
| from dataclasses import dataclass | |
| class LayerDefinition: | |
| key: str | |
| en: str | |
| cn: str | |
| LAYERS: tuple[LayerDefinition, ...] = ( | |
| LayerDefinition("motorway", "Motorway", "高速公路"), | |
| LayerDefinition("primary", "Primary Roads", "主干道"), | |
| LayerDefinition("secondary", "Secondary Roads", "次干道"), | |
| LayerDefinition("water", "Water", "水域"), | |
| LayerDefinition("parks", "Parks", "公园"), | |
| ) | |
| LAYER_KEYS = [layer.key for layer in LAYERS] | |
| LAYERS_EN = [layer.en for layer in LAYERS] | |
| LAYERS_CN = [layer.cn for layer in LAYERS] | |
| _LABEL_TO_KEY = {label: layer.key for layer in LAYERS for label in (layer.en, layer.cn)} | |
| _KEY_TO_LABEL = { | |
| "en": {layer.key: layer.en for layer in LAYERS}, | |
| "cn": {layer.key: layer.cn for layer in LAYERS}, | |
| } | |
| def labels_for_language(lang: str) -> list[str]: | |
| """Return layer labels for a UI language code.""" | |
| return LAYERS_EN if lang == "en" else LAYERS_CN | |
| def selected_labels_to_keys(selected_labels: list[str] | tuple[str, ...] | None) -> list[str]: | |
| """Convert localized UI layer labels to stable layer keys.""" | |
| if not selected_labels: | |
| return [] | |
| return [_LABEL_TO_KEY[label] for label in selected_labels if label in _LABEL_TO_KEY] | |
| def keys_to_labels(keys: list[str] | tuple[str, ...], lang: str) -> list[str]: | |
| """Convert stable layer keys to localized UI labels.""" | |
| labels = _KEY_TO_LABEL["en" if lang == "en" else "cn"] | |
| return [labels[key] for key in keys if key in labels] | |
| def selected_layer_flags(selected_labels: list[str] | tuple[str, ...] | None) -> dict[str, bool]: | |
| """Return render keyword flags for selected localized layer labels.""" | |
| selected_keys = set(selected_labels_to_keys(selected_labels)) | |
| return { | |
| "show_motorway": "motorway" in selected_keys, | |
| "show_primary": "primary" in selected_keys, | |
| "show_secondary": "secondary" in selected_keys, | |
| "show_water": "water" in selected_keys, | |
| "show_parks": "parks" in selected_keys, | |
| } | |