Skip to content

Commit a2366e9

Browse files
marcarlclaude
andcommitted
Add id slug field to frontmatter and update filenames
- Add create_id_slug() function to generate clean slug from beteckningSortable - Add 'id' field at the top of YAML frontmatter (format: sfs-YYYY-NNN) - Update filenames to use id slug instead of beteckning - Standard files: sfs-2024-1000.md - Markers files: sfs-2024-1000-markers.md - Update frontmatter sorting to prioritize 'id' field first - ID is generated from beteckningSortable, falling back to beteckning if needed 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent bd64c16 commit a2366e9

2 files changed

Lines changed: 35 additions & 9 deletions

File tree

formatters/sort_frontmatter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ def sort_frontmatter_properties(frontmatter_content: str) -> str:
122122
"""
123123
# Definiera den önskade ordningen för properties
124124
PROPERTY_ORDER = [
125+
'id',
125126
'beteckning',
126127
'rubrik',
127128
'normtyp',

sfs_processor.py

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,38 @@
4444
from formatters.predocs_parser import parse_predocs_string
4545

4646

47-
def create_safe_filename(beteckning: str, preserve_selex_tags: bool = False) -> str:
47+
def create_id_slug(beteckning_sortable: str) -> str:
4848
"""
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.
5053
5154
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")
5370
preserve_selex_tags: Whether this is for md-markers mode
5471
5572
Returns:
5673
str: Safe filename (e.g., "sfs-2024-1000.md" or "sfs-2024-1000-markers.md")
5774
"""
58-
safe_beteckning = re.sub(r'[^\w\-]', '-', beteckning)
5975
if preserve_selex_tags:
60-
return f"sfs-{safe_beteckning}-markers.md"
76+
return f"{id_slug}-markers.md"
6177
else:
62-
return f"sfs-{safe_beteckning}.md"
78+
return f"{id_slug}.md"
6379

6480

6581
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:
207223
beteckning = data.get('beteckning')
208224
if not beteckning:
209225
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)
212232
output_file = output_path / safe_filename
213233

214234
# Get basic markdown content
@@ -348,8 +368,13 @@ def convert_to_markdown(data: Dict[str, Any], fetch_predocs_from_api: bool = Fal
348368
# Extract amendments
349369
amendments = extract_amendments(data.get('andringsforfattningar', []))
350370

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
352376
yaml_front_matter = f"""---
377+
id: {format_yaml_value(id_slug)}
353378
beteckning: {format_yaml_value(beteckning)}
354379
rubrik: {format_yaml_value(rubrik)}
355380
departement: {format_yaml_value(organisation)}

0 commit comments

Comments
 (0)