From 84629e81a4ae502c95cd6250926ec547df21d6ff Mon Sep 17 00:00:00 2001 From: qodelicious <162776175+qodelicious@users.noreply.github.com> Date: Thu, 22 Oct 2026 11:21:18 +0000 Subject: [PATCH 1/2] random-list: import random dice from std and fix the error helper --- modules/random-list/random-list.nu | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/random-list/random-list.nu b/modules/random-list/random-list.nu index 3884986a3..6c89a26c1 100644 --- a/modules/random-list/random-list.nu +++ b/modules/random-list/random-list.nu @@ -1,3 +1,5 @@ +use std/random + def throw-error [ error: string msg: string @@ -7,8 +9,7 @@ def throw-error [ msg: $"(ansi red_bold)($error)(ansi reset)" label: { text: $msg - start: $span.start - end: $span.end + span: $span } } } From f2523f13fe80095247cdd23ef9c4f1ad03639fdc Mon Sep 17 00:00:00 2001 From: qodelicious <162776175+qodelicious@users.noreply.github.com> Date: Sat, 24 Oct 2026 00:13:08 +0000 Subject: [PATCH 2/2] random-list: reject 0 dice and sides, return nothing for a 0 count Dice checks now match std's random dice (at least 1 die, at least 2 sides) so the error points at the flag. A count of 0 gives an empty list instead of 2 items, and the error msg no longer has ansi codes in it. --- modules/random-list/random-list.nu | 50 +++++++++++++++--------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/modules/random-list/random-list.nu b/modules/random-list/random-list.nu index 6c89a26c1..e706d6cbc 100644 --- a/modules/random-list/random-list.nu +++ b/modules/random-list/random-list.nu @@ -6,7 +6,7 @@ def throw-error [ span: record ] { error make { - msg: $"(ansi red_bold)($error)(ansi reset)" + msg: $error label: { text: $msg span: $span @@ -22,11 +22,11 @@ export def "random-list bool" [ 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) + if $list_length < 0 { + throw-error "value_error" "must not be negative" (metadata $list_length | get span) } - 1..$list_length | each {|it| + 0..<$list_length | each {|it| random bool --bias $bias } } @@ -36,14 +36,14 @@ 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 $list_length < 0 { + throw-error "value_error" "must not be negative" (metadata $list_length | get span) } - if $length < 0 { - throw-error "value_error" "must be greater than 0" (metadata $length | get span) + if $length < 0 { + throw-error "value_error" "must not be negative" (metadata $length | get span) } - 1..$list_length | each {|it| + 0..<$list_length | each {|it| random chars --length $length } } @@ -53,11 +53,11 @@ export def "random-list float" [ 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) + if $list_length < 0 { + throw-error "value_error" "must not be negative" (metadata $list_length | get span) } - 1..$list_length | each {|it| + 0..<$list_length | each {|it| random float $range } } @@ -68,17 +68,17 @@ export def "random-list dice" [ --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 $list_length < 0 { + throw-error "value_error" "must not be negative" (metadata $list_length | get span) } - if $roll_count < 0 { - throw-error "value_error" "must be greater than 0" (metadata $roll_count | get span) + if $roll_count < 1 { + throw-error "value_error" "must be at least 1" (metadata $roll_count | get span) } - if $side_count < 0 { - throw-error "value_error" "must be greater than 0" (metadata $side_count | get span) + if $side_count < 2 { + throw-error "value_error" "must be at least 2" (metadata $side_count | get span) } - 1..$list_length | each {|it| + 0..<$list_length | each {|it| random dice --dice $roll_count --sides $side_count } } @@ -88,11 +88,11 @@ export def "random-list int" [ 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) + if $list_length < 0 { + throw-error "value_error" "must not be negative" (metadata $list_length | get span) } - 1..$list_length | each {|it| + 0..<$list_length | each {|it| random int $range } } @@ -101,11 +101,11 @@ export def "random-list int" [ 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) + if $list_length < 0 { + throw-error "value_error" "must not be negative" (metadata $list_length | get span) } - 1..$list_length | each {|it| + 0..<$list_length | each {|it| random uuid } }