Coverage for src/jsoncrack_for_sphinx/utils/types.py: 100%

32 statements  

« prev     ^ index     » next       coverage.py v7.10.0, created at 2025-07-24 22:26 +0000

1""" 

2Enums and basic types for configuration. 

3""" 

4 

5from enum import Enum 

6 

7 

8class RenderMode: 

9 """Render mode configuration classes.""" 

10 

11 class OnClick: 

12 """Click to load mode - loads when user clicks the button.""" 

13 

14 def __init__(self) -> None: 

15 self.mode = "onclick" 

16 

17 def __repr__(self) -> str: 

18 return "RenderMode.OnClick()" 

19 

20 class OnLoad: 

21 """Immediate load mode - loads when page loads.""" 

22 

23 def __init__(self) -> None: 

24 self.mode = "onload" 

25 

26 def __repr__(self) -> str: 

27 return "RenderMode.OnLoad()" 

28 

29 class OnScreen: 

30 """Viewport load mode - loads when element becomes visible.""" 

31 

32 def __init__(self, threshold: float = 0.1, margin: str = "50px") -> None: 

33 """ 

34 Args: 

35 threshold: Visibility threshold (0.0-1.0) 

36 margin: Root margin for early loading (e.g., '50px') 

37 """ 

38 self.mode = "onscreen" 

39 self.threshold = threshold 

40 self.margin = margin 

41 

42 def __repr__(self) -> str: 

43 return ( 

44 f"RenderMode.OnScreen(threshold={self.threshold}, " 

45 f"margin='{self.margin}')" 

46 ) 

47 

48 

49class Directions(Enum): 

50 """JSONCrack visualization directions.""" 

51 

52 TOP = "TOP" 

53 RIGHT = "RIGHT" 

54 DOWN = "DOWN" 

55 LEFT = "LEFT" 

56 

57 

58class Theme(Enum): 

59 """Theme options.""" 

60 

61 LIGHT = "light" 

62 DARK = "dark" 

63 AUTO = None # Auto-detect from page 

64 

65 

66class PathSeparator(Enum): 

67 """Path separator options for schema file search.""" 

68 

69 DOT = "." # Use dots: Class.method.schema.json 

70 SLASH = "/" # Use slashes: Class/method.schema.json 

71 NONE = "none" # No separator: Classmethod.schema.json