nushell/crates/nu-protocol/src
Devyn Cairns 2562e306b6
Improve handling of custom values in plugin examples (#12409)
# Description
Requested by @ayax79. This makes the custom value behavior more correct,
by calling the methods on the plugin to handle the custom values in
examples rather than the methods on the custom values themselves. This
helps for handle-type custom values (like what he's doing with
dataframes).

- Equality checking in `PluginTest::test_examples()` changed to use
`PluginInterface::custom_value_partial_cmp()`
- Base value rendering for `PluginSignature` changed to use
`Plugin::custom_value_to_base_value()`
- Had to be moved closer to `serve_plugin` for this reason, so the test
for writing signatures containing custom values was removed
- That behavior should still be tested to some degree, since if custom
values are not handled, signatures will fail to parse, so all of the
other tests won't work.

# User-Facing Changes

- `Record::sort_cols()` method added to share functionality required by
`PartialCmp`, and it might also be slightly faster
- Otherwise, everything should mostly be the same but better. Plugins
that don't implement special handling for custom values will still work
the same way, because the default implementation is just a pass-through
to the `CustomValue` methods.

# Tests + Formatting
- 🟢 `toolkit fmt`
- 🟢 `toolkit clippy`
- 🟢 `toolkit test`
- 🟢 `toolkit test stdlib`
2024-04-05 21:57:20 -05:00
..
ast Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
config Exposed the recursion limit value as a config option (#12308) 2024-03-28 15:40:45 -05:00
debugger Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
engine Fix hooks on 0.92.0 (#12383) 2024-04-04 09:25:54 +02:00
errors Bump crate-ci/typos and fix typos (#12381) 2024-04-04 09:59:21 +02:00
pipeline_data Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
plugin Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
value Improve handling of custom values in plugin examples (#12409) 2024-04-05 21:57:20 -05:00
alias.rs IO and redirection overhaul (#11934) 2024-03-14 15:51:55 -05:00
did_you_mean.rs Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
eval_base.rs Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
eval_const.rs Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
example.rs Fix build of nu-protocol without plugin feature enabled (#12323) 2024-03-28 22:39:57 +01:00
id.rs Add virtual path abstraction layer (#9245) 2023-05-23 23:48:50 +03:00
lev_distance.rs Suggest existing variables on not found (#8902) 2023-05-02 18:17:14 +03:00
lib.rs Restructure nu-protocol in more meaningful units (#11917) 2024-03-10 18:45:45 +01:00
module.rs Error on use path item1 item2, if item1 is not a module (#11183) 2023-12-05 11:38:45 +01:00
signature.rs Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
span.rs Make drop notification timing for plugin custom values more consistent (#12341) 2024-04-04 09:13:25 +02:00
syntax_shape.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation (#11886) 2024-02-23 09:17:09 +08:00
ty.rs Glob: don't allow implicit casting between glob and string (#11992) 2024-02-28 23:05:35 +08:00
util.rs Convert more ShellError variants to named fields (#11173) 2023-11-28 06:43:51 -06:00