Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/markdown_it/helpers/parse_link_label.py: 100%
26 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:15 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:15 +0000
1"""
2Parse link label
4this function assumes that first character ("[") already matches
5returns the end of the label
7"""
8from markdown_it.rules_inline import StateInline
11def parseLinkLabel(state: StateInline, start: int, disableNested: bool = False) -> int:
12 labelEnd = -1
13 oldPos = state.pos
14 found = False
16 state.pos = start + 1
17 level = 1
19 while state.pos < state.posMax:
20 marker = state.src[state.pos]
21 if marker == "]":
22 level -= 1
23 if level == 0:
24 found = True
25 break
27 prevPos = state.pos
28 state.md.inline.skipToken(state)
29 if marker == "[":
30 if prevPos == state.pos - 1:
31 # increase level if we find text `[`,
32 # which is not a part of any token
33 level += 1
34 elif disableNested:
35 state.pos = oldPos
36 return -1
37 if found:
38 labelEnd = state.pos
40 # restore old state
41 state.pos = oldPos
43 return labelEnd