mirror of
https://github.com/RGBCube/nu_scripts
synced 2025-08-01 06:37:46 +00:00
feat(module): add random-list (#488)
* feat(module): add random-list * feat(module): use options more often * feat(module): prettify errors
This commit is contained in:
parent
194eb30dc7
commit
d2f424e605
1 changed files with 110 additions and 0 deletions
110
modules/random-list/random-list.nu
Normal file
110
modules/random-list/random-list.nu
Normal file
|
@ -0,0 +1,110 @@
|
|||
def throw-error [
|
||||
error: string
|
||||
msg: string
|
||||
span: record
|
||||
] {
|
||||
error make {
|
||||
msg: $"(ansi red_bold)($error)(ansi reset)"
|
||||
label: {
|
||||
text: $msg
|
||||
start: $span.start
|
||||
end: $span.end
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Generate a random boolean list.
|
||||
export def "random-list bool" [
|
||||
list_length: int, # A length of the list
|
||||
--bias (-b): float = 0.5 # A probability of "true"
|
||||
] {
|
||||
if $bias < 0 or $bias > 1 {
|
||||
throw-error "value_error" "must be between 0 and 1" (metadata $bias | get span)
|
||||
}
|
||||
if $list_length < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $list_length | get span)
|
||||
}
|
||||
|
||||
1..$list_length | each {|it|
|
||||
random bool --bias $bias
|
||||
}
|
||||
}
|
||||
|
||||
# Generate a random char list.
|
||||
export def "random-list chars" [
|
||||
list_length: int, # A length of the list
|
||||
--length (-l): int = 5 # A length of the string
|
||||
] {
|
||||
if $list_length < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $list_length | get span)
|
||||
}
|
||||
if $length < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $length | get span)
|
||||
}
|
||||
|
||||
1..$list_length | each {|it|
|
||||
random chars --length $length
|
||||
}
|
||||
}
|
||||
|
||||
# Generate a random decimal list.
|
||||
export def "random-list decimal" [
|
||||
list_length: int, # A length of the list
|
||||
--range (-r): range # A range of the value
|
||||
] {
|
||||
if $list_length < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $list_length | get span)
|
||||
}
|
||||
|
||||
1..$list_length | each {|it|
|
||||
random decimal $range
|
||||
}
|
||||
}
|
||||
|
||||
# Generate a random dice list.
|
||||
export def "random-list dice" [
|
||||
list_length: int, # A length of the list
|
||||
--roll-count (-r): int = 6, # A roll count
|
||||
--side-count (-s): int = 6 # A side count
|
||||
] {
|
||||
if $list_length < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $list_length | get span)
|
||||
}
|
||||
if $roll_count < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $roll_count | get span)
|
||||
}
|
||||
if $side_count < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $side_count | get span)
|
||||
}
|
||||
|
||||
1..$list_length | each {|it|
|
||||
random dice --dice $roll_count --sides $side_count
|
||||
}
|
||||
}
|
||||
|
||||
# Generate a random integer list.
|
||||
export def "random-list integer" [
|
||||
list_length: int # A length of the list
|
||||
--range (-r): range # A range of the value
|
||||
] {
|
||||
if $list_length < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $list_length | get span)
|
||||
}
|
||||
|
||||
1..$list_length | each {|it|
|
||||
random integer $range
|
||||
}
|
||||
}
|
||||
|
||||
# Generate a random uuid list.
|
||||
export def "random-list uuid" [
|
||||
list_length: int # A length of the list
|
||||
] {
|
||||
if $list_length < 0 {
|
||||
throw-error "value_error" "must be greater than 0" (metadata $list_length | get span)
|
||||
}
|
||||
|
||||
1..$list_length | each {|it|
|
||||
random uuid
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue