svg-processor/processing/prefix_resolver.py
2025-05-16 18:15:31 +04:00

41 lines
1.6 KiB
Python

import logging
from typing import Tuple, Optional, List, Dict, Any
from . import element_mapper
logger = logging.getLogger(__name__)
class PrefixResolver:
"""Resolve prefixes for element mapping"""
@staticmethod
def get_element_prefix(element_label: str) -> str:
"""Extract prefix from element label"""
if element_label and "_" in element_label:
return element_label.split("_")[0]
return ""
@staticmethod
def determine_prefix_to_use(element_candidate_prefix: str, group_prefix: str,
element_mappings: List[Dict[str, Any]], svg_type: str) -> Tuple[Optional[str], str]:
"""Determine which prefix to use for mapping lookup
Group prefixes always take precedence over element prefixes.
"""
# First check group prefix since it should take precedence
if group_prefix:
_, group_match_type = element_mapper.find_mapping_for_element(
svg_type, group_prefix, element_mappings, debug=False
)
if group_match_type == 'exact':
return group_prefix, "group"
# Only check element prefix if no valid group prefix exists
if element_candidate_prefix:
_, element_match_type = element_mapper.find_mapping_for_element(
svg_type, element_candidate_prefix, element_mappings, debug=False
)
if element_match_type == 'exact':
return element_candidate_prefix, "element"
return None, "none"