From e09f05a50cdb699029e8a4d5bafcfaade34157fd Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 11 Jan 2018 18:51:21 -0800 Subject: Reshuffled all the library code into files that make more sense and cleaned up some of the library code. --- lib/utils.nom | 95 ----------------------------------------------------------- 1 file changed, 95 deletions(-) delete mode 100644 lib/utils.nom (limited to 'lib/utils.nom') diff --git a/lib/utils.nom b/lib/utils.nom deleted file mode 100644 index 2b72080..0000000 --- a/lib/utils.nom +++ /dev/null @@ -1,95 +0,0 @@ -use "lib/metaprogramming.nom" - -# Error functions -action [barf!]: - nomsu "error" [] -action [barf %msg]: - nomsu "error"[%msg] -compile [assume %condition or barf %msg] to code: ".." - if not (\(%condition as lua)) then - nomsu:error(\(%msg as lua)); - end - -parse [assume %condition] as: assume %condition or barf (nil) - -# Text functions -action [join %strs with glue %glue]: - lua do> ".." - local str_bits = {} - for i,bit in ipairs(\%strs) do str_bits[i] = nomsu:stringify(bit) end - return table.concat(str_bits, \%glue) -parse [join %strs] as: join %strs with glue "" - -compile [capitalize %str, %str capitalized] to: - "(\(%str as lua)):gsub('%l', string.upper, 1)" - -compile [%str with %patt replaced with %sub, %str s/%patt/%sub] to: - "((\(%str as lua)):gsub(\(%patt as lua), \(%sub as lua)))" -compile [%str with %patt replaced with %sub %n times, %str s/%patt/%sub/%n] to: - "((\(%str as lua)):gsub(\(%patt as lua), \(%sub as lua), \(%n as lua)))" - -# Number ranges -compile [%start to %stop by %step, %start to %stop via %step] to: ".." - nomsu.utils.range(\(%start as lua), \(%stop as lua), \(%step as lua)) - -parse [%start to %stop] as: %start to %stop by 1 - -# Random functions -lua> ".." # Seed - math.randomseed(os.time()); - for i=1,20 do; math.random(); end; -compile [random number, random, rand] to: "math.random()" -compile [random int %n, random integer %n, randint %n] to: "math.random(\(%n as lua))" -compile [random from %low to %high, random number from %low to %high, rand %low %high] to: - "math.random(\(%low as lua), \(%high as lua))" -action [random choice from %elements, random choice %elements, random %elements]: - =lua "\%elements[math.random(#\%elements)]" - -# Math functions -compile [% as number] to: "tonumber(\(% as lua))" -compile [abs %, absolute value of %, | % |] to: "math.abs(\(% as lua))" -compile [sqrt %, square root of %] to: "math.sqrt(\(% as lua))" -compile [sin %, sine %] to: "math.sin(\(% as lua))" -compile [cos %, cosine %] to: "math.cos(\(% as lua))" -compile [tan %, tangent %] to: "math.tan(\(% as lua))" -compile [asin %, arc sine %] to: "math.asin(\(% as lua))" -compile [acos %, arc cosine %] to: "math.acos(\(% as lua))" -compile [atan %, arc tangent %] to: "math.atan(\(% as lua))" -compile [atan2 %y %x] to: "math.atan2(\(%y as lua), \(%x as lua))" -compile [sinh %, hyperbolic sine %] to: "math.sinh(\(% as lua))" -compile [cosh %, hyperbolic cosine %] to: "math.cosh(\(% as lua))" -compile [tanh %, hyperbolic tangent %] to: "math.tanh(\(% as lua))" -compile [ceil %, ceiling %] to: "math.ceil(\(% as lua))" -compile [exp %, e^ %] to: "math.exp(\(% as lua))" -compile [log %, ln %, natural log %] to: "math.log(\(% as lua))" -compile [log % base %base] to: "math.log(\(% as lua), \(%base as lua))" -compile [floor %] to: "math.floor(\(% as lua))" -compile [round %, % rounded] to: "math.floor(\(% as lua) + .5)" -action [%n rounded to the nearest %rounder]: - =lua "(\%rounder)*math.floor((\%n / \%rounder) + .5)" -compile [tau] to: "(2*math.pi)" -compile [pi] to: "math.pi" -compile [e] to: "math.e" -compile [golden ratio, phi] to: "((1 + math.sqrt(5)) / 2)" - -# Common utility functions -action [avg of %items, average of %items]: - =lua "(nomsu.utils.sum(\%items)/#\%items)" -compile [min of %items, smallest of %items, lowest of %items] to: - "nomsu.utils.min(\(%items as lua))" -compile [max of %items, biggest of %items, largest of %items, highest of %items] to: - "nomsu.utils.max(\(%items as lua))" -compile [min of %items by %value_expr] to: ".." - nomsu.utils.min(\(%items as lua), function(\(\% as lua)) - return \(%value_expr as lua) - end) -compile [max of %items by %value_expr] to: ".." - nomsu.utils.max(\(%items as lua), function(\(\% as lua)) - return \(%value_expr as lua) - end) -compile [sort %items] to: "table.sort(\(%items as lua))" -compile [sort %items by %key_expr] to: ".." - nomsu.utils.sort(\(%items as lua), function(\(\% as lua)) - return \(%key_expr as lua); - end) - -- cgit v1.2.3