mirror of
https://github.com/nushell/nushell.git
synced 2025-06-05 01:26:42 +02:00
<!-- if this PR closes one or more issues, you can automatically link the PR with them by using one of the [*linking keywords*](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword), e.g. - this PR should close #xxxx - fixes #xxxx you can also mention related issues, PRs or discussions! --> # Description <!-- Thank you for improving Nushell. Please, check our [contributing guide](../CONTRIBUTING.md) and talk to the core team before making major changes. Description of your pull request goes here. **Provide examples and/or screenshots** if your changes affect the user experience. --> In this PR I exposed the struct `ToHtml` that comes from `nu-cmd-extra`. I know this command isn't in a best state and should be changed in some way in the future but having the struct exposed makes transforming data to html way more simple for external tools as the `PipelineData` can easily be placed in the `ToHtml::run` method. # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> None. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass (on Windows make sure to [enable developer mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging)) - `cargo run -- -c "use toolkit.nu; toolkit test stdlib"` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> I did `fmt` and `check` but not `test`, shouldn't break any tests regardless. # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. --> For the demo page or my jupyter kernel would this make my life easiert.
101 lines
2.5 KiB
Rust
101 lines
2.5 KiB
Rust
mod bits;
|
|
mod conversions;
|
|
mod filters;
|
|
mod formats;
|
|
mod math;
|
|
mod platform;
|
|
mod strings;
|
|
|
|
pub use bits::{
|
|
Bits, BitsAnd, BitsInto, BitsNot, BitsOr, BitsRol, BitsRor, BitsShl, BitsShr, BitsXor,
|
|
};
|
|
pub use formats::ToHtml;
|
|
pub use math::{MathArcCos, MathArcCosH, MathArcSin, MathArcSinH, MathArcTan, MathArcTanH};
|
|
pub use math::{MathCos, MathCosH, MathSin, MathSinH, MathTan, MathTanH};
|
|
pub use math::{MathExp, MathLn};
|
|
|
|
use nu_protocol::engine::{EngineState, StateWorkingSet};
|
|
|
|
pub fn add_extra_command_context(mut engine_state: EngineState) -> EngineState {
|
|
let delta = {
|
|
let mut working_set = StateWorkingSet::new(&engine_state);
|
|
|
|
macro_rules! bind_command {
|
|
( $command:expr ) => {
|
|
working_set.add_decl(Box::new($command));
|
|
};
|
|
( $( $command:expr ),* ) => {
|
|
$( working_set.add_decl(Box::new($command)); )*
|
|
};
|
|
}
|
|
|
|
bind_command!(conversions::Fmt);
|
|
|
|
bind_command!(
|
|
filters::UpdateCells,
|
|
filters::EachWhile,
|
|
filters::Roll,
|
|
filters::RollDown,
|
|
filters::RollUp,
|
|
filters::RollLeft,
|
|
filters::RollRight,
|
|
filters::Rotate
|
|
);
|
|
|
|
bind_command!(platform::ansi::Gradient);
|
|
|
|
bind_command!(
|
|
strings::format::FormatPattern,
|
|
strings::str_::case::Str,
|
|
strings::str_::case::StrCamelCase,
|
|
strings::str_::case::StrKebabCase,
|
|
strings::str_::case::StrPascalCase,
|
|
strings::str_::case::StrScreamingSnakeCase,
|
|
strings::str_::case::StrSnakeCase,
|
|
strings::str_::case::StrTitleCase
|
|
);
|
|
|
|
bind_command!(ToHtml, formats::FromUrl);
|
|
|
|
// Bits
|
|
bind_command! {
|
|
Bits,
|
|
BitsAnd,
|
|
BitsInto,
|
|
BitsNot,
|
|
BitsOr,
|
|
BitsRol,
|
|
BitsRor,
|
|
BitsShl,
|
|
BitsShr,
|
|
BitsXor
|
|
}
|
|
|
|
// Math
|
|
bind_command! {
|
|
MathArcSin,
|
|
MathArcCos,
|
|
MathArcTan,
|
|
MathArcSinH,
|
|
MathArcCosH,
|
|
MathArcTanH,
|
|
MathSin,
|
|
MathCos,
|
|
MathTan,
|
|
MathSinH,
|
|
MathCosH,
|
|
MathTanH,
|
|
MathExp,
|
|
MathLn
|
|
};
|
|
|
|
working_set.render()
|
|
};
|
|
|
|
if let Err(err) = engine_state.merge_delta(delta) {
|
|
eprintln!("Error creating extra command context: {err:?}");
|
|
}
|
|
|
|
engine_state
|
|
}
|