aboutsummaryrefslogtreecommitdiff
path: root/mingling
Commit message (Collapse)AuthorAgeFilesLines
* feat(any): make `Grouped` trait unsafe and encapsulate `AnyOutput`魏曹先生27 hours1-1/+1
| | | | | | | | | | fields Declare `Grouped` as `unsafe trait` to make its soundness invariant visible. Make `AnyOutput.type_id` and `member_id` private; add public accessors and the `unsafe fn new_bare` constructor.
* feat(macros): add `#[mlint(...)]` marker attribute macro魏曹先生38 hours1-0/+3
|
* feat(macros): add render_route macro and renderify attribute for render魏曹先生39 hours1-0/+9
| | | | pipeline error routing
* feat(core, macros): add r_append! macro and RenderResult::append_other魏曹先生42 hours1-0/+6
| | | | | | | 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`.
* feat(core)!: replace RenderResult with buffered output model魏曹先生43 hours3-5/+17
| | | | | | | | | | 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.
* chore: add missing docs lint and document public API魏曹先生2 days2-0/+6
| | | | | | | 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.
* feat: add docs_rs feature and improve documentation build魏曹先生2 days4-3/+21
| | | | | | | | Add `docs_rs` feature flag to enable docs.rs-specific configuration, including `--generate-link-to-definition` and logo display. Include the feature in build scripts, editor settings, and feature constants for consistent documentation generation.
* docs: migrate renderer examples to buffer macro and update docs魏曹先生3 days1-4/+6
| | | | | | | | Update all documentation and code examples to use the new `#[renderer(buffer)]` pattern with `r_println!` instead of manually constructing `RenderResult` with `writeln!`.
* feat(macros): add `#[buffer]` attribute and re-export `r_print!(ln)`魏曹先生3 days1-0/+8
| | | | | | | | | | | 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>`.
* feat: add pick_or, pick_or_default, and pick_or_route shorthands魏曹先生3 days1-3/+3
| | | | | | | | | | Remove the `Default` bound from `pick()` and `EntryPicker::pick()`, allowing non-Default types to be used as arguments. Add `IntoPicker::pick_or`, `pick_or_default`, and `pick_or_route` convenience methods for common fallback patterns. Fix token splitting in `arg!` macro to correctly handle angle brackets.
* feat(core)!: remove `to_chain` and `to_render` from `Grouped` trait魏曹先生3 days1-1/+4
| | | | | Move routing methods exclusively to the `Routable` trait and update all macro-generated code to reference `Routable` instead of `Grouped`
* feat(arg-picker): add REMAINS constant and re-export via consts module魏曹先生3 days2-15/+4
| | | | | Move the REMAINS constant definition into arg_picker and re-export it through mingling's constants module for unified access
* feat(extensions): add routeify extension macro for error routing魏曹先生3 days1-0/+4
|
* feat(multishell): add `picker` feature gate and deprecate conflicting魏曹先生3 days1-1/+1
| | | | | | | | | | | | methods Deprecate `ShellContext` methods `filling_argument_first`, `filling_argument`, `typing_argument`, `strip_typed_argument`, and `get_typed_arguments` when the `picker` feature is active, as they do not work under all `ParserStyle` settings. Add `#![allow(deprecated)]` to the affected modules to suppress warnings from internal usage.
* docs(examples): add example `example-argument-picker"`unreleased魏曹先生3 days1-0/+245
|
* fix!: rename `Groupped` to `Grouped` across the codebase魏曹先生3 days3-26/+26
|
* fix: propagate help flag to program context for global pickers魏曹先生4 days1-3/+12
|
* feat(arg_picker): add mingling_support feature flag魏曹先生4 days2-2/+5
|
* feat: deprecate basic and structural renderer setups when picker is魏曹先生4 days2-0/+40
| | | | enabled
* docs: add doc comments for Picker, AsPicker, and ProgramSetup traits魏曹先生4 days2-0/+8
|
* feat: migrate mingling-specific picker code into mingling crate魏曹先生4 days11-95/+260
| | | | | | | | BREAKING CHANGE: Remove `mingling_support` feature from arg-picker crate. The `EntryPicker` trait and `corebind` module are now part of the mingling crate directly, and `build_pattern1` is now a public method.
* feat(picker): extract remains constant and consolidate imports魏曹先生4 days3-8/+26
| | | | | Move the inline `remains_arg` definition into a shared public constant `REMAINS` and update all consumers to import it from the new location.
* refactor(picker): extract pick_flag helper to reduce duplication魏曹先生5 days1-20/+30
|
* feat(setups): add picker module with flag-based program setup魏曹先生5 days5-0/+333
|
* fix(core)!: conditionally override exit code in ExitCodeSetup魏曹先生5 days1-2/+9
|
* ix(macros)!: require explicit `.into()` on chain function return values魏曹先生5 days2-10/+10
|
* docs: remove redundant logo link from lib.md魏曹先生5 days1-5/+0
|
* docs(mingling): move crate-level docs to separate lib.md魏曹先生5 days2-70/+102
|
* refactor: rename `mingling_picker` to `arg_picker`魏曹先生5 days2-8/+8
|
* feat(mingling, mingling_picker): add feature constants and fix魏曹先生6 days1-0/+22
| | | | | | | | | | formatting Add `MINGLING_CORE` and `MINGLING_MACROS` feature flag constants to the mingling crate, mirroring existing pattern for other features Reorganize imports and reformat closures in mingling_picker for consistent style
* docs: add module-level documentation and improve doc comments魏曹先生6 days2-0/+19
|
* feat(picker2): complete Picker2 prototype魏曹先生6 days2-11/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Picker2 replaces the original Picker1 with a two-phase (tag → pick) + mask-bitmap architecture, decoupling argument matching from type conversion via a composable matcher pipeline. Architecture - FlagMatcher — boolean flags (--verbose) - ArgMatcher — single flag+value pairs (--name Alice) - MultiArgMatcher — multi-value flag groups (--files a.txt b.txt) - PositionalMatcher — positional arguments, respects `--` - SingleMatcher — composite for Single-type Pickables Types - Flag (Active/Inactive) — semantic bool flag value - String + 14 numeric types via SinglePickable trait - Vec<T> — greedy multi-value (all SinglePickable types) - VecUntil<T> — bounded multi-value via BoundaryCheck trait - VecUntil<T>, pick_string, pick_numbers, pick_bool, pick_flag Style system - UNIX_STYLE (kebab), POWERSHELL_STYLE (Pascal), WINDOWS_STYLE (Pascal) - naming_case auto-conversion via just_fmt integration - Style-aware separator (= for Unix, : for PS/Windows) Infrastructure - internal_repeat! macro generates PickerPattern1..=32 - SinglePickable blanket impl → Pickable - MultiPickableWithBoundary trait with greedy/bounded variants - 151 integration tests - Docs updated for parser feature
* docs(changelog): document RenderResult::new and removed r_print macros魏曹先生11 days1-2/+2
|
* style: Reorder imports and reformat code with cargo fmt魏曹先生11 days1-4/+4
|
* feat(mingling): add Write import and doc comment for picker re-export魏曹先生11 days1-1/+4
|
* refactor(examples): migrate renderers to return RenderResult and add魏曹先生11 days1-100/+225
| | | | | | | | | std::io::Write import Replace r_println!/r_print! macro usage across all example renderers with explicit RenderResult construction using std::io::Write, enabling more flexible output handling and reducing reliance on macro-side effects.
* feat: require renderers to return RenderResult instead of mutating one魏曹先生11 days1-17/+14
| | | | | | | 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`.
* docs(dev): add Picker2 arguments parser issue page魏曹先生12 days1-0/+11
|
* feat: add mingling-picker and mingling-picker-macros crates魏曹先生12 days2-1/+16
|
* chore: run cargo fmt and rearrange re-exports in mingling魏曹先生2026-07-026-25/+41
|
* feat(examples): add pathf + dispatch tree combination example魏曹先生2026-06-291-0/+65
|
* feat(docs): add Module Pathfinder example for the `pathf` feature魏曹先生2026-06-281-0/+63
|
* feat(workspace): add mingling_pathf crate and pathf feature魏曹先生2026-06-282-2/+14
|
* feat(mingling): add directory environment resources and setup魏曹先生2026-06-278-0/+395
| | | | | Add four new resource types for common directory paths and a convenience setup struct that registers all of them at once.
* docs: improve documentation, mark internal items as `#[doc(hidden)]`魏曹先生2026-06-271-25/+38
| | | | | | | | Add module-level docs for the hook system, enhance doc examples for macros with usage syntax, fix typos in cross-references, and hide internal debugging macros and mock types from public documentation
* feat(macros): add async mutable resource injection for `#[chain]`魏曹先生2026-06-271-2/+1
| | | | | | | 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.
* docs: restructure README and remove redundant imports魏曹先生2026-06-261-1/+1
| | | | | | | Move the Getting Started section above Writing with Mingling, replace emoji decorations with plain text, remove unnecessary `use mingling::prelude::*;` imports from code examples, and update crate description.
* refactor(general_renderer): rename to structural_renderer魏曹先生2026-06-266-167/+167
|
* feat(core): decouple structured output from Groupped trait魏曹先生2026-06-263-17/+76
| | | | | | | Introduce `StructuralData` sealed trait and `pack_structural!` / `group_structural!` / `derive(StructuralData)` macros to control structured rendering separately from grouping. `Groupped` no longer requires `Serialize`.
* Redesign hook system with structured info types and ProgramControls魏曹先生2026-06-243-21/+33
|