Coverage for src/qdrant_loader/core/chunking/strategy/code/metadata/entities.py: 100%
12 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
1from __future__ import annotations
3import re
6def extract_entities(text: str) -> list[str]:
7 entities: list[str] = []
9 class_pattern = r"\b(?:class|interface|struct|enum)\s+([A-Z][a-zA-Z0-9_]*)"
10 entities.extend(re.findall(class_pattern, text))
12 function_patterns = [
13 r"\bdef\s+([a-zA-Z_][a-zA-Z0-9_]*)",
14 r"\bfunction\s+([a-zA-Z_][a-zA-Z0-9_]*)",
15 r"\b(?:public|private|protected)?\s*(?:static\s+)?[a-zA-Z_][a-zA-Z0-9_<>]*\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*\(",
16 ]
17 for pattern in function_patterns:
18 entities.extend(re.findall(pattern, text))
20 constant_pattern = r"\b([A-Z][A-Z0-9_]{2,})\b"
21 entities.extend(re.findall(constant_pattern, text))
23 return list(set(entities))