Module

lexer.scanners.fence

Fenced code mode scanner mixin.

Classes

FenceScannerMixin 15 ▼
Mixin providing fenced code mode scanning logic. Scans content inside fenced code blocks, detectin…

Mixin providing fenced code mode scanning logic.

Scans content inside fenced code blocks, detecting the closing fence.

Attributes

Name Type Description
_source str —
_pos int —
_mode LexerMode —
_fence_char str —
_fence_count int —
_fence_info str —
_fence_indent int —
_consumed_newline bool —
_directive_stack list[tuple[int, str]] —

Methods

Internal Methods 6 ▼
_save_location 0 ▼
Save current location for O(1) token location creation.
def _save_location(self) -> None
_find_line_end 0 int ▼
Find end of current line.
def _find_line_end(self) -> int
Returns
int
_commit_to 1 ▼
Commit position to line_end.
def _commit_to(self, line_end: int) -> None
Parameters
Name Type Description
line_end —
_make_token 6 Token ▼
Create token with raw coordinates. Implemented by Lexer.
def _make_token(self, token_type: TokenType, value: str, start_pos: int, *, start_col: int | None = None, end_pos: int | None = None, line_indent: int = -1) -> Token
Parameters
Name Type Description
token_type —
value —
start_pos —
start_col — Default:None
end_pos — Default:None
line_indent — Default:-1
Returns
Token
_is_closing_fence 1 bool ▼
Check if line is a closing fence. Implemented by FenceClassifierMixin.
def _is_closing_fence(self, line: str) -> bool
Parameters
Name Type Description
line —
Returns
bool
_scan_code_fence_content 0 Iterator[Token] ▼
Scan content inside fenced code block using window approach.
def _scan_code_fence_content(self) -> Iterator[Token]
Returns
Iterator[Token]