Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
b4d6662
begin work on repeating paragraphs
404Wolf Jan 9, 2026
e35ebfc
remove unused import
404Wolf Jan 9, 2026
758526a
add docs and more progress
404Wolf Jan 9, 2026
ed43318
more progress on repeating paragraphs
404Wolf Jan 9, 2026
9c8f76f
switch to instance based version
404Wolf Jan 9, 2026
72065f9
finish repeated paragraphs
404Wolf Jan 9, 2026
70627f3
start work on repeated tables
404Wolf Jan 9, 2026
33581c1
more progress for repeated tables
404Wolf Jan 10, 2026
0e74be5
reorganize
404Wolf Jan 10, 2026
e45b101
set up outline
404Wolf Jan 10, 2026
cb2ab12
set up more tests
404Wolf Jan 10, 2026
48e0b97
change example and more progress on repeating matchers
404Wolf Jan 10, 2026
51dfeaf
fix up old tests
404Wolf Jan 10, 2026
4566b31
fix positioning
404Wolf Jan 10, 2026
0f510b5
fix repeating tables
404Wolf Jan 10, 2026
93f753a
fix another test
404Wolf Jan 10, 2026
db6f60c
fix schema node walking
404Wolf Jan 10, 2026
a727ba6
improve table docs
404Wolf Jan 10, 2026
3a28b77
finalize repeated tables
404Wolf Jan 10, 2026
2398177
fix table doc
404Wolf Jan 10, 2026
6692fc1
improve list formatting in docs
404Wolf Jan 10, 2026
5f1c999
add schema and input
404Wolf Jan 10, 2026
bb9ab85
whitespace insensitive for table cells
404Wolf Jan 10, 2026
31800e1
fix trimming for matchers in tables
404Wolf Jan 10, 2026
c9ecc4b
make cargo check happy
404Wolf Jan 10, 2026
45761e6
run clippy
404Wolf Jan 10, 2026
11d5c98
update the example
404Wolf Jan 11, 2026
f1f3a91
make clippy happy
404Wolf Jan 11, 2026
3573858
fix doc tests
404Wolf Jan 11, 2026
ecac0e4
only on push to main
404Wolf Jan 11, 2026
ef5c4df
chore: Release
404Wolf Jan 11, 2026
260c14b
update mdvalidate utils
404Wolf Jan 11, 2026
8ff1e30
chore: Release
404Wolf Jan 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
name: Release
on:
push:
branches:
- main
tags:
- "v*"
workflow_dispatch:
permissions:
contents: write

jobs:
build:
strategy:
Expand Down
15 changes: 3 additions & 12 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -1,35 +1,28 @@
name: Tests

on:
push:

jobs:
test:
runs-on: ubuntu-latest

permissions:
contents: read
actions: write

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install Nix
uses: cachix/install-nix-action@v31
with:
extra_nix_config: |
experimental-features = nix-command flakes

- name: Restore Nix store
id: nix-cache
uses: nix-community/cache-nix-action/restore@v7
with:
primary-key: nix-${{ runner.os }}-${{ hashFiles('**/flake.lock') }}
restore-prefixes-first-match: nix-${{ runner.os }}-

- name: Restore Cargo cache
uses: actions/cache/restore@v4
id: cargo-cache
Expand All @@ -43,13 +36,12 @@ jobs:
key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-${{ runner.os }}-

- name: Build project
run: nix develop --command cargo build

- name: Run tests
run: nix develop --command cargo test

- name: Run clippy
run: nix develop --command cargo clippy -- -D warnings
- name: Save Cargo cache
if: always()
uses: actions/cache/save@v4
Expand All @@ -61,7 +53,6 @@ jobs:
~/.cargo/git/db/
target/
key: ${{ steps.cargo-cache.outputs.cache-primary-key }}

- name: Save Nix store
uses: nix-community/cache-nix-action/save@v7
if: always()
Expand All @@ -72,4 +63,4 @@ jobs:
purge-prefixes: nix-${{ runner.os }}-
purge-created: 0
purge-last-accessed: P7D
purge-primary-key: never
purge-primary-key: never
25 changes: 25 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## ts_types imports
- Always import `ts_types` via wildcard (`use crate::mdschema::validator::ts_types::*;`) so we do not list individual members.

## Test imports
- Prefer `super::...` imports inside `#[cfg(test)]` modules (e.g., `super::test_utils::ValidatorTester` or `super::TextualVsTextualValidator`) so the tests stay concise and structured.
- Keep using wildcard `ts_types::*` in tests as well.

## Documentation
- When a doc block lists both `schema_str` and `input_str`, use the exact wording:
- `schema_str`: The full input document (so far).
- `input_str`: The full schema document.
- Every `///` doc line that mentions `got_eof` must read verbatim `/// * \`got_eof\`: Whether we have received the full input document.`

## Node-walker validator docs
- Every file under `src/mdschema/validator/node_walker/validators` should start with a module doc comment and list each validator type defined in that file.

## Walker usage
- Never add aliases such as `let schema_str = walker.schema_str()` or `let input_str = walker.input_str()`; call the walker methods directly.

## Contributing-from-CONTRIBUTING.md
- When we talk about a data structure that stores references to schema and input, keep the schema entry first.
- Prefer `get_node_text` from `ts_utils` over calling `utf8_text` directly.
- In tests, keep assertion order consistent: position assertions first, followed by errors, then values.
- Avoid `ValidationResult::destruct`; use accessors like `result.errors()`, `result.value()`, or `result.farthest_reached_pos()`.
- When debugging tests, call `test_logging!();` (from `utils.rs`) at the top of the suite to hydrate logs and trace output.
Loading