# link_ref URL: /api/lexer/classifiers/link_ref/ Section: classifiers -------------------------------------------------------------------------------- link_ref - 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.link_ref Link reference definition classifier mixin. Handles multi-line definitions, escaped characters, and strict validation according to CommonMark 0.31.2 spec. 1Class Classes LinkRefClassifierMixin 12 ▼ Mixin providing link reference definition classification. Mixin providing link reference definition classification. Attributes Name Type Description _source str — _source_len int — _pos int — _lineno int — _col int — Methods Internal Methods 7 ▼ _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 _find_line_end 0 int ▼ Find end of current line. Implemented by Lexer. def _find_line_end(self) -> int Returns int _commit_to 1 ▼ Commit position. Implemented by Lexer. def _commit_to(self, line_end: int) -> None Parameters Name Type Description line_end — _try_classify_link_reference_def 3 Token | None ▼ Try to classify content as link reference definition. CommonMark 4.7: **A lin… def _try_classify_link_reference_def(self, first_line_content: str, line_start: int, indent: int = 0) -> Token | None Try to classify content as link reference definition. CommonMark 4.7: A link reference definition consists of: A link label (indented by up to 3 spaces) A colon (:) Optional whitespace (including up to one line change) A link destination Optional whitespace (including up to one line change) An optional link title Parameters Name Type Description first_line_content — Content of the first line (indents < 4 stripped) line_start — Source position where the first line starts indent — Number of leading spaces (for line_indent) Default: 0 Returns Token | None LINK_REFERENCE_DEF token if valid, None otherwise. Token value format: label|url|title (pipe-separated) _parse_label_multiline 2 tuple[str, int, bool] ▼ Parse link label, possibly spanning multiple lines. def _parse_label_multiline(self, first_line: str, line_start: int) -> tuple[str, int, bool] Parameters Name Type Description first_line — line_start — Returns tuple[str, int, bool] _parse_destination_multiline 1 tuple[str, int, bool] ▼ Parse link destination, possibly after one newline. def _parse_destination_multiline(self, start_pos: int) -> tuple[str, int, bool] Parameters Name Type Description start_pos — Returns tuple[str, int, bool] _parse_title_multiline 1 tuple[str, int, bool] ▼ Parse optional link title, possibly after one newline. def _parse_title_multiline(self, start_pos: int) -> tuple[str, int, bool] Parameters Name Type Description start_pos — Returns tuple[str, int, bool] ← Previous html Next → list 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: 912 - Reading Time: 5 minutes