# nested URL: /api/parsing/blocks/list/nested/ Section: list -------------------------------------------------------------------------------- nested - 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 BlocksList ᗢ 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 parsing.blocks.list.nested Nested list handling for list parsing. Handles detection and parsing of nested lists within list items. 1Class5Functions Classes ParserProtocol 1 ▼ Protocol for parser methods needed by nested list handlers. Protocol for parser methods needed by nested list handlers. Attributes Name Type Description _source str — Functions detect_nested_block_in_content 3 bool ▼ Detect if paragraph line content is actually a nested block marker. CommonMark… def detect_nested_block_in_content(line: str, line_indent: int, content_indent: int) -> bool Detect if paragraph line content is actually a nested block marker. CommonMark: If the first content after a list marker is itself a block marker (list, blockquote, heading, etc.), it should be parsed as a nested block, BUT only if it's indented appropriately (not 4+ spaces beyond content indent). Parameters Name Type Description line str The stripped line content line_indent int Indent of the line (from tok.line_indent) content_indent int Content indent of the current list item Returns bool parse_nested_list_inline 8 list[Block] ▼ Parse a nested list from inline content. Used when a paragraph line turns out … def parse_nested_list_inline(line: str, token_location: object, parser: ParserProtocol, directive_registry: object | None, strict_contracts: bool, tables_enabled: bool, strikethrough_enabled: bool, task_lists_enabled: bool) -> list[Block] Parse a nested list from inline content. Used when a paragraph line turns out to be a nested list marker. Parameters Name Type Description line str The content line that is a list marker token_location object Location of the token parser ParserProtocol The parser instance directive_registry object | None Registry for directives strict_contracts bool Whether to enforce strict contracts tables_enabled bool Whether tables are enabled strikethrough_enabled bool Whether strikethrough is enabled task_lists_enabled bool Whether task lists are enabled Returns list[Block] parse_nested_list_from_indented_code 4 List | None ▼ Parse a nested list from an INDENTED_CODE token containing a list marker. When… def parse_nested_list_from_indented_code(token: Token, original_indent: int, parent_content_indent: int, parser: ParserProtocol) -> List | None Parse a nested list from an INDENTED_CODE token containing a list marker. When the lexer produces INDENTED_CODE for 4+ space indented lines, those lines may actually be nested list markers in list context. Parameters Name Type Description token Token The INDENTED_CODE token containing the list marker original_indent int The original indentation of the line in source parent_content_indent int The content indent of the parent list item parser ParserProtocol The parser instance Returns List | None _is_sibling_marker 5 bool ▼ Check if content is a sibling list marker at the expected indent. def _is_sibling_marker(content: str, content_indent: int, expected_indent: int, ordered: bool, marker_char: str) -> bool Parameters Name Type Description content str content_indent int expected_indent int ordered bool marker_char str Returns bool _extract_remaining_content 2 str ▼ Extract content after the list marker. def _extract_remaining_content(content: str, ordered: bool) -> str Parameters Name Type Description content str ordered bool Returns str ← Previous mixin Next → trace 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: 987 - Reading Time: 5 minutes