Make custom value type handling more consistent (#12230)

[Context on
Discord](https://discord.com/channels/601130461678272522/855947301380947968/1219425984990806207)

# Description

- Rename `CustomValue::value_string()` to `type_name()` to reflect its
usage better.
- Change print behavior to always call `to_base_value()` first, to give
the custom value better control over the output.
- Change `describe --detailed` to show the type name as the subtype,
rather than trying to describe the base value.
- Change custom `Type` to use `type_name()` rather than `typetag_name()`
to make things like `PluginCustomValue` more transparent

One question: should `describe --detailed` still include a description
of the base value somewhere? I'm torn on it, it seems possibly useful
for some things (maybe sqlite databases?), but having `describe -d` not
include the custom type name anywhere felt weird. Another option would
be to add another method to `CustomValue` for info to be displayed in
`describe`, so that it can be more type-specific?

# User-Facing Changes
Everything above has implications for printing and `describe` on custom
values

# Tests + Formatting
- 🟢 `toolkit fmt`
- 🟢 `toolkit clippy`
- 🟢 `toolkit test`
- 🟢 `toolkit test stdlib`
This commit is contained in:
Devyn Cairns
2024-03-19 03:09:59 -07:00
committed by GitHub
parent 931f522616
commit 6795ad7e33
19 changed files with 51 additions and 45 deletions

View File

@ -20,7 +20,7 @@ impl CustomValue for NuDataFrame {
Value::custom_value(Box::new(cloned), span)
}
fn value_string(&self) -> String {
fn type_name(&self) -> String {
self.typetag_name().to_string()
}

View File

@ -23,7 +23,7 @@ impl CustomValue for NuExpression {
Value::custom_value(Box::new(cloned), span)
}
fn value_string(&self) -> String {
fn type_name(&self) -> String {
self.typetag_name().to_string()
}

View File

@ -21,7 +21,7 @@ impl CustomValue for NuLazyFrame {
Value::custom_value(Box::new(cloned), span)
}
fn value_string(&self) -> String {
fn type_name(&self) -> String {
self.typetag_name().to_string()
}

View File

@ -21,7 +21,7 @@ impl CustomValue for NuLazyGroupBy {
Value::custom_value(Box::new(cloned), span)
}
fn value_string(&self) -> String {
fn type_name(&self) -> String {
self.typetag_name().to_string()
}

View File

@ -17,7 +17,7 @@ impl CustomValue for NuWhen {
Value::custom_value(Box::new(cloned), span)
}
fn value_string(&self) -> String {
fn type_name(&self) -> String {
self.typetag_name().to_string()
}