Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib /
python3 /
dist-packages /
markdown_it /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-xr-x
2025-05-13 15:07
cli
[ DIR ]
drwxr-xr-x
2025-05-13 15:07
common
[ DIR ]
drwxr-xr-x
2025-05-13 15:07
helpers
[ DIR ]
drwxr-xr-x
2025-05-13 15:07
presets
[ DIR ]
drwxr-xr-x
2025-05-13 15:07
rules_block
[ DIR ]
drwxr-xr-x
2025-05-13 15:07
rules_core
[ DIR ]
drwxr-xr-x
2025-05-13 15:07
rules_inline
[ DIR ]
drwxr-xr-x
2025-05-13 15:07
__init__.py
113
B
-rw-r--r--
2023-03-31 10:50
_compat.py
248
B
-rw-r--r--
2023-03-31 10:50
_punycode.py
2.26
KB
-rw-r--r--
2023-03-31 10:50
main.py
11.94
KB
-rw-r--r--
2023-03-31 10:50
parser_block.py
3.58
KB
-rw-r--r--
2023-03-31 10:50
parser_core.py
835
B
-rw-r--r--
2023-03-31 10:50
parser_inline.py
4.03
KB
-rw-r--r--
2023-03-31 10:50
port.yaml
2.46
KB
-rw-r--r--
2023-03-31 10:50
py.typed
26
B
-rw-r--r--
2023-03-31 10:50
renderer.py
9.81
KB
-rw-r--r--
2023-03-31 10:50
ruler.py
8.18
KB
-rw-r--r--
2023-03-31 10:50
token.py
6.23
KB
-rw-r--r--
2023-03-31 10:50
tree.py
10.79
KB
-rw-r--r--
2023-03-31 10:50
utils.py
3.19
KB
-rw-r--r--
2023-03-31 10:50
Save
Rename
"""Block-level tokenizer.""" from __future__ import annotations import logging from . import rules_block from .ruler import Ruler from .rules_block.state_block import StateBlock from .token import Token LOGGER = logging.getLogger(__name__) _rules: list[tuple] = [ # First 2 params - rule name & source. Secondary array - list of rules, # which can be terminated by this one. ("table", rules_block.table, ["paragraph", "reference"]), ("code", rules_block.code), ("fence", rules_block.fence, ["paragraph", "reference", "blockquote", "list"]), ( "blockquote", rules_block.blockquote, ["paragraph", "reference", "blockquote", "list"], ), ("hr", rules_block.hr, ["paragraph", "reference", "blockquote", "list"]), ("list", rules_block.list_block, ["paragraph", "reference", "blockquote"]), ("reference", rules_block.reference), ("html_block", rules_block.html_block, ["paragraph", "reference", "blockquote"]), ("heading", rules_block.heading, ["paragraph", "reference", "blockquote"]), ("lheading", rules_block.lheading), ("paragraph", rules_block.paragraph), ] class ParserBlock: """ ParserBlock#ruler -> Ruler [[Ruler]] instance. Keep configuration of block rules. """ def __init__(self): self.ruler = Ruler() for data in _rules: name = data[0] rule = data[1] self.ruler.push(name, rule, {"alt": data[2] if len(data) > 2 else []}) def tokenize( self, state: StateBlock, startLine: int, endLine: int, silent: bool = False ) -> None: """Generate tokens for input range.""" rules = self.ruler.getRules("") line = startLine maxNesting = state.md.options.maxNesting hasEmptyLines = False while line < endLine: state.line = line = state.skipEmptyLines(line) if line >= endLine: break if state.sCount[line] < state.blkIndent: # Termination condition for nested calls. # Nested calls currently used for blockquotes & lists break if state.level >= maxNesting: # If nesting level exceeded - skip tail to the end. # That's not ordinary situation and we should not care about content. state.line = endLine break # Try all possible rules. # On success, rule should: # - update `state.line` # - update `state.tokens` # - return True for rule in rules: if rule(state, line, endLine, False): break # set state.tight if we had an empty line before current tag # i.e. latest empty line should not count state.tight = not hasEmptyLines line = state.line # paragraph might "eat" one newline after it in nested lists if (line - 1) < endLine and state.isEmpty(line - 1): hasEmptyLines = True if line < endLine and state.isEmpty(line): hasEmptyLines = True line += 1 state.line = line def parse( self, src: str, md, env, outTokens: list[Token], ords: tuple[int, ...] | None = None, ) -> list[Token] | None: """Process input string and push block tokens into `outTokens`.""" if not src: return None state = StateBlock(src, md, env, outTokens, ords) self.tokenize(state, state.line, state.lineMax) return state.tokens