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

1from __future__ import annotations 

2 

3import re 

4 

5 

6def extract_entities(text: str) -> list[str]: 

7 entities: list[str] = [] 

8 

9 class_pattern = r"\b(?:class|interface|struct|enum)\s+([A-Z][a-zA-Z0-9_]*)" 

10 entities.extend(re.findall(class_pattern, text)) 

11 

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)) 

19 

20 constant_pattern = r"\b([A-Z][A-Z0-9_]{2,})\b" 

21 entities.extend(re.findall(constant_pattern, text)) 

22 

23 return list(set(entities))