all2md.linter.rule

Base classes for linter rules.

Rules are not visitors. Each rule receives a LintContext and is free to traverse the AST however it likes — NodeCollector, direct loops over document.children, or regex over text extracted via all2md.ast.extract_text. This keeps rules concise and avoids forcing every rule into the full visitor interface.

class all2md.linter.rule.LintContext

Bases: object

Input passed to every LintRule.check() call.

document: Document
file_path: str | None
config: dict[str, Any]
__init__(document: Document, file_path: str | None = None, config: dict[str, Any]=<factory>) None
class all2md.linter.rule.LintRule

Bases: ABC

Abstract base class for lint rules.

Subclasses must set the class-level metadata attributes (code, name, category, description, default_severity) and implement check().

code: str
name: str
category: str
description: str
default_severity: Severity
abstractmethod check(ctx: LintContext) list[Violation]

Inspect ctx.document and return any violations found.

build_violation(message: str, *, severity: Severity | None = None, line: int | None = None, column: int | None = None, node_type: str | None = None, suggestion: str | None = None, context: str | None = None, fix: 'LintFix' | None = None) Violation

Construct a Violation pre-populated with this rule’s metadata.