# html
URL: /api/lexer/classifiers/html/
Section: classifiers
--------------------------------------------------------------------------------
html - Patitas window.BENGAL_THEME_DEFAULTS = { appearance: 'light', palette: 'brown-bengal' }; window.Bengal = window.Bengal || {}; window.Bengal.enhanceBaseUrl = '/patitas/assets/js/enhancements'; window.Bengal.watchDom = true; window.Bengal.debug = false; window.Bengal.enhanceUrls = { 'toc': '/patitas/assets/js/enhancements/toc.632a9783.js', 'docs-nav': '/patitas/assets/js/enhancements/docs-nav.57e4b129.js', 'tabs': '/patitas/assets/js/enhancements/tabs.aac9e817.js', 'lightbox': '/patitas/assets/js/enhancements/lightbox.1ca22aa1.js', 'interactive': '/patitas/assets/js/enhancements/interactive.fc077855.js', 'mobile-nav': '/patitas/assets/js/enhancements/mobile-nav.d991657f.js', 'action-bar': '/patitas/assets/js/enhancements/action-bar.d62417f4.js', 'copy-link': '/patitas/assets/js/enhancements/copy-link.7d9a5c29.js', 'data-table': '/patitas/assets/js/enhancements/data-table.1f5bc1eb.js', 'lazy-loaders': '/patitas/assets/js/enhancements/lazy-loaders.a5c38245.js', 'holo': '/patitas/assets/js/enhancements/holo.ee13c841.js', 'link-previews': '/patitas/assets/js/enhancements/link-previews.8d906535.js' }; (function () { try { var defaults = window.BENGAL_THEME_DEFAULTS || { appearance: 'system', palette: '' }; var defaultAppearance = defaults.appearance; if (defaultAppearance === 'system') { defaultAppearance = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light'; } var storedTheme = localStorage.getItem('bengal-theme'); var storedPalette = localStorage.getItem('bengal-palette'); var theme = storedTheme ? (storedTheme === 'system' ? defaultAppearance : storedTheme) : defaultAppearance; var palette = storedPalette ?? defaults.palette; document.documentElement.setAttribute('data-theme', theme); if (palette) { document.documentElement.setAttribute('data-palette', palette); } } catch (e) { document.documentElement.setAttribute('data-theme', 'light'); } })(); { "prerender": [ { "where": { "and": [ { "href_matches": "/docs/*" }, { "not": { "selector_matches": "[data-external], [target=_blank], .external" } } ] }, "eagerness": "conservative" } ], "prefetch": [ { "where": { "and": [ { "href_matches": "/*" }, { "not": { "selector_matches": "[data-external], [target=_blank], .external" } } ] }, "eagerness": "conservative" } ] } Skip to main content Magnifying Glass ESC Recent Clear Magnifying Glass No results for "" Start typing to search... ↑↓ Navigate ↵ Open ESC Close Powered by Lunr ฅᨐฅ DocumentationArrow ClockwiseGet StartedCodeSyntaxDirectivesStarburstExtendingBookmarkReferenceInfoAboutTroubleshootingReleasesDevGitHubPatitas API Reference Magnifying Glass Search ⌘K Palette Appearance Chevron Down Mode Monitor System Sun Light Moon Dark Palette Snow Lynx Brown Bengal Silver Bengal Charcoal Bengal Blue Bengal List ฅᨐฅ Magnifying Glass Search X Close Documentation Caret Down Arrow Clockwise Get Started Code Syntax Directives Starburst Extending Bookmark Reference Info About Troubleshooting Releases Dev Caret Down GitHub Patitas API Reference Palette Appearance Chevron Down Mode Monitor System Sun Light Moon Dark Palette Snow Lynx Brown Bengal Silver Bengal Charcoal Bengal Blue Bengal Patitas API Reference Caret Right Directives Caret Right Builtins admonition container dropdown tabs contracts decorator options protocol registry Caret Right Lexer Caret Right Classifiers directive fence footnote heading html link_ref list quote thematic Caret Right Scanners block directive fence html core modes Caret Right Parsing Caret Right Blocks Caret Right List blank_line indent item_blocks marker mixin nested trace types core directive footnote table Caret Right Inline core emphasis links match_registry special tokens charsets containers token_nav Caret Right Plugins autolinks footnotes math strikethrough table task_lists Caret Right Renderers html Caret Right Roles Caret Right Builtins formatting icons math reference protocol registry Caret Right Utils hashing logger text errors highlighting icons location nodes parser patitas protocols stringbuilder tokens LexerClassifiers ᗢ Caret Down Link Copy URL External Open LLM text Copy Copy LLM text Share with AI Ask Claude Ask ChatGPT Ask Gemini Ask Copilot Module lexer.classifiers.html HTML block classifier mixin. 1Class Classes HtmlClassifierMixin 14 ▼ Mixin providing HTML block classification. Implements CommonMark 4.6 HTML block types 1-7. Mixin providing HTML block classification. Implements CommonMark 4.6 HTML block types 1-7. Attributes Name Type Description _mode LexerMode — _html_block_type int — _html_block_content list[str] — _html_block_start int — _html_block_indent int — _pos int — _source_len int — _consumed_newline bool — Methods Internal Methods 6 ▼ _location_from 3 SourceLocation ▼ Get source location from saved position. Implemented by Lexer. def _location_from(self, start_pos: int, start_col: int | None = None, end_pos: int | None = None) -> SourceLocation Parameters Name Type Description start_pos — start_col — Default: None end_pos — Default: None Returns SourceLocation _try_classify_html_block_start 4 Iterator[Token] | None ▼ Try to classify content as HTML block start. CommonMark 4.6 defines 7 types of… def _try_classify_html_block_start(self, content: str, line_start: int, full_line: str, indent: int = 0) -> Iterator[Token] | None Try to classify content as HTML block start. CommonMark 4.6 defines 7 types of HTML blocks. Parameters Name Type Description content — Line content with leading whitespace stripped line_start — Position in source where line starts full_line — The full line including leading whitespace indent — Number of leading spaces (for line_indent) Default: 0 Returns Iterator[Token] | None Iterator yielding HTML_BLOCK token, or None if not HTML block. _extract_html_tag_name 1 str | None ▼ Extract tag name from HTML opening or closing tag. def _extract_html_tag_name(self, content: str) -> str | None Parameters Name Type Description content — Line content starting with < Returns str | None Tag name if found, None otherwise. _is_complete_html_tag 1 bool ▼ Check if content is a complete single HTML open/close tag. Type 7 HTML blocks … def _is_complete_html_tag(self, content: str) -> bool Check if content is a complete single HTML open/close tag. Type 7 HTML blocks require a SINGLE complete tag that's the only content on line. This means: , , , or - NOT content. The tag name must also NOT be one of the type 6 block-level tags. Must not match autolinks like http://... or email@domain. CommonMark strict attribute validation: Attribute name: [a-zA-Z_:][a-zA-Z0-9_.:-]* Attribute value: unquoted (no special chars), 'single', or "double" quoted Space required between attributes (but not after final attribute before > or />) Parameters Name Type Description content — Line content Returns bool True if this is a complete HTML tag. _validate_html_attributes 1 bool ▼ Validate HTML attribute string per CommonMark spec. def _validate_html_attributes(self, attrs_str: str) -> bool Parameters Name Type Description attrs_str — The portion after tag name and before > (without leading ) Returns bool True if attributes are valid per CommonMark 6.8. _emit_html_block 0 Iterator[Token] ▼ Emit accumulated HTML block as a single token. def _emit_html_block(self) -> Iterator[Token] Returns Iterator[Token] ← Previous heading Next → link_ref List © 2026 Patitas built in ᓚᘏᗢ { "linkPreviews": { "enabled": true, "hoverDelay": 200, "hideDelay": 150, "showSection": true, "showReadingTime": true, "showWordCount": true, "showDate": true, "showTags": true, "maxTags": 3, "includeSelectors": [".prose"], "excludeSelectors": ["nav", ".toc", ".breadcrumb", ".pagination", ".card", "[class*='-card']", ".tab-nav", "[class*='-widget']", ".child-items", ".content-tiles"], "allowedHosts": [], "allowedSchemes": ["https"], "hostFailureThreshold": 3 } } window.BENGAL_LAZY_ASSETS = { tabulator: '/patitas/assets/js/tabulator.min.js', dataTable: '/patitas/assets/js/data-table.js', mermaidToolbar: '/patitas/assets/js/mermaid-toolbar.9de5abba.js', mermaidTheme: '/patitas/assets/js/mermaid-theme.344822c5.js', graphMinimap: '/patitas/assets/js/graph-minimap.ff04e939.js', graphContextual: '/patitas/assets/js/graph-contextual.355458ba.js' }; window.BENGAL_ICONS = { close: '/patitas/assets/icons/close.911d4fe1.svg', enlarge: '/patitas/assets/icons/enlarge.652035e5.svg', copy: '/patitas/assets/icons/copy.3d56e945.svg', 'download-svg': '/patitas/assets/icons/download.04f07e1b.svg', 'download-png': '/patitas/assets/icons/image.c34dfd40.svg', 'zoom-in': '/patitas/assets/icons/zoom-in.237b4a83.svg', 'zoom-out': '/patitas/assets/icons/zoom-out.38857c77.svg', reset: '/patitas/assets/icons/reset.d26dba29.svg' }; Arrow Up
--------------------------------------------------------------------------------
Metadata:
- Word Count: 990
- Reading Time: 5 minutes