1
Fork 0
mirror of https://github.com/RGBCube/nu_scripts synced 2025-07-31 14:17:45 +00:00

Additional clip copy options (#1028)

Addition to `clip` module (#1009):

* Passes complex values through `table -e` to render properly
* By default, strips ansi codes, unless `--ansi (-a)` switch is used
* Adds a `clip prefex` command which can accept a prefix string like `# => ` to be added to the
beginning of each line.
This commit is contained in:
Douglas 2025-01-31 16:45:29 -05:00 committed by GitHub
parent 10b22626f7
commit bab7845ed4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -9,8 +9,29 @@
# ```nushell
# >_ "Hello" | clip copy
# ```
export def copy []: [string -> nothing] {
print -n $'(ansi osc)52;c;($in | encode base64)(ansi st)'
export def copy [
--ansi (-a) # Copy ansi formatting
]: any -> nothing {
let input = $in | collect
let text = match ($input | describe -d | get type) {
$type if $type in [ table, record, list ] => {
$input | table -e
}
_ => {$input}
}
let do_strip_ansi = match $ansi {
true => {{||}}
false => {{|| ansi strip }}
}
let output = (
$text
| do $do_strip_ansi
| encode base64
)
print -n $'(ansi osc)52;c;($output)(ansi st)'
}
# Paste contenst of system clipboard
@ -33,3 +54,18 @@ export def paste []: [nothing -> string] {
| decode base64
| decode
}
# Add a prefix to each line of the content to be copied
#
# # Example: Format output for Nushell doc
# ls | clip prefix '# => ' | clip copy
export def prefix [prefix: string]: any -> string {
let input = $in | collect
match ($input | describe -d | get type) {
$type if $type in [ table, record, list ] => {
$input | table -e
}
_ => {$input}
}
| str replace -r --all '(?m)(.*)' $'($prefix)$1'
}