panache-cli 3.17.1__tar.gz → 3.17.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {panache_cli-3.17.1 → panache_cli-3.17.2}/Cargo.lock +18 -17
- {panache_cli-3.17.1 → panache_cli-3.17.2}/Cargo.toml +5 -5
- {panache_cli-3.17.1 → panache_cli-3.17.2}/PKG-INFO +11 -1
- {panache_cli-3.17.1 → panache_cli-3.17.2}/README.md +10 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/CHANGELOG.md +6 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/Cargo.toml +3 -3
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/CHANGELOG.md +7 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/Cargo.toml +2 -2
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/pandoc_ast.rs +38 -85
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/citations.rs +73 -4
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/core.rs +103 -6
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/inline_ir.rs +65 -6
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/kind.rs +2 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/code_block_collector.rs +82 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/execution_context.rs +45 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters/jarl.rs +24 -17
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters.rs +48 -6
- panache_cli-3.17.2/src/linter/rules/docs/swallowed-list-marker.md +15 -0
- panache_cli-3.17.2/src/linter/rules/docs/undefined-references.md +15 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/swallowed_list_marker.rs +143 -5
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/undefined_references.rs +48 -26
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/utils.rs +13 -8
- panache_cli-3.17.1/src/linter/rules/docs/swallowed-list-marker.md +0 -8
- panache_cli-3.17.1/src/linter/rules/docs/undefined-references.md +0 -6
- {panache_cli-3.17.1 → panache_cli-3.17.2}/LICENSE +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/assets/quarto-schema/schema.json +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/build.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/README.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/config.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/directives.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/blockquotes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/code_blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/containers.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/core.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/document.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/fenced_divs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/hashpipe.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/headings.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/indent_utils.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/inline.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/inline_layout.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/lists.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/math/STYLE.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/math/ir.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/math/lower.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/math/printer.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/math/render.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/math.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/metadata.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/paragraphs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/preserve.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/raw.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/sentence_wrap.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/shortcodes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/smart.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/table_conversion.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/tables.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/utils.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/yaml/STYLE.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/yaml/block_map.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/yaml/block_sequence.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/yaml/document.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/yaml/flow.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/yaml/options.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/yaml/scalar.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter/yaml.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/formatter.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/lib.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/parser.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/syntax.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/utils.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-formatter/src/yaml_engine.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/README.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/build.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/data/math_symbols.json +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/data/unicode-math.LICENSE +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/data/unicode-math.NOTICE +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/grid_layout.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/lib.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/options.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/block_dispatcher.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/admonitions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/blockquotes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/code_blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/container_prefix.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/definition_lists.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/fenced_divs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/figures.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/headings.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/horizontal_rules.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/html_blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/hugo.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/indented_code.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/latex_envs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/line_blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/lists.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/metadata.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/myst_directives.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/myst_targets.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/paragraphs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/raw_blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/reference_links.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tables.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/blanklines.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/blockquotes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/code_blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/content_containers.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/definition_lists.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/figures.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/footnote_marker_line.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/fragment_context.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/frame_pinning.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/headings.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/helpers.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/lists.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/losslessness.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/metadata_guards.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks/tests/tables.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/core/blockquotes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/core/definition_lists.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/core/html_interruptions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/core/list_items.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/core.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/diagnostics.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/bookdown.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/bracketed_spans.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/code_spans.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/emoji.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/escapes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/hard_breaks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/hugo.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/inline_executable.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/inline_footnotes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/inline_html.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/latex.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/links.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/mark.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/math.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/myst_roles.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/myst_substitutions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/native_spans.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/raw_inline.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/refdef_map.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/shortcodes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/sink.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/strikeout.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/subscript.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/superscript.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/svelte.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/tests.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/uri-schemes.csv +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/wikilinks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/math.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/reparse.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/attributes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/chunk_options.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/container_stack.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/continuation.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/helpers.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/inline_emission.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/list_item_buffer.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/marker_utils.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/raw_html.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/text_buffer.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/tree_copy.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils/yaml_regions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/utils.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/verify.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/yaml/cooking.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/yaml/events.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/yaml/model.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/yaml/parser.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/yaml/profile.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/yaml/scanner.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/yaml/validator.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/yaml.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/range_utils.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/semantic/math.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/semantic.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/alerts.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/ast.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/attributes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/block_quotes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/chunk_options.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/citations.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/code_blocks.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/code_span.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/consumer.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/crossrefs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/definitions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/fenced_divs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/headings.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/html.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/hugo.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/inlines.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/links.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/lists.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/math.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/myst.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/raw_tex.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/references.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/shortcodes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/tables.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/yaml.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax/yaml_ast.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/syntax.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/pyproject.toml +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/bib/bibtex.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/bib/csl_json.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/bib/csl_yaml.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/bib/index.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/bib/preview.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/bib/ris.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/bib.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/bin/distill_quarto_schema.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/cache.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/cli.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/config/formatter_presets.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/config/types/schema_helpers.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/config/types.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/config.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/diagnostic_renderer.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/directives.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/external_formatters_common.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/external_formatters_sync.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/external_tools_common.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/formatter.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/includes.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/incremental.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/io_context.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lib.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/diagnostics.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/docs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters/clippy.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters/eslint.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters/jolars.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters/ruff.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters/shellcheck.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters/staticcheck.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/external_linters_sync.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/fix.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/fuzzy.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/index.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/metadata_diagnostics.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/offsets.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/project_index.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/quarto_schema/distill.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/quarto_schema/interp.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/quarto_schema/model.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/quarto_schema/report.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/quarto_schema/value.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/quarto_schema.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/render.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/adjacent_footnote_refs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/blank_line_in_display_math.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/blank_line_in_inline_footnote.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/chunk_label_spaces.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/citation_keys.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/citation_nonbreaking_space.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/consumer_divergence.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/crossref_as_link_target.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/adjacent-footnote-refs.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/blank-line-in-display-math.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/blank-line-in-inline-footnote.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/chunk-label-spaces.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/citation-keys.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/citation-nonbreaking-space.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/consumer-divergence.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/crossref-as-link-target.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/duplicate-reference-labels.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/duplicate-yaml-anchor.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/empty-list-item.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/empty-values.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/figure-crossref-captions.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/footnote-after-image.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/footnote-ref-in-footnote-def.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/footnote-swallowed-by-bracket.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/heading-eaten-attrs.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/heading-hierarchy.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/heading-strip-comments-residue.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/html-entities.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/html-unclosed-attribute.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/inline-math-line-break.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/link-text-is-url.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/malformed-citation.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/math-syntax.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/missing-chunk-labels.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/quarto-schema-unknown-key.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/quarto-schema.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/reversed-footnote-marker.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/space-before-punctuation.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/stray-fenced-div-markers.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/table-column-count.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/undefined-anchor.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/unknown-emoji-alias.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/unspaced-citation.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/unspaced-list-marker.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/unsupported-metadata-key.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/unused-definitions.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/docs/unused-yaml-anchor.md +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/duplicate_references.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/duplicate_yaml_anchor.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/emoji_aliases.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/empty_list_item.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/empty_values.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/figure_crossref_captions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/footnote_after_image.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/footnote_ref_in_footnote_def.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/footnote_swallowed_by_bracket.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/heading_eaten_attrs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/heading_hierarchy.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/heading_strip_comments_residue.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/html_entities.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/html_unclosed_attribute.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/inline_math_line_break.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/link_text_is_url.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/malformed_citation.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/math_content.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/missing_chunk_labels.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/quarto_schema.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/reversed_footnote_marker.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/space_before_punctuation.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/stray_fenced_div_markers.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/table_column_count.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/undefined_anchor.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/unspaced_citation.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/unspaced_list_marker.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/unsupported_metadata_key.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/unused_definitions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules/unused_yaml_anchor.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/rules.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/runner.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/yaml_anchors.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter/yaml_resolve.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/linter.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/config.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/context.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/conversions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/dispatch.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/documents.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/global_state.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/code_actions.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/completion.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/configuration.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/diagnostics.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/document_highlight.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/document_links.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/document_symbols.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/file_operations.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/file_rename.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/file_watcher.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/folding_ranges.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/footnote_conversion.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/formatting.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/goto_definition.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/heading_link_conversion.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/hover.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/link_conversion.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/linked_editing_range.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/list_conversion.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/prepare_rename.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/references.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/rename.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/semantic_tokens.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/shortcode_args.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/table_conversion.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/workspace_folders.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers/workspace_symbols.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/handlers.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/helpers.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/line_index.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/navigation.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/symbols.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/task_pool.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/testing.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp/uri_ext.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/lsp.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/main.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/metadata/bibliography.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/metadata/citations.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/metadata/project.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/metadata/references.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/metadata/yaml.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/metadata.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/parser.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/range_utils.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/salsa.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/syntax.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/vfs.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/yaml_engine.rs +0 -0
- {panache_cli-3.17.1 → panache_cli-3.17.2}/src/yaml_regions.rs +0 -0
|
@@ -121,9 +121,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
|
121
121
|
|
|
122
122
|
[[package]]
|
|
123
123
|
name = "badness-formatter"
|
|
124
|
-
version = "0.
|
|
124
|
+
version = "0.11.0"
|
|
125
125
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
126
|
-
checksum = "
|
|
126
|
+
checksum = "0165f729bcb3de3e5b19936829abb6e32204d5762ed93a2c131e65c3c9495810"
|
|
127
127
|
dependencies = [
|
|
128
128
|
"badness-parser",
|
|
129
129
|
"rowan 0.17.0",
|
|
@@ -131,9 +131,9 @@ dependencies = [
|
|
|
131
131
|
|
|
132
132
|
[[package]]
|
|
133
133
|
name = "badness-parser"
|
|
134
|
-
version = "0.11.
|
|
134
|
+
version = "0.11.2"
|
|
135
135
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
136
|
-
checksum = "
|
|
136
|
+
checksum = "75b997df78399ddfa09f747bbe52f8e1c8afc374e3fc95540cd312632b939744"
|
|
137
137
|
dependencies = [
|
|
138
138
|
"phf 0.14.0",
|
|
139
139
|
"phf_codegen",
|
|
@@ -294,9 +294,9 @@ dependencies = [
|
|
|
294
294
|
|
|
295
295
|
[[package]]
|
|
296
296
|
name = "clapdown"
|
|
297
|
-
version = "0.
|
|
297
|
+
version = "0.3.0"
|
|
298
298
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
299
|
-
checksum = "
|
|
299
|
+
checksum = "d8f2a42d22b905f09c7e696e2f46a17e4aa956c8d8b8cd09806137fd99c8544c"
|
|
300
300
|
dependencies = [
|
|
301
301
|
"clap",
|
|
302
302
|
]
|
|
@@ -850,9 +850,9 @@ dependencies = [
|
|
|
850
850
|
|
|
851
851
|
[[package]]
|
|
852
852
|
name = "jsonschema"
|
|
853
|
-
version = "0.
|
|
853
|
+
version = "0.60.1"
|
|
854
854
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
855
|
-
checksum = "
|
|
855
|
+
checksum = "65de752665c4a06528af6759955eecf60ba73ae7442d35349963a09c8031cd71"
|
|
856
856
|
dependencies = [
|
|
857
857
|
"ahash",
|
|
858
858
|
"bytecount",
|
|
@@ -878,23 +878,24 @@ dependencies = [
|
|
|
878
878
|
|
|
879
879
|
[[package]]
|
|
880
880
|
name = "jsonschema-regex"
|
|
881
|
-
version = "0.
|
|
881
|
+
version = "0.60.2"
|
|
882
882
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
883
|
-
checksum = "
|
|
883
|
+
checksum = "107aeb6ff14b8deb5610096a8ce5c554ec89806b521147eaeb3cae05b07edb7a"
|
|
884
884
|
dependencies = [
|
|
885
885
|
"regex-syntax",
|
|
886
886
|
]
|
|
887
887
|
|
|
888
888
|
[[package]]
|
|
889
889
|
name = "jsonschema-value"
|
|
890
|
-
version = "0.
|
|
890
|
+
version = "0.60.2"
|
|
891
891
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
892
|
-
checksum = "
|
|
892
|
+
checksum = "e281d6b177bb4834f2ffd6f92aa0443cffe29c996b251c8d94eb6f456186feba"
|
|
893
893
|
dependencies = [
|
|
894
894
|
"ahash",
|
|
895
895
|
"bytecount",
|
|
896
896
|
"fraction",
|
|
897
897
|
"getrandom 0.3.4",
|
|
898
|
+
"memchr",
|
|
898
899
|
"num-cmp",
|
|
899
900
|
"num-traits",
|
|
900
901
|
"serde_json",
|
|
@@ -1114,7 +1115,7 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
|
|
|
1114
1115
|
|
|
1115
1116
|
[[package]]
|
|
1116
1117
|
name = "panache"
|
|
1117
|
-
version = "3.17.
|
|
1118
|
+
version = "3.17.2"
|
|
1118
1119
|
dependencies = [
|
|
1119
1120
|
"annotate-snippets",
|
|
1120
1121
|
"assert_cmd",
|
|
@@ -1159,7 +1160,7 @@ dependencies = [
|
|
|
1159
1160
|
|
|
1160
1161
|
[[package]]
|
|
1161
1162
|
name = "panache-formatter"
|
|
1162
|
-
version = "0.28.
|
|
1163
|
+
version = "0.28.2"
|
|
1163
1164
|
dependencies = [
|
|
1164
1165
|
"badness-formatter",
|
|
1165
1166
|
"insta",
|
|
@@ -1179,7 +1180,7 @@ dependencies = [
|
|
|
1179
1180
|
|
|
1180
1181
|
[[package]]
|
|
1181
1182
|
name = "panache-parser"
|
|
1182
|
-
version = "0.34.
|
|
1183
|
+
version = "0.34.2"
|
|
1183
1184
|
dependencies = [
|
|
1184
1185
|
"badness-parser",
|
|
1185
1186
|
"entities",
|
|
@@ -1461,9 +1462,9 @@ dependencies = [
|
|
|
1461
1462
|
|
|
1462
1463
|
[[package]]
|
|
1463
1464
|
name = "referencing"
|
|
1464
|
-
version = "0.
|
|
1465
|
+
version = "0.60.2"
|
|
1465
1466
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1466
|
-
checksum = "
|
|
1467
|
+
checksum = "f42818036d3b37cda6bd4c494543158a36e431cb717015ef7c93acc6ba214d3b"
|
|
1467
1468
|
dependencies = [
|
|
1468
1469
|
"ahash",
|
|
1469
1470
|
"fluent-uri 0.4.1",
|
|
@@ -9,7 +9,7 @@ authors = ["Johan Larsson <johan@jolars.co>"]
|
|
|
9
9
|
|
|
10
10
|
[package]
|
|
11
11
|
name = "panache"
|
|
12
|
-
version = "3.17.
|
|
12
|
+
version = "3.17.2"
|
|
13
13
|
edition.workspace = true
|
|
14
14
|
rust-version.workspace = true
|
|
15
15
|
# `distill_quarto_schema` is a dev-only vendoring bin (src/bin/); keep bare
|
|
@@ -55,11 +55,11 @@ path = "src/main.rs"
|
|
|
55
55
|
required-features = ["cli"]
|
|
56
56
|
|
|
57
57
|
[dependencies]
|
|
58
|
-
panache-formatter = { path = "crates/panache-formatter", version = "0.28.
|
|
58
|
+
panache-formatter = { path = "crates/panache-formatter", version = "0.28.2", features = [
|
|
59
59
|
"serde",
|
|
60
60
|
"schema",
|
|
61
61
|
] }
|
|
62
|
-
panache-parser = { path = "crates/panache-parser", version = "0.34.
|
|
62
|
+
panache-parser = { path = "crates/panache-parser", version = "0.34.2", features = [
|
|
63
63
|
"serde",
|
|
64
64
|
"schema",
|
|
65
65
|
] }
|
|
@@ -95,7 +95,7 @@ similar-asserts = "2.0.0"
|
|
|
95
95
|
insta = { version = "1.47.2", features = ["json"] }
|
|
96
96
|
assert_cmd = "2.2.2"
|
|
97
97
|
predicates = "3.1.4"
|
|
98
|
-
jsonschema = { version = "0.
|
|
98
|
+
jsonschema = { version = "0.60.1", default-features = false }
|
|
99
99
|
|
|
100
100
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
101
101
|
rayon = "1.10.0"
|
|
@@ -117,7 +117,7 @@ lsp = [
|
|
|
117
117
|
clap = { version = "4.6.1", features = ["derive", "env"] }
|
|
118
118
|
clap_complete = "4.6.0"
|
|
119
119
|
clap_mangen = "0.3.0"
|
|
120
|
-
clapdown = "0.
|
|
120
|
+
clapdown = "0.3.0"
|
|
121
121
|
flate2 = "1.1.9"
|
|
122
122
|
|
|
123
123
|
[package.metadata.deb]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: panache-cli
|
|
3
|
-
Version: 3.17.
|
|
3
|
+
Version: 3.17.2
|
|
4
4
|
Classifier: Development Status :: 5 - Production/Stable
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -37,6 +37,7 @@ Code](https://vsmarketplacebadges.dev/version-short/jolars.panache.svg?logo=vsix
|
|
|
37
37
|
version](https://badge.fury.io/py/panache-cli.svg?icon=si%3Apython)](https://badge.fury.io/py/panache-cli)
|
|
38
38
|
[](https://badge.fury.io/js/@panache-cli%2Fpanache)
|
|
40
|
+
[](https://doi.org/10.5281/zenodo.18608442)
|
|
40
41
|
|
|
41
42
|
Panache is a language server, formatter, and linter for Quarto and other
|
|
42
43
|
Markdown flavors, built in Rust with a lossless CST parser and support for
|
|
@@ -337,3 +338,12 @@ documentation, well-structured code, and testing infrastructure provided by
|
|
|
337
338
|
Pandoc. We also owe significant debt to the rust-analyzer project, on which
|
|
338
339
|
Panache is heavily inspired.
|
|
339
340
|
|
|
341
|
+
## Citation
|
|
342
|
+
|
|
343
|
+
If you use Panache in your research, please cite the release you used. Select
|
|
344
|
+
that release in the [Zenodo archive](https://doi.org/10.5281/zenodo.18608442)
|
|
345
|
+
and export its citation. To cite Panache generally, use the concept DOI
|
|
346
|
+
`10.5281/zenodo.18608442`.
|
|
347
|
+
|
|
348
|
+
Machine-readable metadata is available in [CITATION.cff](CITATION.cff).
|
|
349
|
+
|
|
@@ -11,6 +11,7 @@ Code](https://vsmarketplacebadges.dev/version-short/jolars.panache.svg?logo=vsix
|
|
|
11
11
|
version](https://badge.fury.io/py/panache-cli.svg?icon=si%3Apython)](https://badge.fury.io/py/panache-cli)
|
|
12
12
|
[](https://badge.fury.io/js/@panache-cli%2Fpanache)
|
|
14
|
+
[](https://doi.org/10.5281/zenodo.18608442)
|
|
14
15
|
|
|
15
16
|
Panache is a language server, formatter, and linter for Quarto and other
|
|
16
17
|
Markdown flavors, built in Rust with a lossless CST parser and support for
|
|
@@ -310,3 +311,12 @@ The development of Panache has simplified considerably thanks to the extensive
|
|
|
310
311
|
documentation, well-structured code, and testing infrastructure provided by
|
|
311
312
|
Pandoc. We also owe significant debt to the rust-analyzer project, on which
|
|
312
313
|
Panache is heavily inspired.
|
|
314
|
+
|
|
315
|
+
## Citation
|
|
316
|
+
|
|
317
|
+
If you use Panache in your research, please cite the release you used. Select
|
|
318
|
+
that release in the [Zenodo archive](https://doi.org/10.5281/zenodo.18608442)
|
|
319
|
+
and export its citation. To cite Panache generally, use the concept DOI
|
|
320
|
+
`10.5281/zenodo.18608442`.
|
|
321
|
+
|
|
322
|
+
Machine-readable metadata is available in [CITATION.cff](CITATION.cff).
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.28.2](https://github.com/jolars/panache/compare/panache-formatter-v0.28.1...panache-formatter-v0.28.2) (2026-10-30)
|
|
4
|
+
|
|
5
|
+
### Dependencies
|
|
6
|
+
|
|
7
|
+
- updated crates/panache-parser to v0.34.2
|
|
8
|
+
|
|
3
9
|
## [0.28.1](https://github.com/jolars/panache/compare/panache-formatter-v0.28.0...panache-formatter-v0.28.1) (2026-10-26)
|
|
4
10
|
|
|
5
11
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "panache-formatter"
|
|
3
|
-
version = "0.28.
|
|
3
|
+
version = "0.28.2"
|
|
4
4
|
edition.workspace = true
|
|
5
5
|
rust-version.workspace = true
|
|
6
6
|
include = [
|
|
@@ -19,7 +19,7 @@ keywords = ["quarto", "pandoc", "markdown", "formatter"]
|
|
|
19
19
|
categories = ["text-processing"]
|
|
20
20
|
|
|
21
21
|
[dependencies]
|
|
22
|
-
panache-parser = { path = "../panache-parser", version = "0.34.
|
|
22
|
+
panache-parser = { path = "../panache-parser", version = "0.34.2" }
|
|
23
23
|
log = { version = "0.4.31", features = ["release_max_level_debug"] }
|
|
24
24
|
rowan = "0.17.0"
|
|
25
25
|
serde = { version = "1.0.228", features = ["derive"], optional = true }
|
|
@@ -32,7 +32,7 @@ serde = ["dep:serde", "panache-parser/serde"]
|
|
|
32
32
|
schema = ["serde", "dep:schemars", "panache-parser/schema"]
|
|
33
33
|
|
|
34
34
|
[dev-dependencies]
|
|
35
|
-
badness-formatter = "=0.
|
|
35
|
+
badness-formatter = "=0.11.0"
|
|
36
36
|
serde_json = "1.0.150"
|
|
37
37
|
insta = { version = "1.47.2", features = ["json"] }
|
|
38
38
|
# TEMPORARY: cross-validation oracle only (tests/yaml_cross_validation.rs).
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.34.2](https://github.com/jolars/panache/compare/panache-parser-v0.34.1...panache-parser-v0.34.2) (2026-10-30)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
- **lint:** validate custom cross-reference targets ([`f4f3a1d`](https://github.com/jolars/panache/commit/f4f3a1db60ec5ee2d537c72c60668426d696ecd9)), closes [#591](https://github.com/jolars/panache/issues/591)
|
|
8
|
+
- **parser:** capture narrative citation suffixes ([`3b50e47`](https://github.com/jolars/panache/commit/3b50e47a2ccbae75974ab1926a24825b4c4f1c18)), fixes [#590](https://github.com/jolars/panache/issues/590)
|
|
9
|
+
|
|
3
10
|
## [0.34.1](https://github.com/jolars/panache/compare/panache-parser-v0.34.0...panache-parser-v0.34.1) (2026-10-26)
|
|
4
11
|
|
|
5
12
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "panache-parser"
|
|
3
|
-
version = "0.34.
|
|
3
|
+
version = "0.34.2"
|
|
4
4
|
edition.workspace = true
|
|
5
5
|
rust-version.workspace = true
|
|
6
6
|
readme = "README.md"
|
|
@@ -44,6 +44,6 @@ serde = { version = "1.0.228", features = ["derive"] }
|
|
|
44
44
|
serde_json = "1.0.150"
|
|
45
45
|
|
|
46
46
|
[dev-dependencies]
|
|
47
|
-
badness-parser = "=0.11.
|
|
47
|
+
badness-parser = "=0.11.2"
|
|
48
48
|
insta = "1.47.2"
|
|
49
49
|
toml = "1.1.2"
|
|
@@ -3542,9 +3542,6 @@ fn inlines_from(parent: &SyntaxNode) -> Vec<Inline> {
|
|
|
3542
3542
|
NodeOrToken::Node(n) if n.kind() == SyntaxKind::LATEX_COMMAND => {
|
|
3543
3543
|
emit_latex_command_with_absorb(&n, &mut iter, &mut out);
|
|
3544
3544
|
}
|
|
3545
|
-
NodeOrToken::Node(n) if n.kind() == SyntaxKind::CITATION => {
|
|
3546
|
-
emit_citation_with_absorb(&n, &mut iter, &mut out);
|
|
3547
|
-
}
|
|
3548
3545
|
NodeOrToken::Node(n) => push_inline_node(&n, &mut out),
|
|
3549
3546
|
}
|
|
3550
3547
|
}
|
|
@@ -3554,62 +3551,6 @@ fn inlines_from(parent: &SyntaxNode) -> Vec<Inline> {
|
|
|
3554
3551
|
out
|
|
3555
3552
|
}
|
|
3556
3553
|
|
|
3557
|
-
/// Pandoc absorbs `@key [locator]` into a single AuthorInText `Cite` with
|
|
3558
|
-
/// the bracketed text becoming the citation's suffix. The parser emits two
|
|
3559
|
-
/// separate nodes: `CITATION` (bare `@key`, no surrounding brackets) and an
|
|
3560
|
-
/// adjacent `LINK` whose bracketed text has no destination. When the
|
|
3561
|
-
/// CITATION is bare and we can verify both the next siblings (a single
|
|
3562
|
-
/// `TEXT` whitespace token followed by a `LINK` node lacking
|
|
3563
|
-
/// `LINK_DEST_START`), consume both and absorb the link's text as suffix.
|
|
3564
|
-
fn emit_citation_with_absorb<I>(
|
|
3565
|
-
node: &SyntaxNode,
|
|
3566
|
-
iter: &mut std::iter::Peekable<I>,
|
|
3567
|
-
out: &mut Vec<Inline>,
|
|
3568
|
-
) where
|
|
3569
|
-
I: Iterator<Item = rowan::SyntaxElement<crate::syntax::PanacheLanguage>>,
|
|
3570
|
-
{
|
|
3571
|
-
let bracketed = node
|
|
3572
|
-
.children_with_tokens()
|
|
3573
|
-
.filter_map(|el| el.into_token())
|
|
3574
|
-
.any(|t| t.kind() == SyntaxKind::LINK_START);
|
|
3575
|
-
if bracketed {
|
|
3576
|
-
render_citation_inline(node, out, None);
|
|
3577
|
-
return;
|
|
3578
|
-
}
|
|
3579
|
-
let next_sibling_pair = node.next_sibling_or_token().and_then(|el1| {
|
|
3580
|
-
let t = el1.as_token().cloned()?;
|
|
3581
|
-
if t.kind() != SyntaxKind::TEXT || !t.text().starts_with(' ') {
|
|
3582
|
-
return None;
|
|
3583
|
-
}
|
|
3584
|
-
let space_text = t.text().to_string();
|
|
3585
|
-
let link_el = t.next_sibling_or_token()?;
|
|
3586
|
-
let link = link_el.as_node().cloned()?;
|
|
3587
|
-
if link.kind() != SyntaxKind::LINK && link.kind() != SyntaxKind::UNRESOLVED_REFERENCE {
|
|
3588
|
-
return None;
|
|
3589
|
-
}
|
|
3590
|
-
let has_dest = link
|
|
3591
|
-
.children_with_tokens()
|
|
3592
|
-
.filter_map(|el| el.into_token())
|
|
3593
|
-
.any(|tok| tok.kind() == SyntaxKind::LINK_DEST_START);
|
|
3594
|
-
if has_dest {
|
|
3595
|
-
return None;
|
|
3596
|
-
}
|
|
3597
|
-
let link_text = link
|
|
3598
|
-
.children()
|
|
3599
|
-
.find(|c| c.kind() == SyntaxKind::LINK_TEXT)
|
|
3600
|
-
.map(|tt| tt.text().to_string())
|
|
3601
|
-
.unwrap_or_default();
|
|
3602
|
-
Some((space_text, link_text))
|
|
3603
|
-
});
|
|
3604
|
-
if let Some((_space_text, locator_text)) = next_sibling_pair {
|
|
3605
|
-
iter.next();
|
|
3606
|
-
iter.next();
|
|
3607
|
-
render_citation_inline(node, out, Some(&locator_text));
|
|
3608
|
-
} else {
|
|
3609
|
-
render_citation_inline(node, out, None);
|
|
3610
|
-
}
|
|
3611
|
-
}
|
|
3612
|
-
|
|
3613
3554
|
/// Pandoc's tex inline reader absorbs trailing horizontal whitespace into the
|
|
3614
3555
|
/// raw command when (and only when) the command is `\letters` with no brace
|
|
3615
3556
|
/// arguments — `\foo bar` becomes `RawInline tex "\\foo "` + `Str "bar"`,
|
|
@@ -3656,7 +3597,7 @@ fn push_inline_node(node: &SyntaxNode, out: &mut Vec<Inline>) {
|
|
|
3656
3597
|
match node.kind() {
|
|
3657
3598
|
SyntaxKind::LINK => render_link_inline(node, out),
|
|
3658
3599
|
SyntaxKind::IMAGE_LINK => render_image_inline(node, out),
|
|
3659
|
-
SyntaxKind::CITATION => render_citation_inline(node, out
|
|
3600
|
+
SyntaxKind::CITATION => render_citation_inline(node, out),
|
|
3660
3601
|
SyntaxKind::UNRESOLVED_REFERENCE => render_unresolved_reference_inline(node, out),
|
|
3661
3602
|
_ => out.push(inline_from_node(node)),
|
|
3662
3603
|
}
|
|
@@ -3755,14 +3696,9 @@ fn render_unresolved_reference_inline(node: &SyntaxNode, out: &mut Vec<Inline>)
|
|
|
3755
3696
|
/// `Str "N"` (just the digits — surrounding parens come from adjacent
|
|
3756
3697
|
/// source bytes which our coalesce pass merges back in). Otherwise we
|
|
3757
3698
|
/// project the CITATION node as a proper `Cite [Citation, ...] [Inline,
|
|
3758
|
-
/// ...]` per pandoc's citation reader
|
|
3759
|
-
///
|
|
3760
|
-
|
|
3761
|
-
fn render_citation_inline(
|
|
3762
|
-
node: &SyntaxNode,
|
|
3763
|
-
out: &mut Vec<Inline>,
|
|
3764
|
-
extra_suffix_text: Option<&str>,
|
|
3765
|
-
) {
|
|
3699
|
+
/// ...]` per pandoc's citation reader, including any narrative suffix
|
|
3700
|
+
/// captured in the citation node.
|
|
3701
|
+
fn render_citation_inline(node: &SyntaxNode, out: &mut Vec<Inline>) {
|
|
3766
3702
|
let first_key = node
|
|
3767
3703
|
.children_with_tokens()
|
|
3768
3704
|
.filter_map(|el| el.into_token())
|
|
@@ -3784,13 +3720,15 @@ fn render_citation_inline(
|
|
|
3784
3720
|
let mut builders: Vec<CitationBuilder> = Vec::new();
|
|
3785
3721
|
let mut current: Option<CitationBuilder> = None;
|
|
3786
3722
|
let mut pending_prefix = String::new();
|
|
3723
|
+
let mut in_brackets = bracketed;
|
|
3787
3724
|
for el in node.children_with_tokens() {
|
|
3788
3725
|
let token = match el {
|
|
3789
3726
|
NodeOrToken::Token(t) => t,
|
|
3790
3727
|
_ => continue,
|
|
3791
3728
|
};
|
|
3792
3729
|
match token.kind() {
|
|
3793
|
-
SyntaxKind::LINK_START | SyntaxKind::LINK_DEST => {}
|
|
3730
|
+
SyntaxKind::LINK_START | SyntaxKind::LINK_DEST | SyntaxKind::CITATION_SUFFIX_END => {}
|
|
3731
|
+
SyntaxKind::CITATION_SUFFIX_START => in_brackets = true,
|
|
3794
3732
|
SyntaxKind::CITATION_BRACE_OPEN | SyntaxKind::CITATION_BRACE_CLOSE => {}
|
|
3795
3733
|
SyntaxKind::CITATION_MARKER => {
|
|
3796
3734
|
if let Some(c) = current.take() {
|
|
@@ -3798,7 +3736,7 @@ fn render_citation_inline(
|
|
|
3798
3736
|
}
|
|
3799
3737
|
let mode = if token.text() == "-@" {
|
|
3800
3738
|
CitationMode::SuppressAuthor
|
|
3801
|
-
} else if
|
|
3739
|
+
} else if in_brackets {
|
|
3802
3740
|
CitationMode::NormalCitation
|
|
3803
3741
|
} else {
|
|
3804
3742
|
CitationMode::AuthorInText
|
|
@@ -3832,15 +3770,6 @@ fn render_citation_inline(
|
|
|
3832
3770
|
builders.push(c);
|
|
3833
3771
|
}
|
|
3834
3772
|
|
|
3835
|
-
if let Some(extra) = extra_suffix_text
|
|
3836
|
-
&& let Some(last) = builders.last_mut()
|
|
3837
|
-
{
|
|
3838
|
-
if !last.suffix_raw.is_empty() && !extra.starts_with(' ') {
|
|
3839
|
-
last.suffix_raw.push(' ');
|
|
3840
|
-
}
|
|
3841
|
-
last.suffix_raw.push_str(extra);
|
|
3842
|
-
}
|
|
3843
|
-
|
|
3844
3773
|
let note_offset: u32 = node.text_range().start().into();
|
|
3845
3774
|
let note_num = REFS_CTX
|
|
3846
3775
|
.with(|c| {
|
|
@@ -3856,12 +3785,19 @@ fn render_citation_inline(
|
|
|
3856
3785
|
.map(|b| b.into_citation(note_num))
|
|
3857
3786
|
.collect();
|
|
3858
3787
|
|
|
3859
|
-
let mut literal =
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3788
|
+
let mut literal = String::new();
|
|
3789
|
+
for token in node.children_with_tokens().filter_map(|el| el.into_token()) {
|
|
3790
|
+
match token.kind() {
|
|
3791
|
+
SyntaxKind::LINE_PREFIX => {}
|
|
3792
|
+
SyntaxKind::CITATION_SUFFIX_START => {
|
|
3793
|
+
if !literal.ends_with(char::is_whitespace) {
|
|
3794
|
+
literal.push(' ');
|
|
3795
|
+
}
|
|
3796
|
+
literal.push('[');
|
|
3797
|
+
}
|
|
3798
|
+
SyntaxKind::CITATION_MARKER if !bracketed && literal.is_empty() => literal.push('@'),
|
|
3799
|
+
_ => literal.push_str(token.text()),
|
|
3800
|
+
}
|
|
3865
3801
|
}
|
|
3866
3802
|
let text_inlines = literal_inlines(&literal);
|
|
3867
3803
|
|
|
@@ -5492,6 +5428,23 @@ mod tests {
|
|
|
5492
5428
|
serde_json::from_str(&s).expect("to_pandoc_json must emit valid JSON")
|
|
5493
5429
|
}
|
|
5494
5430
|
|
|
5431
|
+
#[test]
|
|
5432
|
+
fn narrative_citation_projects_suffix_and_preserves_the_following_reference() {
|
|
5433
|
+
let output = parse_to_json("@a\n[p. 4; @b] and [missing]");
|
|
5434
|
+
let inlines = &output["blocks"][0]["c"];
|
|
5435
|
+
let citations = &inlines[0]["c"][0];
|
|
5436
|
+
assert_eq!(citations[0]["citationId"], "a");
|
|
5437
|
+
assert_eq!(citations[0]["citationMode"]["t"], "AuthorInText");
|
|
5438
|
+
assert_eq!(
|
|
5439
|
+
citations[0]["citationSuffix"],
|
|
5440
|
+
json!([{"t": "Str", "c": "p.\u{a0}4"}])
|
|
5441
|
+
);
|
|
5442
|
+
assert_eq!(citations[1]["citationId"], "b");
|
|
5443
|
+
assert_eq!(citations[1]["citationMode"]["t"], "NormalCitation");
|
|
5444
|
+
assert_eq!(inlines[0]["c"][1][1]["t"], "SoftBreak");
|
|
5445
|
+
assert_eq!(inlines[4], json!({"t": "Str", "c": "[missing]"}));
|
|
5446
|
+
}
|
|
5447
|
+
|
|
5495
5448
|
fn pandoc_options() -> crate::options::ParserOptions {
|
|
5496
5449
|
flavor_options(crate::options::Flavor::Pandoc)
|
|
5497
5450
|
}
|
{panache_cli-3.17.1 → panache_cli-3.17.2}/crates/panache-parser/src/parser/inlines/citations.rs
RENAMED
|
@@ -7,7 +7,52 @@
|
|
|
7
7
|
//! - Author-in-text: `@doe99` (bare, without brackets)
|
|
8
8
|
|
|
9
9
|
use super::sink::InlineSink;
|
|
10
|
-
use crate::syntax::SyntaxKind;
|
|
10
|
+
use crate::{options::ParserOptions, syntax::SyntaxKind};
|
|
11
|
+
|
|
12
|
+
/// Narrative suffixes yield to links, reference shapes, and bracketed spans.
|
|
13
|
+
/// Their closing bracket must be found by parsing inlines, since emphasis and
|
|
14
|
+
/// raw TeX can contain otherwise unmatched closing brackets.
|
|
15
|
+
pub(super) fn narrative_suffix_end(
|
|
16
|
+
text: &str,
|
|
17
|
+
key_end: usize,
|
|
18
|
+
end: usize,
|
|
19
|
+
config: &ParserOptions,
|
|
20
|
+
) -> Option<usize> {
|
|
21
|
+
let tail = &text[key_end..end];
|
|
22
|
+
let rest = tail.trim_start_matches([' ', '\t', '\r', '\n']);
|
|
23
|
+
if !rest.starts_with('[') {
|
|
24
|
+
return None;
|
|
25
|
+
}
|
|
26
|
+
let open = end - rest.len();
|
|
27
|
+
let ctx = super::links::LinkScanContext::from_options(config);
|
|
28
|
+
if config.extensions.inline_links
|
|
29
|
+
&& super::links::try_parse_inline_link_parts(rest, false, ctx).is_some()
|
|
30
|
+
{
|
|
31
|
+
return None;
|
|
32
|
+
}
|
|
33
|
+
if config.extensions.bracketed_spans
|
|
34
|
+
&& super::bracketed_spans::try_parse_bracketed_span(rest).is_some()
|
|
35
|
+
{
|
|
36
|
+
return None;
|
|
37
|
+
}
|
|
38
|
+
if config.extensions.reference_links
|
|
39
|
+
&& let Some((_, _, label, _, shortcut)) = super::links::try_parse_reference_link(
|
|
40
|
+
rest,
|
|
41
|
+
config.extensions.shortcut_reference_links,
|
|
42
|
+
config.extensions.inline_links,
|
|
43
|
+
config.extensions.spaced_reference_links,
|
|
44
|
+
ctx,
|
|
45
|
+
)
|
|
46
|
+
&& (!shortcut
|
|
47
|
+
|| config
|
|
48
|
+
.refdef_labels
|
|
49
|
+
.as_ref()
|
|
50
|
+
.is_some_and(|labels| labels.contains(&super::refdef_map::normalize_label(&label))))
|
|
51
|
+
{
|
|
52
|
+
return None;
|
|
53
|
+
}
|
|
54
|
+
super::core::inline_bracket_end(text, open + 1, end, config).map(|close| close + 1)
|
|
55
|
+
}
|
|
11
56
|
|
|
12
57
|
/// Try to parse a bracketed citation starting at the current position.
|
|
13
58
|
/// Returns Some((length, content)) if successful, None otherwise.
|
|
@@ -253,9 +298,7 @@ pub fn is_crossref_key(key: &str, custom_prefixes: &[String]) -> bool {
|
|
|
253
298
|
|
|
254
299
|
/// Whether `key`'s prefix (the segment before the first `-`) appears in
|
|
255
300
|
/// `custom_prefixes`. Unlike [`is_quarto_crossref_key`], this matches *only*
|
|
256
|
-
/// the configured
|
|
257
|
-
/// cross-reference (whose target panache can't resolve) apart from a built-in
|
|
258
|
-
/// one (whose target it can and should validate).
|
|
301
|
+
/// the configured prefixes. Matching is case-insensitive.
|
|
259
302
|
pub fn has_custom_crossref_prefix(key: &str, custom_prefixes: &[String]) -> bool {
|
|
260
303
|
if custom_prefixes.is_empty() {
|
|
261
304
|
return false;
|
|
@@ -584,6 +627,15 @@ fn emit_bracketed_citation_content(builder: &mut impl InlineSink, content: &str)
|
|
|
584
627
|
|
|
585
628
|
/// Emit a bare citation node to the builder.
|
|
586
629
|
pub(crate) fn emit_bare_citation(builder: &mut impl InlineSink, key: &str, has_suppress: bool) {
|
|
630
|
+
emit_narrative_citation(builder, key, has_suppress, "");
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
pub(super) fn emit_narrative_citation(
|
|
634
|
+
builder: &mut impl InlineSink,
|
|
635
|
+
key: &str,
|
|
636
|
+
has_suppress: bool,
|
|
637
|
+
suffix: &str,
|
|
638
|
+
) {
|
|
587
639
|
builder.start_node(SyntaxKind::CITATION.into());
|
|
588
640
|
|
|
589
641
|
if has_suppress {
|
|
@@ -600,6 +652,23 @@ pub(crate) fn emit_bare_citation(builder: &mut impl InlineSink, key: &str, has_s
|
|
|
600
652
|
builder.token(SyntaxKind::CITATION_KEY.into(), key);
|
|
601
653
|
}
|
|
602
654
|
|
|
655
|
+
if !suffix.is_empty() {
|
|
656
|
+
let content = suffix.trim_start_matches([' ', '\t', '\r', '\n']);
|
|
657
|
+
let gap = &suffix[..suffix.len() - content.len()];
|
|
658
|
+
for part in gap.split_inclusive('\n') {
|
|
659
|
+
let horizontal = part.trim_end_matches(['\r', '\n']);
|
|
660
|
+
if !horizontal.is_empty() {
|
|
661
|
+
builder.token(SyntaxKind::WHITESPACE.into(), horizontal);
|
|
662
|
+
}
|
|
663
|
+
if horizontal.len() < part.len() {
|
|
664
|
+
builder.token(SyntaxKind::NEWLINE.into(), &part[horizontal.len()..]);
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
builder.token(SyntaxKind::CITATION_SUFFIX_START.into(), "[");
|
|
668
|
+
emit_bracketed_citation_content(builder, &content[1..content.len() - 1]);
|
|
669
|
+
builder.token(SyntaxKind::CITATION_SUFFIX_END.into(), "]");
|
|
670
|
+
}
|
|
671
|
+
|
|
603
672
|
builder.finish_node();
|
|
604
673
|
}
|
|
605
674
|
|