|
44 | 44 | from formatters.predocs_parser import parse_predocs_string |
45 | 45 |
|
46 | 46 |
|
47 | | -def create_safe_filename(beteckning: str, preserve_selex_tags: bool = False) -> str: |
| 47 | +def create_id_slug(beteckning_sortable: str) -> str: |
48 | 48 | """ |
49 | | - Create a safe filename from beteckning. |
| 49 | + Create an ID slug from beteckningSortable. |
| 50 | +
|
| 51 | + Converts beteckningSortable (e.g., "2024:1000") to a slug format |
| 52 | + with "sfs-" prefix by replacing colons and other special characters with hyphens. |
50 | 53 |
|
51 | 54 | Args: |
52 | | - beteckning: Document beteckning (e.g., "2024:1000") |
| 55 | + beteckning_sortable: Document beteckning in sortable format (e.g., "2024:1000") |
| 56 | +
|
| 57 | + Returns: |
| 58 | + str: ID slug with sfs- prefix (e.g., "sfs-2024-1000") |
| 59 | + """ |
| 60 | + clean_slug = re.sub(r'[^\w\-]', '-', beteckning_sortable) |
| 61 | + return f"sfs-{clean_slug}" |
| 62 | + |
| 63 | + |
| 64 | +def create_safe_filename(id_slug: str, preserve_selex_tags: bool = False) -> str: |
| 65 | + """ |
| 66 | + Create a safe filename from ID slug. |
| 67 | +
|
| 68 | + Args: |
| 69 | + id_slug: Document ID slug (e.g., "sfs-2024-1000") |
53 | 70 | preserve_selex_tags: Whether this is for md-markers mode |
54 | 71 |
|
55 | 72 | Returns: |
56 | 73 | str: Safe filename (e.g., "sfs-2024-1000.md" or "sfs-2024-1000-markers.md") |
57 | 74 | """ |
58 | | - safe_beteckning = re.sub(r'[^\w\-]', '-', beteckning) |
59 | 75 | if preserve_selex_tags: |
60 | | - return f"sfs-{safe_beteckning}-markers.md" |
| 76 | + return f"{id_slug}-markers.md" |
61 | 77 | else: |
62 | | - return f"sfs-{safe_beteckning}.md" |
| 78 | + return f"{id_slug}.md" |
63 | 79 |
|
64 | 80 |
|
65 | 81 | def determine_output_path(data: Dict[str, Any], output_dir: Path, year_as_folder: bool = True) -> Path: |
@@ -207,8 +223,12 @@ def _create_markdown_document(data: Dict[str, Any], output_path: Path, git_mode: |
207 | 223 | beteckning = data.get('beteckning') |
208 | 224 | if not beteckning: |
209 | 225 | raise ValueError("Beteckning saknas i dokumentdata") |
210 | | - |
211 | | - safe_filename = create_safe_filename(beteckning, preserve_selex_tags) |
| 226 | + |
| 227 | + # Get beteckningSortable and create ID slug for filename |
| 228 | + beteckning_sortable = data.get('beteckningSortable', beteckning) |
| 229 | + id_slug = create_id_slug(beteckning_sortable) |
| 230 | + |
| 231 | + safe_filename = create_safe_filename(id_slug, preserve_selex_tags) |
212 | 232 | output_file = output_path / safe_filename |
213 | 233 |
|
214 | 234 | # Get basic markdown content |
@@ -348,8 +368,13 @@ def convert_to_markdown(data: Dict[str, Any], fetch_predocs_from_api: bool = Fal |
348 | 368 | # Extract amendments |
349 | 369 | amendments = extract_amendments(data.get('andringsforfattningar', [])) |
350 | 370 |
|
351 | | - # Create YAML front matter |
| 371 | + # Get beteckningSortable and create ID slug |
| 372 | + beteckning_sortable = data.get('beteckningSortable', beteckning) |
| 373 | + id_slug = create_id_slug(beteckning_sortable) |
| 374 | + |
| 375 | + # Create YAML front matter with id at the top |
352 | 376 | yaml_front_matter = f"""--- |
| 377 | +id: {format_yaml_value(id_slug)} |
353 | 378 | beteckning: {format_yaml_value(beteckning)} |
354 | 379 | rubrik: {format_yaml_value(rubrik)} |
355 | 380 | departement: {format_yaml_value(organisation)} |
|
0 commit comments