Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/markdown_it/rules_block/hr.py: 100%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

35 statements  

1"""Horizontal rule 

2 

3At least 3 of these characters on a line * - _ 

4""" 

5 

6import logging 

7 

8from ..common.utils import isStrSpace 

9from .state_block import StateBlock 

10 

11LOGGER = logging.getLogger(__name__) 

12 

13 

14def hr(state: StateBlock, startLine: int, endLine: int, silent: bool) -> bool: 

15 LOGGER.debug("entering hr: %s, %s, %s, %s", state, startLine, endLine, silent) 

16 

17 pos = state.bMarks[startLine] + state.tShift[startLine] 

18 maximum = state.eMarks[startLine] 

19 

20 if state.is_code_block(startLine): 

21 return False 

22 

23 try: 

24 marker = state.src[pos] 

25 except IndexError: 

26 return False 

27 pos += 1 

28 

29 # Check hr marker 

30 if marker not in ("*", "-", "_"): 

31 return False 

32 

33 # markers can be mixed with spaces, but there should be at least 3 of them 

34 

35 cnt = 1 

36 while pos < maximum: 

37 ch = state.src[pos] 

38 pos += 1 

39 if ch != marker and not isStrSpace(ch): 

40 return False 

41 if ch == marker: 

42 cnt += 1 

43 

44 if cnt < 3: 

45 return False 

46 

47 if silent: 

48 return True 

49 

50 state.line = startLine + 1 

51 

52 token = state.push("hr", "hr", 0) 

53 token.map = [startLine, state.line] 

54 token.markup = marker * (cnt + 1) 

55 

56 return True