| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
support
Add `dispatch_linear`, `dispatch_tree`, and `dispatch_phf` as mutually
exclusive features for selecting the command dispatch strategy. When no
strategy feature is enabled, an auto-selection heuristic picks the
optimal strategy based on command table characteristics (size, name
length, nesting depth).
Add the `bench_support` feature to compile all three generators for the
benchmark harness, and introduce `bench_cell!` to generate benchmark
cells comparing strategies.
The PHF generator uses a CHD minimal perfect hash for O(1) lookup
independent of table size, while the trie generator was refactored to
use a shared fallback method, keeping code size linear in table size.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
BREAKING CHANGE: Replace the `build`/`builds` feature system with
compile-time macro-driven generation. `gen_program!()` now automatically
invokes `build_comp!()` and `build_pathf!()` when the `comp`/`pathf`
features are enabled, eliminating the need for `build.rs` and
`[build-dependencies]` blocks.
This removes the `build` feature, the `mingling::build` module, and all
related build-time API functions. Completion scripts are now written to
`{target_directory}/mingling/` instead of `target/release/`. The
`mingling_cli` uses `build_comp!("mling")` for its custom binary name.
|
| |
|
|
|
|
| |
BREAKING CHANGE: `#[completion]` functions must now take `ShellContext`
by value instead of `&ShellContext`. Reference parameters are reserved
for resource injection.
|
| |
|
|
|
|
|
| |
Allow completion functions to omit the context parameter, accept owned
ShellContext or any From<&ShellContext> type, and return any type
implementing Into<Suggest>. Add From<&str> for SuggestItem and derive
Clone for ShellContext.
|
| |
|
|
|
|
|
|
|
| |
Remove the `pack!`, `pack_err!`, `pack_structural!`, and
`pack_err_structural!` macros, replacing all pipeline type definitions
with `#[derive(Grouped)]` and `#[derive(Grouped, Wrap)]` attributes.
This changes the generated struct shape from named-field structs with an
`inner` field to tuple structs accessed via `.0`, and removes the
auto-generated `name` and `info` fields from error types.
|
| |
|
|
|
|
| |
Add `#[derive(Wrap)]` to treat a struct as its inner type, generating
`From`, `Deref`, and `DerefMut` implementations. Supports single-field
structs or multi-field structs with a `#[wrap]`-marked field.
|
| |
|
|
|
|
|
| |
The `dispatcher!` macro no longer requires a `CMD*` dispatcher type
argument; the dispatcher struct is now generated internally as
`__Dispatcher{Pascal}`. The `Node` type, `node!` macro, and
`Dispatcher::node()` / `clone_dispatcher()` methods are removed.
|
| |
|
|
|
|
|
| |
Dispatchers are now always registered at compile time, removing the
`with_dispatcher` / `with_dispatchers` methods and the
`PathfinderConfig` API. The `dispatch_tree` feature now only controls
the matching strategy (trie vs linear list).
|
| |
|
|
|
| |
Mark all source files with a comment indicating they are not optimized
for documentation purposes.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
Add `Metadata<B>` trait and `#[metadata(Entry)]` attribute macro
to attach arbitrary, compile-time-typed metadata to entries.
Implement `ProgramCollect::get_metadata<T>()` for runtime retrieval,
backed by a global registry populated by `register_metadata!`.
Extend `pathf` with `MetadataPattern` to resolve metadata types
across modules at build time. Add two examples demonstrating
metadata usage with and without pathf integration.
|
| |
|
|
|
|
|
|
| |
Rename the internal fallback type and its associated `ProgramCollect`
plumbing from `ErrorDispatcherNotFound`/`build_dispatcher_not_found` to
`EntryFallback`/`build_entry_fallback`, along with the generated enum
variant and pack type. Update all documentation, examples, and tests
accordingly.
|
| |
|
|
|
| |
Update all references across docs, examples, and configuration files to
use the shorter `extras` feature name.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new `#[command]` attribute macro (feature-gated behind
`extra_macros`) that converts a plain function with a `Vec<String>`
parameter into a fully wired Mingling command. The macro generates a
`dispatcher!` call, a `#[chain]` wrapper, and a hidden module
re-exporting
all generated types.
Also add `CommandPattern` to the pathf pattern analyzer to recognize
`#[command]`-annotated functions and track their generated hidden
modules.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
pipeline error routing
|
| |
|
|
|
|
|
| |
Implement `RenderResult::append_other()` to merge buffered content and
immediate output behavior from one result into another. Add the
`r_append!` macro with both explicit buffer (`dst, src`) and implicit
buffer (`src`) usage forms, re-exported from `mingling::prelude`.
|
| |
|
|
|
|
|
|
|
|
| |
Remove `Deref<Target=str>` and `render_text:String` in favor of
`render_buffer:Vec<(String, RenderResultMode)>` and an
`immediate_output`
flag. Add `RenderResultMode` enum, `r_eprint!`/`r_eprintln!` macros, and
new buffer manipulation methods (`append_to_buffer`, `eprint`, etc.).
Update `Display` to trim output and remove trailing newline. Migrate all
callers and tests away from `Deref` usage.
|
| |
|
|
|
|
|
| |
Add `#![deny(missing_docs)]` across multiple crates and fill in
documentation for all public items, including struct fields, enum
variants, trait methods, and proc macros. Also mark two shell scripts
as executable.
|
| |
|
|
|
|
|
|
|
|
|
| |
macros
Reintroduce `r_print!` and `r_println!` macros as public exports, now
supporting both explicit buffer argument and implicit `#[buffer]` attr.
Add `#[buffer]` attribute macro that wraps unit-returning functions to
produce a `RenderResult` with an automatically injected buffer variable.
Relax `RenderResult::print()` and `println()` to accept `impl
AsRef<str>`.
|
| |
|
|
|
| |
Move routing methods exclusively to the `Routable` trait and update
all macro-generated code to reference `Routable` instead of `Grouped`
|
| |
|
|
|
|
| |
Use the span of the `?` token when generating the macro invocation in
the `#[routeify]` transformation, so that rust-analyzer resolves hover
and go-to-definition on `?` to the `route!` macro's documentation
|
| | |
|
| |
|
|
|
|
| |
Restructure flat module layout into logical directories (attr/, derive/,
func/, systems/, extensions/, utils.rs). Tighten internal function
visibility to pub(crate). All public API signatures remain unchanged.
|
| |
|
|
|
|
|
| |
Implement an `extensions` module in `mingling_macros` that allows
attribute macros to accept extension identifiers (e.g., `routeify`)
which are re-dispatched as outer attributes before the core macro
logic runs, enabling extensibility without modifying existing macros
|
| |
|
|
|
|
| |
Introduce a `Routable` trait with `to_chain` and `to_render`
methods, replacing direct `Grouped` usage in the `route!` macro
so error branches correctly route through the rendering pipeline
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
add Write import
|
| |
|
|
|
|
|
| |
BREAKING CHANGE: The `render` method on `Renderer`, `HelpRequest`, and
`ProgramCollect` now returns `RenderResult` instead of taking
`&mut RenderResult`. The `r_print!` and `r_println!` macros have been
removed in favor of using `std::io::Write` directly on `RenderResult`.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
inline
Instead of using `include!` with generated paths, read the file at
compile time and parse it into a token stream during macro expansion.
|
| |
|
|
|
|
|
| |
Add `mingling_pathf` sub-crate and `pathf` feature for automatic
resolution of Mingling type module paths at build time. Scans source
files, identifies macro invocations via pattern matchers, and generates
mapping files consumed by `gen_program!()`.
|
| |
|
|
|
|
|
| |
Support `&mut T` resource parameters in async chain functions by using
an extract-store pattern that avoids holding mutable borrows across
await
points. Remove the previous compile-time rejection of this combination.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Introduce `StructuralData` sealed trait and `pack_structural!` /
`group_structural!` / `derive(StructuralData)` macros to control
structured rendering separately from grouping. `Groupped` no longer
requires `Serialize`.
|
| |
|
|
|
|
|
|
|
| |
Fix the static name generation for dispatch tree nodes to use a correct
snake_case conversion instead of a simple `.` to `_` replacement. Also
correct the `__comp` completion dispatcher name from triple underscore
to double underscore, resolving a mismatch between
`register_dispatcher!`
and `program_comp_gen`
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Add duplicate variant checks for chain, renderer, help, and completion
registrations to produce a clear compile error instead of silently
generating unreachable code
|