create-mendix-widget-gleam 2.0.14 → 2.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +5 -1
- package/src/index.mjs +32 -12
- package/template/gleam.toml +1 -1
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/etch/command.mjs +479 -0
- package/tui/build/dev/javascript/etch/etch/cursor.mjs +164 -0
- package/tui/build/dev/javascript/etch/etch/event.mjs +2399 -0
- package/tui/build/dev/javascript/etch/etch/internal/consts.mjs +3 -0
- package/tui/build/dev/javascript/etch/etch/stdout.mjs +375 -0
- package/tui/build/dev/javascript/etch/etch/style.mjs +741 -0
- package/tui/build/dev/javascript/etch/etch/terminal.mjs +137 -0
- package/tui/build/dev/javascript/etch/gleam.mjs +1 -0
- package/tui/build/dev/javascript/etch/input/event_ffi.erl +73 -0
- package/tui/build/dev/javascript/etch/input/input_ffi.mjs +192 -0
- package/tui/build/dev/javascript/etch/input/signal_handler.erl +33 -0
- package/tui/build/dev/javascript/etch/terminal/terminal_ffi.erl +22 -0
- package/tui/build/dev/javascript/etch/terminal/terminal_ffi.mjs +37 -0
- package/tui/build/dev/javascript/etch/terminal/tty_state.erl +29 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/application.mjs +38 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/atom.mjs +2 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/charlist.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/node.mjs +12 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/port.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/process.mjs +161 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/reference.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@application.erl +43 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@atom.erl +94 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@charlist.erl +42 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@node.erl +80 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@port.erl +8 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@process.erl +868 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@reference.erl +21 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam_erlang_ffi.erl +164 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/array.mjs +24 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/promise.mjs +105 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/symbol.mjs +7 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam_javascript_ffi.mjs +133 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +286 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +295 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +455 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +993 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/float.mjs +528 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/int.mjs +764 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3063 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/option.mjs +386 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/order.mjs +166 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +96 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/result.mjs +448 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/set.mjs +413 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/string.mjs +695 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +128 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1151 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bool.erl +334 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dict.erl +513 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +105 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1114 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@float.erl +711 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@int.erl +972 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@io.erl +76 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@list.erl +2735 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@option.erl +381 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@order.erl +188 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@pair.erl +104 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@result.erl +500 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@set.erl +430 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@string.erl +964 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +202 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1042 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +534 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1133 -0
- package/tui/build/dev/javascript/gleam_version +1 -0
- package/tui/build/dev/javascript/prelude.mjs +1575 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_inline +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_meta +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_warnings +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_inline +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_meta +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_warnings +0 -0
- package/tui/build/dev/javascript/tui/gleam.mjs +1 -0
- package/tui/build/dev/javascript/tui/tui/prompt.mjs +521 -0
- package/tui/build/dev/javascript/tui/tui.mjs +334 -0
- package/tui/build/dev/javascript/tui/tui_ffi.mjs +32 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as $dict from "../gleam/dict.mjs";
|
|
2
|
+
import {
|
|
3
|
+
classify_dynamic as classify,
|
|
4
|
+
identity as bool,
|
|
5
|
+
identity as string,
|
|
6
|
+
identity as float,
|
|
7
|
+
identity as int,
|
|
8
|
+
identity as bit_array,
|
|
9
|
+
identity as list,
|
|
10
|
+
list_to_array as array,
|
|
11
|
+
identity as cast,
|
|
12
|
+
} from "../gleam_stdlib.mjs";
|
|
13
|
+
|
|
14
|
+
export { array, bit_array, bool, classify, float, int, list, string };
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Create a dynamic value made of an unordered series of keys and values, where
|
|
18
|
+
* the keys are unique.
|
|
19
|
+
*
|
|
20
|
+
* On Erlang this will be a map, on JavaScript this will be a Gleam dict
|
|
21
|
+
* object.
|
|
22
|
+
*/
|
|
23
|
+
export function properties(entries) {
|
|
24
|
+
return cast($dict.from_list(entries));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* A dynamic value representing nothing.
|
|
29
|
+
*
|
|
30
|
+
* On Erlang this will be the atom `nil`, on JavaScript this will be
|
|
31
|
+
* `undefined`.
|
|
32
|
+
*/
|
|
33
|
+
export function nil() {
|
|
34
|
+
return cast(undefined);
|
|
35
|
+
}
|
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
import { Ok, Error, Empty as $Empty, divideFloat } from "../gleam.mjs";
|
|
2
|
+
import * as $order from "../gleam/order.mjs";
|
|
3
|
+
import {
|
|
4
|
+
parse_float as parse,
|
|
5
|
+
float_to_string as to_string,
|
|
6
|
+
ceiling,
|
|
7
|
+
floor,
|
|
8
|
+
round as js_round,
|
|
9
|
+
truncate,
|
|
10
|
+
identity as do_to_float,
|
|
11
|
+
power as do_power,
|
|
12
|
+
random_uniform as random,
|
|
13
|
+
log as do_log,
|
|
14
|
+
exp as exponential,
|
|
15
|
+
} from "../gleam_stdlib.mjs";
|
|
16
|
+
|
|
17
|
+
export { ceiling, exponential, floor, parse, random, to_string, truncate };
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Compares two `Float`s, returning an `Order`:
|
|
21
|
+
* `Lt` for lower than, `Eq` for equals, or `Gt` for greater than.
|
|
22
|
+
*
|
|
23
|
+
* ## Examples
|
|
24
|
+
*
|
|
25
|
+
* ```gleam
|
|
26
|
+
* assert compare(2.0, 2.3) == Lt
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* To handle
|
|
30
|
+
* [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems)
|
|
31
|
+
* you may use [`loosely_compare`](#loosely_compare) instead.
|
|
32
|
+
*/
|
|
33
|
+
export function compare(a, b) {
|
|
34
|
+
let $ = a === b;
|
|
35
|
+
if ($) {
|
|
36
|
+
return new $order.Eq();
|
|
37
|
+
} else {
|
|
38
|
+
let $1 = a < b;
|
|
39
|
+
if ($1) {
|
|
40
|
+
return new $order.Lt();
|
|
41
|
+
} else {
|
|
42
|
+
return new $order.Gt();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Compares two `Float`s, returning the smaller of the two.
|
|
49
|
+
*
|
|
50
|
+
* ## Examples
|
|
51
|
+
*
|
|
52
|
+
* ```gleam
|
|
53
|
+
* assert min(2.0, 2.3) == 2.0
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export function min(a, b) {
|
|
57
|
+
let $ = a < b;
|
|
58
|
+
if ($) {
|
|
59
|
+
return a;
|
|
60
|
+
} else {
|
|
61
|
+
return b;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Compares two `Float`s, returning the larger of the two.
|
|
67
|
+
*
|
|
68
|
+
* ## Examples
|
|
69
|
+
*
|
|
70
|
+
* ```gleam
|
|
71
|
+
* assert max(2.0, 2.3) == 2.3
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export function max(a, b) {
|
|
75
|
+
let $ = a > b;
|
|
76
|
+
if ($) {
|
|
77
|
+
return a;
|
|
78
|
+
} else {
|
|
79
|
+
return b;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Restricts a float between two bounds.
|
|
85
|
+
*
|
|
86
|
+
* Note: If the `min` argument is larger than the `max` argument then they
|
|
87
|
+
* will be swapped, so the minimum bound is always lower than the maximum
|
|
88
|
+
* bound.
|
|
89
|
+
*
|
|
90
|
+
*
|
|
91
|
+
* ## Examples
|
|
92
|
+
*
|
|
93
|
+
* ```gleam
|
|
94
|
+
* assert clamp(1.2, min: 1.4, max: 1.6) == 1.4
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* ```gleam
|
|
98
|
+
* assert clamp(1.2, min: 1.4, max: 0.6) == 1.2
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export function clamp(x, min_bound, max_bound) {
|
|
102
|
+
let $ = min_bound >= max_bound;
|
|
103
|
+
if ($) {
|
|
104
|
+
let _pipe = x;
|
|
105
|
+
let _pipe$1 = min(_pipe, min_bound);
|
|
106
|
+
return max(_pipe$1, max_bound);
|
|
107
|
+
} else {
|
|
108
|
+
let _pipe = x;
|
|
109
|
+
let _pipe$1 = min(_pipe, max_bound);
|
|
110
|
+
return max(_pipe$1, min_bound);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Returns the absolute value of the input as a `Float`.
|
|
116
|
+
*
|
|
117
|
+
* ## Examples
|
|
118
|
+
*
|
|
119
|
+
* ```gleam
|
|
120
|
+
* assert absolute_value(-12.5) == 12.5
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* ```gleam
|
|
124
|
+
* assert absolute_value(10.2) == 10.2
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export function absolute_value(x) {
|
|
128
|
+
let $ = x >= 0.0;
|
|
129
|
+
if ($) {
|
|
130
|
+
return x;
|
|
131
|
+
} else {
|
|
132
|
+
return 0.0 - x;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Compares two `Float`s within a tolerance, returning an `Order`:
|
|
138
|
+
* `Lt` for lower than, `Eq` for equals, or `Gt` for greater than.
|
|
139
|
+
*
|
|
140
|
+
* This function allows Float comparison while handling
|
|
141
|
+
* [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems).
|
|
142
|
+
*
|
|
143
|
+
* Notice: For `Float`s the tolerance won't be exact:
|
|
144
|
+
* `5.3 - 5.0` is not exactly `0.3`.
|
|
145
|
+
*
|
|
146
|
+
* ## Examples
|
|
147
|
+
*
|
|
148
|
+
* ```gleam
|
|
149
|
+
* assert loosely_compare(5.0, with: 5.3, tolerating: 0.5) == Eq
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* If you want to check only for equality you may use
|
|
153
|
+
* [`loosely_equals`](#loosely_equals) instead.
|
|
154
|
+
*/
|
|
155
|
+
export function loosely_compare(a, b, tolerance) {
|
|
156
|
+
let difference = absolute_value(a - b);
|
|
157
|
+
let $ = difference <= tolerance;
|
|
158
|
+
if ($) {
|
|
159
|
+
return new $order.Eq();
|
|
160
|
+
} else {
|
|
161
|
+
return compare(a, b);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Checks for equality of two `Float`s within a tolerance,
|
|
167
|
+
* returning a `Bool`.
|
|
168
|
+
*
|
|
169
|
+
* This function allows Float comparison while handling
|
|
170
|
+
* [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems).
|
|
171
|
+
*
|
|
172
|
+
* Notice: For `Float`s the tolerance won't be exact:
|
|
173
|
+
* `5.3 - 5.0` is not exactly `0.3`.
|
|
174
|
+
*
|
|
175
|
+
* ## Examples
|
|
176
|
+
*
|
|
177
|
+
* ```gleam
|
|
178
|
+
* assert loosely_equals(5.0, with: 5.3, tolerating: 0.5)
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* ```gleam
|
|
182
|
+
* assert !loosely_equals(5.0, with: 5.1, tolerating: 0.1)
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
export function loosely_equals(a, b, tolerance) {
|
|
186
|
+
let difference = absolute_value(a - b);
|
|
187
|
+
return difference <= tolerance;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Returns the result of the base being raised to the power of the
|
|
192
|
+
* exponent, as a `Float`.
|
|
193
|
+
*
|
|
194
|
+
* ## Examples
|
|
195
|
+
*
|
|
196
|
+
* ```gleam
|
|
197
|
+
* assert power(2.0, -1.0) == Ok(0.5)
|
|
198
|
+
* ```
|
|
199
|
+
*
|
|
200
|
+
* ```gleam
|
|
201
|
+
* assert power(2.0, 2.0) == Ok(4.0)
|
|
202
|
+
* ```
|
|
203
|
+
*
|
|
204
|
+
* ```gleam
|
|
205
|
+
* assert power(8.0, 1.5) == Ok(22.627416997969522)
|
|
206
|
+
* ```
|
|
207
|
+
*
|
|
208
|
+
* ```gleam
|
|
209
|
+
* assert 4.0 |> power(of: 2.0) == Ok(16.0)
|
|
210
|
+
* ```
|
|
211
|
+
*
|
|
212
|
+
* ```gleam
|
|
213
|
+
* assert power(-1.0, 0.5) == Error(Nil)
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
export function power(base, exponent) {
|
|
217
|
+
let fractional = (ceiling(exponent) - exponent) > 0.0;
|
|
218
|
+
let $ = ((base < 0.0) && fractional) || ((base === 0.0) && (exponent < 0.0));
|
|
219
|
+
if ($) {
|
|
220
|
+
return new Error(undefined);
|
|
221
|
+
} else {
|
|
222
|
+
return new Ok(do_power(base, exponent));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Returns the square root of the input as a `Float`.
|
|
228
|
+
*
|
|
229
|
+
* ## Examples
|
|
230
|
+
*
|
|
231
|
+
* ```gleam
|
|
232
|
+
* assert square_root(4.0) == Ok(2.0)
|
|
233
|
+
* ```
|
|
234
|
+
*
|
|
235
|
+
* ```gleam
|
|
236
|
+
* assert square_root(-16.0) == Error(Nil)
|
|
237
|
+
* ```
|
|
238
|
+
*/
|
|
239
|
+
export function square_root(x) {
|
|
240
|
+
return power(x, 0.5);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Returns the negative of the value provided.
|
|
245
|
+
*
|
|
246
|
+
* ## Examples
|
|
247
|
+
*
|
|
248
|
+
* ```gleam
|
|
249
|
+
* assert negate(1.0) == -1.0
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
export function negate(x) {
|
|
253
|
+
return -1.0 * x;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Rounds the value to the nearest whole number as an `Int`.
|
|
258
|
+
*
|
|
259
|
+
* ## Examples
|
|
260
|
+
*
|
|
261
|
+
* ```gleam
|
|
262
|
+
* assert round(2.3) == 2
|
|
263
|
+
* ```
|
|
264
|
+
*
|
|
265
|
+
* ```gleam
|
|
266
|
+
* assert round(2.5) == 3
|
|
267
|
+
* ```
|
|
268
|
+
*/
|
|
269
|
+
export function round(x) {
|
|
270
|
+
let $ = x >= 0.0;
|
|
271
|
+
if ($) {
|
|
272
|
+
return js_round(x);
|
|
273
|
+
} else {
|
|
274
|
+
return 0 - js_round(negate(x));
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Converts the value to a given precision as a `Float`.
|
|
280
|
+
* The precision is the number of allowed decimal places.
|
|
281
|
+
* Negative precisions are allowed and force rounding
|
|
282
|
+
* to the nearest tenth, hundredth, thousandth etc.
|
|
283
|
+
*
|
|
284
|
+
* ## Examples
|
|
285
|
+
*
|
|
286
|
+
* ```gleam
|
|
287
|
+
* assert to_precision(2.43434348473, 2) == 2.43
|
|
288
|
+
* ```
|
|
289
|
+
*
|
|
290
|
+
* ```gleam
|
|
291
|
+
* assert to_precision(547890.453444, -3) == 548000.0
|
|
292
|
+
* ```
|
|
293
|
+
*/
|
|
294
|
+
export function to_precision(x, precision) {
|
|
295
|
+
let $ = precision <= 0;
|
|
296
|
+
if ($) {
|
|
297
|
+
let factor = do_power(10.0, do_to_float(- precision));
|
|
298
|
+
return do_to_float(round(divideFloat(x, factor))) * factor;
|
|
299
|
+
} else {
|
|
300
|
+
let factor = do_power(10.0, do_to_float(precision));
|
|
301
|
+
return divideFloat(do_to_float(round(x * factor)), factor);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function sum_loop(loop$numbers, loop$initial) {
|
|
306
|
+
while (true) {
|
|
307
|
+
let numbers = loop$numbers;
|
|
308
|
+
let initial = loop$initial;
|
|
309
|
+
if (numbers instanceof $Empty) {
|
|
310
|
+
return initial;
|
|
311
|
+
} else {
|
|
312
|
+
let first = numbers.head;
|
|
313
|
+
let rest = numbers.tail;
|
|
314
|
+
loop$numbers = rest;
|
|
315
|
+
loop$initial = first + initial;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Sums a list of `Float`s.
|
|
322
|
+
*
|
|
323
|
+
* ## Example
|
|
324
|
+
*
|
|
325
|
+
* ```gleam
|
|
326
|
+
* assert sum([1.0, 2.2, 3.3]) == 6.5
|
|
327
|
+
* ```
|
|
328
|
+
*/
|
|
329
|
+
export function sum(numbers) {
|
|
330
|
+
return sum_loop(numbers, 0.0);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
function product_loop(loop$numbers, loop$initial) {
|
|
334
|
+
while (true) {
|
|
335
|
+
let numbers = loop$numbers;
|
|
336
|
+
let initial = loop$initial;
|
|
337
|
+
if (numbers instanceof $Empty) {
|
|
338
|
+
return initial;
|
|
339
|
+
} else {
|
|
340
|
+
let first = numbers.head;
|
|
341
|
+
let rest = numbers.tail;
|
|
342
|
+
loop$numbers = rest;
|
|
343
|
+
loop$initial = first * initial;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Multiplies a list of `Float`s and returns the product.
|
|
350
|
+
*
|
|
351
|
+
* ## Example
|
|
352
|
+
*
|
|
353
|
+
* ```gleam
|
|
354
|
+
* assert product([2.5, 3.2, 4.2]) == 33.6
|
|
355
|
+
* ```
|
|
356
|
+
*/
|
|
357
|
+
export function product(numbers) {
|
|
358
|
+
return product_loop(numbers, 1.0);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Computes the modulo of a float division of inputs as a `Result`.
|
|
363
|
+
*
|
|
364
|
+
* Returns division of the inputs as a `Result`: If the given divisor equals
|
|
365
|
+
* `0`, this function returns an `Error`.
|
|
366
|
+
*
|
|
367
|
+
* The computed value will always have the same sign as the `divisor`.
|
|
368
|
+
*
|
|
369
|
+
* ## Examples
|
|
370
|
+
*
|
|
371
|
+
* ```gleam
|
|
372
|
+
* assert modulo(13.3, by: 3.3) == Ok(0.1)
|
|
373
|
+
* ```
|
|
374
|
+
*
|
|
375
|
+
* ```gleam
|
|
376
|
+
* assert modulo(-13.3, by: 3.3) == Ok(3.2)
|
|
377
|
+
* ```
|
|
378
|
+
*
|
|
379
|
+
* ```gleam
|
|
380
|
+
* assert modulo(13.3, by: -3.3) == Ok(-3.2)
|
|
381
|
+
* ```
|
|
382
|
+
*
|
|
383
|
+
* ```gleam
|
|
384
|
+
* assert modulo(-13.3, by: -3.3) == Ok(-0.1)
|
|
385
|
+
* ```
|
|
386
|
+
*/
|
|
387
|
+
export function modulo(dividend, divisor) {
|
|
388
|
+
if (divisor === 0.0) {
|
|
389
|
+
return new Error(undefined);
|
|
390
|
+
} else {
|
|
391
|
+
return new Ok(dividend - (floor(divideFloat(dividend, divisor)) * divisor));
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Returns division of the inputs as a `Result`.
|
|
397
|
+
*
|
|
398
|
+
* ## Examples
|
|
399
|
+
*
|
|
400
|
+
* ```gleam
|
|
401
|
+
* assert divide(0.0, 1.0) == Ok(0.0)
|
|
402
|
+
* ```
|
|
403
|
+
*
|
|
404
|
+
* ```gleam
|
|
405
|
+
* assert divide(1.0, 0.0) == Error(Nil)
|
|
406
|
+
* ```
|
|
407
|
+
*/
|
|
408
|
+
export function divide(a, b) {
|
|
409
|
+
if (b === 0.0) {
|
|
410
|
+
return new Error(undefined);
|
|
411
|
+
} else {
|
|
412
|
+
let b$1 = b;
|
|
413
|
+
return new Ok(divideFloat(a, b$1));
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* Adds two floats together.
|
|
419
|
+
*
|
|
420
|
+
* It's the function equivalent of the `+.` operator.
|
|
421
|
+
* This function is useful in higher order functions or pipes.
|
|
422
|
+
*
|
|
423
|
+
* ## Examples
|
|
424
|
+
*
|
|
425
|
+
* ```gleam
|
|
426
|
+
* assert add(1.0, 2.0) == 3.0
|
|
427
|
+
* ```
|
|
428
|
+
*
|
|
429
|
+
* ```gleam
|
|
430
|
+
* import gleam/list
|
|
431
|
+
*
|
|
432
|
+
* assert list.fold([1.0, 2.0, 3.0], 0.0, add) == 6.0
|
|
433
|
+
* ```
|
|
434
|
+
*
|
|
435
|
+
* ```gleam
|
|
436
|
+
* assert 3.0 |> add(2.0) == 5.0
|
|
437
|
+
* ```
|
|
438
|
+
*/
|
|
439
|
+
export function add(a, b) {
|
|
440
|
+
return a + b;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* Multiplies two floats together.
|
|
445
|
+
*
|
|
446
|
+
* It's the function equivalent of the `*.` operator.
|
|
447
|
+
* This function is useful in higher order functions or pipes.
|
|
448
|
+
*
|
|
449
|
+
* ## Examples
|
|
450
|
+
*
|
|
451
|
+
* ```gleam
|
|
452
|
+
* assert multiply(2.0, 4.0) == 8.0
|
|
453
|
+
* ```
|
|
454
|
+
*
|
|
455
|
+
* ```gleam
|
|
456
|
+
* import gleam/list
|
|
457
|
+
*
|
|
458
|
+
* assert list.fold([2.0, 3.0, 4.0], 1.0, multiply) == 24.0
|
|
459
|
+
* ```
|
|
460
|
+
*
|
|
461
|
+
* ```gleam
|
|
462
|
+
* assert 3.0 |> multiply(2.0) == 6.0
|
|
463
|
+
* ```
|
|
464
|
+
*/
|
|
465
|
+
export function multiply(a, b) {
|
|
466
|
+
return a * b;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Subtracts one float from another.
|
|
471
|
+
*
|
|
472
|
+
* It's the function equivalent of the `-.` operator.
|
|
473
|
+
* This function is useful in higher order functions or pipes.
|
|
474
|
+
*
|
|
475
|
+
* ## Examples
|
|
476
|
+
*
|
|
477
|
+
* ```gleam
|
|
478
|
+
* assert subtract(3.0, 1.0) == 2.0
|
|
479
|
+
* ```
|
|
480
|
+
*
|
|
481
|
+
* ```gleam
|
|
482
|
+
* import gleam/list
|
|
483
|
+
*
|
|
484
|
+
* assert list.fold([1.0, 2.0, 3.0], 10.0, subtract) == 4.0
|
|
485
|
+
* ```
|
|
486
|
+
*
|
|
487
|
+
* ```gleam
|
|
488
|
+
* assert 3.0 |> subtract(_, 2.0) == 1.0
|
|
489
|
+
* ```
|
|
490
|
+
*
|
|
491
|
+
* ```gleam
|
|
492
|
+
* assert 3.0 |> subtract(2.0, _) == -1.0
|
|
493
|
+
* ```
|
|
494
|
+
*/
|
|
495
|
+
export function subtract(a, b) {
|
|
496
|
+
return a - b;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* Returns the natural logarithm (base e) of the given `Float` as a `Result`. If the
|
|
501
|
+
* input is less than or equal to 0, returns `Error(Nil)`.
|
|
502
|
+
*
|
|
503
|
+
* ## Examples
|
|
504
|
+
*
|
|
505
|
+
* ```gleam
|
|
506
|
+
* assert logarithm(1.0) == Ok(0.0)
|
|
507
|
+
* ```
|
|
508
|
+
*
|
|
509
|
+
* ```gleam
|
|
510
|
+
* assert logarithm(2.718281828459045) == Ok(1.0)
|
|
511
|
+
* ```
|
|
512
|
+
*
|
|
513
|
+
* ```gleam
|
|
514
|
+
* assert logarithm(0.0) == Error(Nil)
|
|
515
|
+
* ```
|
|
516
|
+
*
|
|
517
|
+
* ```gleam
|
|
518
|
+
* assert logarithm(-1.0) == Error(Nil)
|
|
519
|
+
* ```
|
|
520
|
+
*/
|
|
521
|
+
export function logarithm(x) {
|
|
522
|
+
let $ = x <= 0.0;
|
|
523
|
+
if ($) {
|
|
524
|
+
return new Error(undefined);
|
|
525
|
+
} else {
|
|
526
|
+
return new Ok(do_log(x));
|
|
527
|
+
}
|
|
528
|
+
}
|