mirror of
https://github.com/nushell/nu_scripts.git
synced 2024-08-16 08:50:31 +03:00
Clean up str append/prepend a little (#797)
- Move to directory for other `str` contributions - Add simple `help` docs - Simplify type check since only 2 cases are possible @savente93 Are these okay?
This commit is contained in:
parent
7d662ad5c5
commit
707cda3450
@ -1,6 +1,6 @@
|
||||
# modules
|
||||
export module record/
|
||||
export module str.nu
|
||||
export module str/
|
||||
# commands
|
||||
export use fs.nu *
|
||||
export use set-env.nu *
|
||||
|
@ -13,25 +13,25 @@
|
||||
# Add a config hook
|
||||
# > set-env -a config.hooks.pre_prompt 'ellie | print'
|
||||
export def --env main [
|
||||
field: cell-path # The environment variable name or nested option cell path
|
||||
value: any # The value to set or append
|
||||
--append (-a) # Append to the previous value or wrap in a new list
|
||||
field: cell-path # The environment variable name or nested option cell path
|
||||
value: any # The value to set or append
|
||||
--append (-a) # Append to the previous value or wrap in a new list
|
||||
]: nothing -> nothing {
|
||||
def 'get or' [default field] {
|
||||
get --ignore-errors $field | default $default
|
||||
}
|
||||
let value = if $append {
|
||||
$env | get or [] $field | append $value
|
||||
} else {
|
||||
$value
|
||||
}
|
||||
let field = $field | to text | split row .
|
||||
let value = match $field {
|
||||
[_] => $value
|
||||
[$root, ..$field] => {
|
||||
let field = $field | into cell-path
|
||||
$env | get or {} $root | upsert $field $value
|
||||
def 'get or' [default field] {
|
||||
get --ignore-errors $field | default $default
|
||||
}
|
||||
}
|
||||
load-env { ($field | first): $value }
|
||||
let value = if $append {
|
||||
$env | get or [] $field | append $value
|
||||
} else {
|
||||
$value
|
||||
}
|
||||
let field = $field | to text | split row .
|
||||
let value = match $field {
|
||||
[_] => $value
|
||||
[$root, ..$field] => {
|
||||
let field = $field | into cell-path
|
||||
$env | get or {} $root | upsert $field $value
|
||||
}
|
||||
}
|
||||
load-env { ($field | first): $value }
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
export def append [tail: string]: [string -> string, list<string> -> list<string>] {
|
||||
let input = $in
|
||||
match ($input | describe | str replace --regex '<.*' '') {
|
||||
"string" => { $input ++ $tail },
|
||||
"list" => { $input | each {|el| $el ++ $tail} },
|
||||
_ => $input
|
||||
}
|
||||
}
|
||||
|
||||
export def prepend [head: string]: [string -> string, list<string> -> list<string>] {
|
||||
let input = $in
|
||||
match ($input | describe | str replace --regex '<.*' '') {
|
||||
"string" => { $head ++ $input },
|
||||
"list" => { $input | each {|el| $head ++ $el } },
|
||||
_ => $input
|
||||
}
|
||||
}
|
1
stdlib-candidate/std-rfc/str/mod.nu
Normal file
1
stdlib-candidate/std-rfc/str/mod.nu
Normal file
@ -0,0 +1 @@
|
||||
export use xpend.nu *
|
39
stdlib-candidate/std-rfc/str/xpend.nu
Normal file
39
stdlib-candidate/std-rfc/str/xpend.nu
Normal file
@ -0,0 +1,39 @@
|
||||
# Append a suffix to an input string or list of strings.
|
||||
#
|
||||
# Examples:
|
||||
# Output 'hello world'
|
||||
# > 'hello' | str append ' world'
|
||||
#
|
||||
# Output file names suffixed with '_world'
|
||||
# > ls | get name | str append _world
|
||||
export def append [
|
||||
suffix: string
|
||||
]: [string -> string, list<string> -> list<string>] {
|
||||
let input = $in
|
||||
let append = { $in + $suffix }
|
||||
if ($input | describe) == string {
|
||||
$input | do $append
|
||||
} else {
|
||||
$input | each $append
|
||||
}
|
||||
}
|
||||
|
||||
# Prepend a prefix to an input string or list of strings.
|
||||
#
|
||||
# Examples:
|
||||
# Output 'hello world'
|
||||
# > 'world' | str prepend 'hello '
|
||||
#
|
||||
# Output file names prefixed with 'hello_'
|
||||
# > ls | get name | str prepend hello_
|
||||
export def prepend [
|
||||
prefix: string
|
||||
]: [string -> string, list<string> -> list<string>] {
|
||||
let input = $in
|
||||
let prepend = { $prefix + $in }
|
||||
if ($input | describe) == string {
|
||||
$input | do $prepend
|
||||
} else {
|
||||
$input | each $prepend
|
||||
}
|
||||
}
|
@ -1,3 +1,3 @@
|
||||
export module fs.nu
|
||||
export module record.nu
|
||||
export module str.nu
|
||||
export module str_xpend.nu
|
||||
|
Loading…
Reference in New Issue
Block a user