Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
902563a
Add run and resume subcommands to command-line
istathar May 12, 2026
83349ac
Error messages for run failures
istathar May 12, 2026
523eee5
Stubs for runner code
istathar May 12, 2026
b11a33c
Add RunId parse and render
istathar May 14, 2026
b2c2b6f
Implement basic state store
istathar May 14, 2026
76f780f
Write and parse PFFTT lines
istathar May 15, 2026
466aea7
Codify the Qualified Paths of steps
istathar May 15, 2026
8652223
Fix warning
istathar May 15, 2026
28be1af
Introduce value:: module
istathar May 15, 2026
fbe6e54
Evaluator to reduce Operations to Values!
istathar May 16, 2026
335eaef
Preliminary code for interaction with user
istathar May 16, 2026
b9cf8ed
Appender for writing to PFFTT files
istathar May 16, 2026
92259af
Add time dependency
istathar May 16, 2026
8fe8369
Walk sections and steps
istathar May 16, 2026
164417a
Interpolate description variables
istathar May 16, 2026
d98fafa
Preliminary loop evaluation
istathar May 16, 2026
607dcf0
Implement run and resume subcommands
istathar May 17, 2026
afc1e29
Write absolute file:/// URI to manifest
istathar May 17, 2026
1ce9ba6
Drop matches! macro from runner checks
istathar May 17, 2026
19ed9bf
Improve test coverage
istathar May 17, 2026
74bf87f
Improve error path coverage
istathar May 17, 2026
76aea87
Preserve whitespace in strings when translating
istathar May 17, 2026
5f11876
Consolidate duplicate tests
istathar May 17, 2026
e6b612a
Further consolidate duplicate tests and fix comments
istathar May 17, 2026
92ac888
Use temp dirs properly and guards to ensure test cleanup
istathar May 17, 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
2 changes: 2 additions & 0 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: Check
on:
pull_request:
workflow_dispatch:
permissions:
contents: read

jobs:
build:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: Release
on:
release:
types: [published]
permissions:
contents: read

jobs:
build:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
# rendering artifacts
*.pdf
.*.typ
/.store

# documentation symlinks
/doc/references
53 changes: 53 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ owo-colors = "4"
regex = "1.11.1"
serde = { version = "1.0.209", features = [ "derive" ] }
serde_json = "1.0"
time = { version = "0.3", features = [ "formatting" ] }
tinytemplate = "1.2.1"

tracing = "0.1.40"
Expand Down
15 changes: 5 additions & 10 deletions src/domain/engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,7 @@ impl<'i> Scope<'i> {
/// Filters out ResponseBlock, CodeBlock, AttributeBlock, etc.
pub fn substeps(&self) -> impl Iterator<Item = &Scope<'i>> {
self.children()
.filter(|s| {
matches!(
s,
Scope::DependentBlock { .. } | Scope::ParallelBlock { .. }
)
})
.filter(|s| s.is_step())
}

/// Returns the text content of this step (first paragraph).
Expand Down Expand Up @@ -168,10 +163,10 @@ impl<'i> Scope<'i> {

/// Returns true if this scope represents a step (dependent or parallel).
pub fn is_step(&self) -> bool {
matches!(
self,
Scope::DependentBlock { .. } | Scope::ParallelBlock { .. }
)
match self {
Scope::DependentBlock { .. } | Scope::ParallelBlock { .. } => true,
_ => false,
}
}

/// Returns section info (numeral, title) if this is a SectionChunk.
Expand Down
16 changes: 13 additions & 3 deletions src/domain/nasa_esa_iss/adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,19 @@ fn inline_procedures(doc: &mut Document) {
}
}

doc.body.retain(|node| {
!matches!(node, Node::Sequential { title: None, invocations, .. } if !invocations.is_empty())
});
doc.body
.retain(|node| {
if let Node::Sequential {
title: None,
invocations,
..
} = node
{
invocations.is_empty()
} else {
true
}
});
}

/// Collect ordinals from invocation-only steps: procedure_name -> ordinal.
Expand Down
8 changes: 7 additions & 1 deletion src/formatting/formatter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -685,7 +685,13 @@ impl<'i> Formatter<'i> {
if func
.parameters
.iter()
.any(|p| matches!(p, Expression::Multiline(_, _, _))) =>
.any(|p| {
if let Expression::Multiline(_, _, _) = p {
true
} else {
false
}
}) =>
{
line.flush();
self.add_fragment_reference(Syntax::Neutral, " ");
Expand Down
12 changes: 10 additions & 2 deletions src/highlighting/typst.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,11 @@ mod check {
let result = escape_typst(input);

// Should return borrowed reference when no quotes to escape
assert!(matches!(result, Cow::Borrowed(_)));
if let Cow::Borrowed(_) = result {
// ok
} else {
panic!("expected Cow::Borrowed");
}
assert_eq!(result, "hello world");
}

Expand All @@ -84,7 +88,11 @@ mod check {
let result = escape_typst(input);

// Should return owned string when quotes need escaping
assert!(matches!(result, Cow::Owned(_)));
if let Cow::Owned(_) = result {
// ok
} else {
panic!("expected Cow::Owned");
}
assert_eq!(result, "hello \\\"world\\\"");
}

Expand Down
2 changes: 2 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ pub mod language;
pub mod parsing;
pub mod program;
pub(crate) mod regex;
pub mod runner;
pub mod templating;
pub mod translation;
pub mod value;
Loading