# tokens URL: /api/parsing/inline/tokens/ Section: inline -------------------------------------------------------------------------------- tokens - 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 ParsingInline ᗢ 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.inline.tokens Typed inline tokens for Patitas parser. Uses NamedTuples for inline token representation, providing: Immutability by default (required for external match tracking) Tuple unpacking support Lower memory footprint (~80 bytes vs ~200 for dict) Faster attribute access (tuple index vs hash lookup) Full type safety with IDE autocomplete Thread Safety: All tokens are immutable and safe to share across threads. Usage: from patitas.parsing.inline.tokens import ( DelimiterToken, TextToken, InlineToken, ) token = DelimiterToken(char="*", count=2, can_open=True, can_close=False) match token: case DelimiterToken(char="*", count=count): print(f"Asterisk delimiter with count {count}") 6Classes Classes DelimiterToken 6 ▼ Delimiter token for emphasis/strikethrough processing. Immutable by design — match state tracked e… Delimiter token for emphasis/strikethrough processing. Immutable by design — match state tracked externally in MatchRegistry. NamedTuple chosen over dataclass for: Immutability by default (required for external match tracking) Tuple unpacking support Lower memory footprint (~80 bytes vs ~200 for dict) Faster attribute access (tuple index vs hash lookup) Attributes Name Type Description char DelimiterChar The delimiter character ("*", "_", or "~"). count int Number of consecutive delimiter characters. can_open bool Whether this delimiter can open emphasis. can_close bool Whether this delimiter can close emphasis. Methods type 0 Literal['delimiter'] ▼ Token type identifier for dispatch. property def type(self) -> Literal['delimiter'] Returns Literal['delimiter'] original_count 0 int ▼ Original count (same as count for immutable tokens). property def original_count(self) -> int Returns int TextToken 2 ▼ Plain text token. Plain text token. Attributes Name Type Description content str The text content. Methods type 0 Literal['text'] ▼ Token type identifier for dispatch. property def type(self) -> Literal['text'] Returns Literal['text'] CodeSpanToken 2 ▼ Inline code span token. Inline code span token. Attributes Name Type Description code str The code content (already processed per CommonMark rules). Methods type 0 Literal['code_span'] ▼ Token type identifier for dispatch. property def type(self) -> Literal['code_span'] Returns Literal['code_span'] NodeToken 2 ▼ Pre-parsed AST node token (links, images, etc.). Used when inline content is parsed directly into … Pre-parsed AST node token (links, images, etc.). Used when inline content is parsed directly into an AST node (e.g., links, images, autolinks, roles, math). Attributes Name Type Description node object The pre-parsed inline AST node. Methods type 0 Literal['node'] ▼ Token type identifier for dispatch. property def type(self) -> Literal['node'] Returns Literal['node'] HardBreakToken 1 ▼ Hard line break token. Represents a hard line break (backslash + newline or two trailing spaces). Hard line break token. Represents a hard line break (backslash + newline or two trailing spaces). Methods type 0 Literal['hard_break'] ▼ Token type identifier for dispatch. property def type(self) -> Literal['hard_break'] Returns Literal['hard_break'] SoftBreakToken 1 ▼ Soft line break token. Represents a soft line break (single newline in paragraph). Typically rende… Soft line break token. Represents a soft line break (single newline in paragraph). Typically rendered as a space or newline depending on settings. Methods type 0 Literal['soft_break'] ▼ Token type identifier for dispatch. property def type(self) -> Literal['soft_break'] Returns Literal['soft_break'] ← Previous special 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: 1015 - Reading Time: 5 minutes