mirror of
https://github.com/nushell/nushell
synced 2024-11-10 23:24:14 +00:00
parent
7d9a77f179
commit
1e94793df5
3 changed files with 95 additions and 0 deletions
|
@ -194,6 +194,7 @@ pub fn create_default_context(cwd: impl AsRef<Path>) -> EngineState {
|
|||
StrStartsWith,
|
||||
StrSubstring,
|
||||
StrTrim,
|
||||
StrTitleCase,
|
||||
StrUpcase
|
||||
};
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ pub mod pascal_case;
|
|||
pub mod screaming_snake_case;
|
||||
pub mod snake_case;
|
||||
pub mod str_;
|
||||
pub mod title_case;
|
||||
pub mod upcase;
|
||||
|
||||
pub use camel_case::SubCommand as StrCamelCase;
|
||||
|
@ -16,6 +17,7 @@ pub use pascal_case::SubCommand as StrPascalCase;
|
|||
pub use screaming_snake_case::SubCommand as StrScreamingSnakeCase;
|
||||
pub use snake_case::SubCommand as StrSnakeCase;
|
||||
pub use str_::Str;
|
||||
pub use title_case::SubCommand as StrTitleCase;
|
||||
pub use upcase::SubCommand as StrUpcase;
|
||||
|
||||
use nu_engine::CallExt;
|
||||
|
|
92
crates/nu-command/src/strings/str_/case/title_case.rs
Normal file
92
crates/nu-command/src/strings/str_/case/title_case.rs
Normal file
|
@ -0,0 +1,92 @@
|
|||
use inflector::cases::titlecase::to_title_case;
|
||||
use nu_protocol::ast::Call;
|
||||
use nu_protocol::engine::{Command, EngineState, Stack};
|
||||
use nu_protocol::{
|
||||
Category, Example, PipelineData, ShellError, Signature, Span, SyntaxShape, Value,
|
||||
};
|
||||
|
||||
use crate::operate;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct SubCommand;
|
||||
|
||||
impl Command for SubCommand {
|
||||
fn name(&self) -> &str {
|
||||
"str title-case"
|
||||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("str title-case")
|
||||
.rest(
|
||||
"rest",
|
||||
SyntaxShape::CellPath,
|
||||
"optionally convert text to Title Case by column paths",
|
||||
)
|
||||
.category(Category::Strings)
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"Convert a string to Title Case"
|
||||
}
|
||||
|
||||
fn run(
|
||||
&self,
|
||||
engine_state: &EngineState,
|
||||
stack: &mut Stack,
|
||||
call: &Call,
|
||||
input: PipelineData,
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
operate(engine_state, stack, call, input, &to_title_case)
|
||||
}
|
||||
|
||||
fn examples(&self) -> Vec<Example> {
|
||||
vec![
|
||||
Example {
|
||||
description: "convert a string to Title Case",
|
||||
example: "'nu-shell' | str title-case",
|
||||
result: Some(Value::String {
|
||||
val: "Nu Shell".to_string(),
|
||||
span: Span::test_data(),
|
||||
}),
|
||||
},
|
||||
Example {
|
||||
description: "convert a string to Title Case",
|
||||
example: "'this is a test case' | str title-case",
|
||||
result: Some(Value::String {
|
||||
val: "This Is A Test Case".to_string(),
|
||||
span: Span::test_data(),
|
||||
}),
|
||||
},
|
||||
Example {
|
||||
description: "convert a column from a table to Title Case",
|
||||
example: r#"[[title, count]; ['nu test', 100]] | str title-case title"#,
|
||||
result: Some(Value::List {
|
||||
vals: vec![Value::Record {
|
||||
span: Span::test_data(),
|
||||
cols: vec!["title".to_string(), "count".to_string()],
|
||||
vals: vec![
|
||||
Value::String {
|
||||
val: "Nu Test".to_string(),
|
||||
span: Span::test_data(),
|
||||
},
|
||||
Value::test_int(100),
|
||||
],
|
||||
}],
|
||||
span: Span::test_data(),
|
||||
}),
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_examples() {
|
||||
use crate::test_examples;
|
||||
|
||||
test_examples(SubCommand {})
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue