create-mendix-widget-gleam 2.0.14 → 2.0.15

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.
Files changed (203) hide show
  1. package/README.md +1 -1
  2. package/package.json +5 -1
  3. package/src/index.mjs +22 -7
  4. package/template/gleam.toml +1 -1
  5. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache +0 -0
  6. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_inline +0 -0
  7. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_meta +0 -0
  8. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache +0 -0
  9. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_inline +0 -0
  10. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_meta +0 -0
  11. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache +0 -0
  12. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_inline +0 -0
  13. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_meta +0 -0
  14. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache +0 -0
  15. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_inline +0 -0
  16. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_meta +0 -0
  17. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache +0 -0
  18. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_inline +0 -0
  19. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_meta +0 -0
  20. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache +0 -0
  21. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_inline +0 -0
  22. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_meta +0 -0
  23. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache +0 -0
  24. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_inline +0 -0
  25. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_meta +0 -0
  26. package/tui/build/dev/javascript/etch/etch/command.mjs +479 -0
  27. package/tui/build/dev/javascript/etch/etch/cursor.mjs +164 -0
  28. package/tui/build/dev/javascript/etch/etch/event.mjs +2399 -0
  29. package/tui/build/dev/javascript/etch/etch/internal/consts.mjs +3 -0
  30. package/tui/build/dev/javascript/etch/etch/stdout.mjs +375 -0
  31. package/tui/build/dev/javascript/etch/etch/style.mjs +741 -0
  32. package/tui/build/dev/javascript/etch/etch/terminal.mjs +137 -0
  33. package/tui/build/dev/javascript/etch/gleam.mjs +1 -0
  34. package/tui/build/dev/javascript/etch/input/event_ffi.erl +73 -0
  35. package/tui/build/dev/javascript/etch/input/input_ffi.mjs +192 -0
  36. package/tui/build/dev/javascript/etch/input/signal_handler.erl +33 -0
  37. package/tui/build/dev/javascript/etch/terminal/terminal_ffi.erl +22 -0
  38. package/tui/build/dev/javascript/etch/terminal/terminal_ffi.mjs +37 -0
  39. package/tui/build/dev/javascript/etch/terminal/tty_state.erl +29 -0
  40. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache +0 -0
  41. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_inline +0 -0
  42. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_meta +0 -0
  43. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache +0 -0
  44. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_inline +0 -0
  45. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta +0 -0
  46. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache +0 -0
  47. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_inline +0 -0
  48. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta +0 -0
  49. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache +0 -0
  50. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_inline +0 -0
  51. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta +0 -0
  52. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache +0 -0
  53. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_inline +0 -0
  54. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_meta +0 -0
  55. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache +0 -0
  56. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_inline +0 -0
  57. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta +0 -0
  58. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache +0 -0
  59. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_inline +0 -0
  60. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_meta +0 -0
  61. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/application.mjs +38 -0
  62. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/atom.mjs +2 -0
  63. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/charlist.mjs +1 -0
  64. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/node.mjs +12 -0
  65. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/port.mjs +1 -0
  66. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/process.mjs +161 -0
  67. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/reference.mjs +1 -0
  68. package/tui/build/dev/javascript/gleam_erlang/gleam.mjs +1 -0
  69. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@application.erl +43 -0
  70. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@atom.erl +94 -0
  71. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@charlist.erl +42 -0
  72. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@node.erl +80 -0
  73. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@port.erl +8 -0
  74. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@process.erl +868 -0
  75. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@reference.erl +21 -0
  76. package/tui/build/dev/javascript/gleam_erlang/gleam_erlang_ffi.erl +164 -0
  77. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache +0 -0
  78. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_inline +0 -0
  79. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_meta +0 -0
  80. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache +0 -0
  81. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_inline +0 -0
  82. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_meta +0 -0
  83. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache +0 -0
  84. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_inline +0 -0
  85. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_meta +0 -0
  86. package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/array.mjs +24 -0
  87. package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/promise.mjs +105 -0
  88. package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/symbol.mjs +7 -0
  89. package/tui/build/dev/javascript/gleam_javascript/gleam.mjs +1 -0
  90. package/tui/build/dev/javascript/gleam_javascript/gleam_javascript_ffi.mjs +133 -0
  91. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
  92. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
  93. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
  94. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
  95. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
  96. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
  97. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
  98. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
  99. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
  100. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
  101. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
  102. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
  103. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
  104. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
  105. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
  106. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
  107. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
  108. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
  109. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
  110. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
  111. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
  112. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
  113. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
  114. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
  115. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
  116. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
  117. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
  118. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
  119. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
  120. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
  121. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
  122. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
  123. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
  124. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
  125. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
  126. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
  127. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
  128. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
  129. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
  130. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
  131. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
  132. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
  133. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
  134. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
  135. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
  136. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
  137. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
  138. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
  139. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
  140. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
  141. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
  142. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
  143. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
  144. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
  145. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
  146. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
  147. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
  148. package/tui/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
  149. package/tui/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +286 -0
  150. package/tui/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +295 -0
  151. package/tui/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
  152. package/tui/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +455 -0
  153. package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +993 -0
  154. package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
  155. package/tui/build/dev/javascript/gleam_stdlib/gleam/float.mjs +528 -0
  156. package/tui/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
  157. package/tui/build/dev/javascript/gleam_stdlib/gleam/int.mjs +764 -0
  158. package/tui/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
  159. package/tui/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3063 -0
  160. package/tui/build/dev/javascript/gleam_stdlib/gleam/option.mjs +386 -0
  161. package/tui/build/dev/javascript/gleam_stdlib/gleam/order.mjs +166 -0
  162. package/tui/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +96 -0
  163. package/tui/build/dev/javascript/gleam_stdlib/gleam/result.mjs +448 -0
  164. package/tui/build/dev/javascript/gleam_stdlib/gleam/set.mjs +413 -0
  165. package/tui/build/dev/javascript/gleam_stdlib/gleam/string.mjs +695 -0
  166. package/tui/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +128 -0
  167. package/tui/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1151 -0
  168. package/tui/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
  169. package/tui/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
  170. package/tui/build/dev/javascript/gleam_stdlib/gleam@bool.erl +334 -0
  171. package/tui/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
  172. package/tui/build/dev/javascript/gleam_stdlib/gleam@dict.erl +513 -0
  173. package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +105 -0
  174. package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1114 -0
  175. package/tui/build/dev/javascript/gleam_stdlib/gleam@float.erl +711 -0
  176. package/tui/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
  177. package/tui/build/dev/javascript/gleam_stdlib/gleam@int.erl +972 -0
  178. package/tui/build/dev/javascript/gleam_stdlib/gleam@io.erl +76 -0
  179. package/tui/build/dev/javascript/gleam_stdlib/gleam@list.erl +2735 -0
  180. package/tui/build/dev/javascript/gleam_stdlib/gleam@option.erl +381 -0
  181. package/tui/build/dev/javascript/gleam_stdlib/gleam@order.erl +188 -0
  182. package/tui/build/dev/javascript/gleam_stdlib/gleam@pair.erl +104 -0
  183. package/tui/build/dev/javascript/gleam_stdlib/gleam@result.erl +500 -0
  184. package/tui/build/dev/javascript/gleam_stdlib/gleam@set.erl +430 -0
  185. package/tui/build/dev/javascript/gleam_stdlib/gleam@string.erl +964 -0
  186. package/tui/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +202 -0
  187. package/tui/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1042 -0
  188. package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +534 -0
  189. package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1133 -0
  190. package/tui/build/dev/javascript/gleam_version +1 -0
  191. package/tui/build/dev/javascript/prelude.mjs +1575 -0
  192. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache +0 -0
  193. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_inline +0 -0
  194. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_meta +0 -0
  195. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_warnings +0 -0
  196. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache +0 -0
  197. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_inline +0 -0
  198. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_meta +0 -0
  199. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_warnings +0 -0
  200. package/tui/build/dev/javascript/tui/gleam.mjs +1 -0
  201. package/tui/build/dev/javascript/tui/tui/prompt.mjs +521 -0
  202. package/tui/build/dev/javascript/tui/tui.mjs +334 -0
  203. package/tui/build/dev/javascript/tui/tui_ffi.mjs +32 -0
@@ -0,0 +1 @@
1
+ export * from "../prelude.mjs";
@@ -0,0 +1,347 @@
1
+ -module(gleam@bit_array).
2
+ -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
3
+ -define(FILEPATH, "src/gleam/bit_array.gleam").
4
+ -export([from_string/1, bit_size/1, byte_size/1, pad_to_bytes/1, slice/3, is_utf8/1, to_string/1, concat/1, append/2, base64_encode/2, base64_decode/1, base64_url_encode/2, base64_url_decode/1, base16_encode/1, base16_decode/1, inspect/1, compare/2, starts_with/2]).
5
+
6
+ -if(?OTP_RELEASE >= 27).
7
+ -define(MODULEDOC(Str), -moduledoc(Str)).
8
+ -define(DOC(Str), -doc(Str)).
9
+ -else.
10
+ -define(MODULEDOC(Str), -compile([])).
11
+ -define(DOC(Str), -compile([])).
12
+ -endif.
13
+
14
+ ?MODULEDOC(" BitArrays are a sequence of binary data of any length.\n").
15
+
16
+ -file("src/gleam/bit_array.gleam", 11).
17
+ ?DOC(" Converts a UTF-8 `String` type into a `BitArray`.\n").
18
+ -spec from_string(binary()) -> bitstring().
19
+ from_string(X) ->
20
+ gleam_stdlib:identity(X).
21
+
22
+ -file("src/gleam/bit_array.gleam", 17).
23
+ ?DOC(" Returns an integer which is the number of bits in the bit array.\n").
24
+ -spec bit_size(bitstring()) -> integer().
25
+ bit_size(X) ->
26
+ erlang:bit_size(X).
27
+
28
+ -file("src/gleam/bit_array.gleam", 23).
29
+ ?DOC(" Returns an integer which is the number of bytes in the bit array.\n").
30
+ -spec byte_size(bitstring()) -> integer().
31
+ byte_size(X) ->
32
+ erlang:byte_size(X).
33
+
34
+ -file("src/gleam/bit_array.gleam", 29).
35
+ ?DOC(" Pads a bit array with zeros so that it is a whole number of bytes.\n").
36
+ -spec pad_to_bytes(bitstring()) -> bitstring().
37
+ pad_to_bytes(X) ->
38
+ gleam_stdlib:bit_array_pad_to_bytes(X).
39
+
40
+ -file("src/gleam/bit_array.gleam", 54).
41
+ ?DOC(
42
+ " Extracts a sub-section of a bit array.\n"
43
+ "\n"
44
+ " The slice will start at given position and continue up to specified\n"
45
+ " length.\n"
46
+ " A negative length can be used to extract bytes at the end of a bit array.\n"
47
+ "\n"
48
+ " This function runs in constant time.\n"
49
+ ).
50
+ -spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} |
51
+ {error, nil}.
52
+ slice(String, Position, Length) ->
53
+ gleam_stdlib:bit_array_slice(String, Position, Length).
54
+
55
+ -file("src/gleam/bit_array.gleam", 67).
56
+ -spec is_utf8_loop(bitstring()) -> boolean().
57
+ is_utf8_loop(Bits) ->
58
+ case Bits of
59
+ <<>> ->
60
+ true;
61
+
62
+ <<_/utf8, Rest/binary>> ->
63
+ is_utf8_loop(Rest);
64
+
65
+ _ ->
66
+ false
67
+ end.
68
+
69
+ -file("src/gleam/bit_array.gleam", 62).
70
+ ?DOC(" Tests to see whether a bit array is valid UTF-8.\n").
71
+ -spec is_utf8(bitstring()) -> boolean().
72
+ is_utf8(Bits) ->
73
+ is_utf8_loop(Bits).
74
+
75
+ -file("src/gleam/bit_array.gleam", 88).
76
+ ?DOC(
77
+ " Converts a bit array to a string.\n"
78
+ "\n"
79
+ " Returns an error if the bit array is invalid UTF-8 data.\n"
80
+ ).
81
+ -spec to_string(bitstring()) -> {ok, binary()} | {error, nil}.
82
+ to_string(Bits) ->
83
+ case is_utf8(Bits) of
84
+ true ->
85
+ {ok, gleam_stdlib:identity(Bits)};
86
+
87
+ false ->
88
+ {error, nil}
89
+ end.
90
+
91
+ -file("src/gleam/bit_array.gleam", 109).
92
+ ?DOC(
93
+ " Creates a new bit array by joining multiple binaries.\n"
94
+ "\n"
95
+ " ## Examples\n"
96
+ "\n"
97
+ " ```gleam\n"
98
+ " assert concat([from_string(\"butter\"), from_string(\"fly\")])\n"
99
+ " == from_string(\"butterfly\")\n"
100
+ " ```\n"
101
+ ).
102
+ -spec concat(list(bitstring())) -> bitstring().
103
+ concat(Bit_arrays) ->
104
+ gleam_stdlib:bit_array_concat(Bit_arrays).
105
+
106
+ -file("src/gleam/bit_array.gleam", 40).
107
+ ?DOC(
108
+ " Creates a new bit array by joining two bit arrays.\n"
109
+ "\n"
110
+ " ## Examples\n"
111
+ "\n"
112
+ " ```gleam\n"
113
+ " assert append(to: from_string(\"butter\"), suffix: from_string(\"fly\"))\n"
114
+ " == from_string(\"butterfly\")\n"
115
+ " ```\n"
116
+ ).
117
+ -spec append(bitstring(), bitstring()) -> bitstring().
118
+ append(First, Second) ->
119
+ gleam_stdlib:bit_array_concat([First, Second]).
120
+
121
+ -file("src/gleam/bit_array.gleam", 118).
122
+ ?DOC(
123
+ " Encodes a BitArray into a base 64 encoded string.\n"
124
+ "\n"
125
+ " If the bit array does not contain a whole number of bytes then it is padded\n"
126
+ " with zero bits prior to being encoded.\n"
127
+ ).
128
+ -spec base64_encode(bitstring(), boolean()) -> binary().
129
+ base64_encode(Input, Padding) ->
130
+ gleam_stdlib:base64_encode(Input, Padding).
131
+
132
+ -file("src/gleam/bit_array.gleam", 122).
133
+ ?DOC(" Decodes a base 64 encoded string into a `BitArray`.\n").
134
+ -spec base64_decode(binary()) -> {ok, bitstring()} | {error, nil}.
135
+ base64_decode(Encoded) ->
136
+ Padded = case erlang:byte_size(gleam_stdlib:identity(Encoded)) rem 4 of
137
+ 0 ->
138
+ Encoded;
139
+
140
+ N ->
141
+ gleam@string:append(
142
+ Encoded,
143
+ gleam@string:repeat(<<"="/utf8>>, 4 - N)
144
+ )
145
+ end,
146
+ gleam_stdlib:base64_decode(Padded).
147
+
148
+ -file("src/gleam/bit_array.gleam", 140).
149
+ ?DOC(
150
+ " Encodes a `BitArray` into a base 64 encoded string with URL and filename\n"
151
+ " safe alphabet.\n"
152
+ "\n"
153
+ " If the bit array does not contain a whole number of bytes then it is padded\n"
154
+ " with zero bits prior to being encoded.\n"
155
+ ).
156
+ -spec base64_url_encode(bitstring(), boolean()) -> binary().
157
+ base64_url_encode(Input, Padding) ->
158
+ _pipe = Input,
159
+ _pipe@1 = gleam_stdlib:base64_encode(_pipe, Padding),
160
+ _pipe@2 = gleam@string:replace(_pipe@1, <<"+"/utf8>>, <<"-"/utf8>>),
161
+ gleam@string:replace(_pipe@2, <<"/"/utf8>>, <<"_"/utf8>>).
162
+
163
+ -file("src/gleam/bit_array.gleam", 150).
164
+ ?DOC(
165
+ " Decodes a base 64 encoded string with URL and filename safe alphabet into a\n"
166
+ " `BitArray`.\n"
167
+ ).
168
+ -spec base64_url_decode(binary()) -> {ok, bitstring()} | {error, nil}.
169
+ base64_url_decode(Encoded) ->
170
+ _pipe = Encoded,
171
+ _pipe@1 = gleam@string:replace(_pipe, <<"-"/utf8>>, <<"+"/utf8>>),
172
+ _pipe@2 = gleam@string:replace(_pipe@1, <<"_"/utf8>>, <<"/"/utf8>>),
173
+ base64_decode(_pipe@2).
174
+
175
+ -file("src/gleam/bit_array.gleam", 164).
176
+ ?DOC(
177
+ " Encodes a `BitArray` into a base 16 encoded string.\n"
178
+ "\n"
179
+ " If the bit array does not contain a whole number of bytes then it is padded\n"
180
+ " with zero bits prior to being encoded.\n"
181
+ ).
182
+ -spec base16_encode(bitstring()) -> binary().
183
+ base16_encode(Input) ->
184
+ gleam_stdlib:base16_encode(Input).
185
+
186
+ -file("src/gleam/bit_array.gleam", 170).
187
+ ?DOC(" Decodes a base 16 encoded string into a `BitArray`.\n").
188
+ -spec base16_decode(binary()) -> {ok, bitstring()} | {error, nil}.
189
+ base16_decode(Input) ->
190
+ gleam_stdlib:base16_decode(Input).
191
+
192
+ -file("src/gleam/bit_array.gleam", 191).
193
+ -spec inspect_loop(bitstring(), binary()) -> binary().
194
+ inspect_loop(Input, Accumulator) ->
195
+ case Input of
196
+ <<>> ->
197
+ Accumulator;
198
+
199
+ <<X:1>> ->
200
+ <<<<Accumulator/binary, (erlang:integer_to_binary(X))/binary>>/binary,
201
+ ":size(1)"/utf8>>;
202
+
203
+ <<X@1:2>> ->
204
+ <<<<Accumulator/binary, (erlang:integer_to_binary(X@1))/binary>>/binary,
205
+ ":size(2)"/utf8>>;
206
+
207
+ <<X@2:3>> ->
208
+ <<<<Accumulator/binary, (erlang:integer_to_binary(X@2))/binary>>/binary,
209
+ ":size(3)"/utf8>>;
210
+
211
+ <<X@3:4>> ->
212
+ <<<<Accumulator/binary, (erlang:integer_to_binary(X@3))/binary>>/binary,
213
+ ":size(4)"/utf8>>;
214
+
215
+ <<X@4:5>> ->
216
+ <<<<Accumulator/binary, (erlang:integer_to_binary(X@4))/binary>>/binary,
217
+ ":size(5)"/utf8>>;
218
+
219
+ <<X@5:6>> ->
220
+ <<<<Accumulator/binary, (erlang:integer_to_binary(X@5))/binary>>/binary,
221
+ ":size(6)"/utf8>>;
222
+
223
+ <<X@6:7>> ->
224
+ <<<<Accumulator/binary, (erlang:integer_to_binary(X@6))/binary>>/binary,
225
+ ":size(7)"/utf8>>;
226
+
227
+ <<X@7, Rest/bitstring>> ->
228
+ Suffix = case Rest of
229
+ <<>> ->
230
+ <<""/utf8>>;
231
+
232
+ _ ->
233
+ <<", "/utf8>>
234
+ end,
235
+ Accumulator@1 = <<<<Accumulator/binary,
236
+ (erlang:integer_to_binary(X@7))/binary>>/binary,
237
+ Suffix/binary>>,
238
+ inspect_loop(Rest, Accumulator@1);
239
+
240
+ _ ->
241
+ Accumulator
242
+ end.
243
+
244
+ -file("src/gleam/bit_array.gleam", 187).
245
+ ?DOC(
246
+ " Converts a bit array to a string containing the decimal value of each byte.\n"
247
+ "\n"
248
+ " Use this over `string.inspect` when you have a bit array you want printed\n"
249
+ " in the array syntax even if it is valid UTF-8.\n"
250
+ "\n"
251
+ " ## Examples\n"
252
+ "\n"
253
+ " ```gleam\n"
254
+ " assert inspect(<<0, 20, 0x20, 255>>) == \"<<0, 20, 32, 255>>\"\n"
255
+ " ```\n"
256
+ "\n"
257
+ " ```gleam\n"
258
+ " assert inspect(<<100, 5:3>>) == \"<<100, 5:size(3)>>\"\n"
259
+ " ```\n"
260
+ ).
261
+ -spec inspect(bitstring()) -> binary().
262
+ inspect(Input) ->
263
+ <<(inspect_loop(Input, <<"<<"/utf8>>))/binary, ">>"/utf8>>.
264
+
265
+ -file("src/gleam/bit_array.gleam", 233).
266
+ ?DOC(
267
+ " Compare two bit arrays as sequences of bytes.\n"
268
+ "\n"
269
+ " ## Examples\n"
270
+ "\n"
271
+ " ```gleam\n"
272
+ " assert compare(<<1>>, <<2>>) == Lt\n"
273
+ " ```\n"
274
+ "\n"
275
+ " ```gleam\n"
276
+ " assert compare(<<\"AB\":utf8>>, <<\"AA\":utf8>>) == Gt\n"
277
+ " ```\n"
278
+ "\n"
279
+ " ```gleam\n"
280
+ " assert compare(<<1, 2:size(2)>>, with: <<1, 2:size(2)>>) == Eq\n"
281
+ " ```\n"
282
+ ).
283
+ -spec compare(bitstring(), bitstring()) -> gleam@order:order().
284
+ compare(A, B) ->
285
+ case {A, B} of
286
+ {<<First_byte, First_rest/bitstring>>,
287
+ <<Second_byte, Second_rest/bitstring>>} ->
288
+ case {First_byte, Second_byte} of
289
+ {F, S} when F > S ->
290
+ gt;
291
+
292
+ {F@1, S@1} when F@1 < S@1 ->
293
+ lt;
294
+
295
+ {_, _} ->
296
+ compare(First_rest, Second_rest)
297
+ end;
298
+
299
+ {<<>>, <<>>} ->
300
+ eq;
301
+
302
+ {_, <<>>} ->
303
+ gt;
304
+
305
+ {<<>>, _} ->
306
+ lt;
307
+
308
+ {First, Second} ->
309
+ case {gleam_stdlib:bit_array_to_int_and_size(First),
310
+ gleam_stdlib:bit_array_to_int_and_size(Second)} of
311
+ {{A@1, _}, {B@1, _}} when A@1 > B@1 ->
312
+ gt;
313
+
314
+ {{A@2, _}, {B@2, _}} when A@2 < B@2 ->
315
+ lt;
316
+
317
+ {{_, Size_a}, {_, Size_b}} when Size_a > Size_b ->
318
+ gt;
319
+
320
+ {{_, Size_a@1}, {_, Size_b@1}} when Size_a@1 < Size_b@1 ->
321
+ lt;
322
+
323
+ {_, _} ->
324
+ eq
325
+ end
326
+ end.
327
+
328
+ -file("src/gleam/bit_array.gleam", 273).
329
+ ?DOC(
330
+ " Checks whether the first `BitArray` starts with the second one.\n"
331
+ "\n"
332
+ " ## Examples\n"
333
+ "\n"
334
+ " ```gleam\n"
335
+ " assert starts_with(<<1, 2, 3, 4>>, <<1, 2>>)\n"
336
+ " ```\n"
337
+ ).
338
+ -spec starts_with(bitstring(), bitstring()) -> boolean().
339
+ starts_with(Bits, Prefix) ->
340
+ Prefix_size = erlang:bit_size(Prefix),
341
+ case Bits of
342
+ <<Pref:Prefix_size/bitstring, _/bitstring>> when Pref =:= Prefix ->
343
+ true;
344
+
345
+ _ ->
346
+ false
347
+ end.
@@ -0,0 +1,334 @@
1
+ -module(gleam@bool).
2
+ -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
3
+ -define(FILEPATH, "src/gleam/bool.gleam").
4
+ -export(['and'/2, 'or'/2, negate/1, nor/2, nand/2, exclusive_or/2, exclusive_nor/2, to_string/1, guard/3, lazy_guard/3]).
5
+
6
+ -if(?OTP_RELEASE >= 27).
7
+ -define(MODULEDOC(Str), -moduledoc(Str)).
8
+ -define(DOC(Str), -doc(Str)).
9
+ -else.
10
+ -define(MODULEDOC(Str), -compile([])).
11
+ -define(DOC(Str), -compile([])).
12
+ -endif.
13
+
14
+ ?MODULEDOC(
15
+ " A type with two possible values, `True` and `False`. Used to indicate whether\n"
16
+ " things are... true or false!\n"
17
+ "\n"
18
+ " It is often clearer and offers more type safety to define a custom type\n"
19
+ " than to use `Bool`. For example, rather than having a `is_teacher: Bool`\n"
20
+ " field consider having a `role: SchoolRole` field where `SchoolRole` is a custom\n"
21
+ " type that can be either `Student` or `Teacher`.\n"
22
+ ).
23
+
24
+ -file("src/gleam/bool.gleam", 32).
25
+ ?DOC(
26
+ " Returns the and of two bools, but it evaluates both arguments.\n"
27
+ "\n"
28
+ " It's the function equivalent of the `&&` operator.\n"
29
+ " This function is useful in higher order functions or pipes.\n"
30
+ "\n"
31
+ " ## Examples\n"
32
+ "\n"
33
+ " ```gleam\n"
34
+ " assert and(True, True)\n"
35
+ " ```\n"
36
+ "\n"
37
+ " ```gleam\n"
38
+ " assert !and(False, True)\n"
39
+ " ```\n"
40
+ "\n"
41
+ " ```gleam\n"
42
+ " assert !and(False, True)\n"
43
+ " ```\n"
44
+ "\n"
45
+ " ```gleam\n"
46
+ " assert !and(False, False)\n"
47
+ " ```\n"
48
+ ).
49
+ -spec 'and'(boolean(), boolean()) -> boolean().
50
+ 'and'(A, B) ->
51
+ A andalso B.
52
+
53
+ -file("src/gleam/bool.gleam", 59).
54
+ ?DOC(
55
+ " Returns the or of two bools, but it evaluates both arguments.\n"
56
+ "\n"
57
+ " It's the function equivalent of the `||` operator.\n"
58
+ " This function is useful in higher order functions or pipes.\n"
59
+ "\n"
60
+ " ## Examples\n"
61
+ "\n"
62
+ " ```gleam\n"
63
+ " assert or(True, True)\n"
64
+ " ```\n"
65
+ "\n"
66
+ " ```gleam\n"
67
+ " assert or(False, True)\n"
68
+ " ```\n"
69
+ "\n"
70
+ " ```gleam\n"
71
+ " assert or(True, False)\n"
72
+ " ```\n"
73
+ "\n"
74
+ " ```gleam\n"
75
+ " assert !or(False, False)\n"
76
+ " ```\n"
77
+ ).
78
+ -spec 'or'(boolean(), boolean()) -> boolean().
79
+ 'or'(A, B) ->
80
+ A orelse B.
81
+
82
+ -file("src/gleam/bool.gleam", 77).
83
+ ?DOC(
84
+ " Returns the opposite bool value.\n"
85
+ "\n"
86
+ " This is the same as the `!` or `not` operators in some other languages.\n"
87
+ "\n"
88
+ " ## Examples\n"
89
+ "\n"
90
+ " ```gleam\n"
91
+ " assert !negate(True)\n"
92
+ " ```\n"
93
+ "\n"
94
+ " ```gleam\n"
95
+ " assert negate(False)\n"
96
+ " ```\n"
97
+ ).
98
+ -spec negate(boolean()) -> boolean().
99
+ negate(Bool) ->
100
+ not Bool.
101
+
102
+ -file("src/gleam/bool.gleam", 101).
103
+ ?DOC(
104
+ " Returns the nor of two bools.\n"
105
+ "\n"
106
+ " ## Examples\n"
107
+ "\n"
108
+ " ```gleam\n"
109
+ " assert nor(False, False)\n"
110
+ " ```\n"
111
+ "\n"
112
+ " ```gleam\n"
113
+ " assert !nor(False, True)\n"
114
+ " ```\n"
115
+ "\n"
116
+ " ```gleam\n"
117
+ " assert !nor(True, False)\n"
118
+ " ```\n"
119
+ "\n"
120
+ " ```gleam\n"
121
+ " assert !nor(True, True)\n"
122
+ " ```\n"
123
+ ).
124
+ -spec nor(boolean(), boolean()) -> boolean().
125
+ nor(A, B) ->
126
+ not (A orelse B).
127
+
128
+ -file("src/gleam/bool.gleam", 125).
129
+ ?DOC(
130
+ " Returns the nand of two bools.\n"
131
+ "\n"
132
+ " ## Examples\n"
133
+ "\n"
134
+ " ```gleam\n"
135
+ " assert nand(False, False)\n"
136
+ " ```\n"
137
+ "\n"
138
+ " ```gleam\n"
139
+ " assert nand(False, True)\n"
140
+ " ```\n"
141
+ "\n"
142
+ " ```gleam\n"
143
+ " assert nand(True, False)\n"
144
+ " ```\n"
145
+ "\n"
146
+ " ```gleam\n"
147
+ " assert !nand(True, True)\n"
148
+ " ```\n"
149
+ ).
150
+ -spec nand(boolean(), boolean()) -> boolean().
151
+ nand(A, B) ->
152
+ not (A andalso B).
153
+
154
+ -file("src/gleam/bool.gleam", 149).
155
+ ?DOC(
156
+ " Returns the exclusive or of two bools.\n"
157
+ "\n"
158
+ " ## Examples\n"
159
+ "\n"
160
+ " ```gleam\n"
161
+ " assert !exclusive_or(False, False)\n"
162
+ " ```\n"
163
+ "\n"
164
+ " ```gleam\n"
165
+ " assert exclusive_or(False, True)\n"
166
+ " ```\n"
167
+ "\n"
168
+ " ```gleam\n"
169
+ " assert exclusive_or(True, False)\n"
170
+ " ```\n"
171
+ "\n"
172
+ " ```gleam\n"
173
+ " assert !exclusive_or(True, True)\n"
174
+ " ```\n"
175
+ ).
176
+ -spec exclusive_or(boolean(), boolean()) -> boolean().
177
+ exclusive_or(A, B) ->
178
+ A /= B.
179
+
180
+ -file("src/gleam/bool.gleam", 173).
181
+ ?DOC(
182
+ " Returns the exclusive nor of two bools.\n"
183
+ "\n"
184
+ " ## Examples\n"
185
+ "\n"
186
+ " ```gleam\n"
187
+ " assert exclusive_nor(False, False)\n"
188
+ " ```\n"
189
+ "\n"
190
+ " ```gleam\n"
191
+ " assert !exclusive_nor(False, True)\n"
192
+ " ```\n"
193
+ "\n"
194
+ " ```gleam\n"
195
+ " assert !exclusive_nor(True, False)\n"
196
+ " ```\n"
197
+ "\n"
198
+ " ```gleam\n"
199
+ " assert exclusive_nor(True, True)\n"
200
+ " ```\n"
201
+ ).
202
+ -spec exclusive_nor(boolean(), boolean()) -> boolean().
203
+ exclusive_nor(A, B) ->
204
+ A =:= B.
205
+
206
+ -file("src/gleam/bool.gleam", 189).
207
+ ?DOC(
208
+ " Returns a string representation of the given bool.\n"
209
+ "\n"
210
+ " ## Examples\n"
211
+ "\n"
212
+ " ```gleam\n"
213
+ " assert to_string(True) == \"True\"\n"
214
+ " ```\n"
215
+ "\n"
216
+ " ```gleam\n"
217
+ " assert to_string(False) == \"False\"\n"
218
+ " ```\n"
219
+ ).
220
+ -spec to_string(boolean()) -> binary().
221
+ to_string(Bool) ->
222
+ case Bool of
223
+ false ->
224
+ <<"False"/utf8>>;
225
+
226
+ true ->
227
+ <<"True"/utf8>>
228
+ end.
229
+
230
+ -file("src/gleam/bool.gleam", 248).
231
+ ?DOC(
232
+ " Run a callback function if the given bool is `False`, otherwise return a\n"
233
+ " default value.\n"
234
+ "\n"
235
+ " With a `use` expression this function can simulate the early-return pattern\n"
236
+ " found in some other programming languages.\n"
237
+ "\n"
238
+ " In a procedural language:\n"
239
+ "\n"
240
+ " ```js\n"
241
+ " if (predicate) return value;\n"
242
+ " // ...\n"
243
+ " ```\n"
244
+ "\n"
245
+ " In Gleam with a `use` expression:\n"
246
+ "\n"
247
+ " ```gleam\n"
248
+ " use <- guard(when: predicate, return: value)\n"
249
+ " // ...\n"
250
+ " ```\n"
251
+ "\n"
252
+ " Like everything in Gleam `use` is an expression, so it short circuits the\n"
253
+ " current block, not the entire function. As a result you can assign the value\n"
254
+ " to a variable:\n"
255
+ "\n"
256
+ " ```gleam\n"
257
+ " let x = {\n"
258
+ " use <- guard(when: predicate, return: value)\n"
259
+ " // ...\n"
260
+ " }\n"
261
+ " ```\n"
262
+ "\n"
263
+ " Note that unlike in procedural languages the `return` value is evaluated\n"
264
+ " even when the predicate is `False`, so it is advisable not to perform\n"
265
+ " expensive computation nor side-effects there.\n"
266
+ "\n"
267
+ "\n"
268
+ " ## Examples\n"
269
+ "\n"
270
+ " ```gleam\n"
271
+ " let name = \"\"\n"
272
+ " use <- guard(when: name == \"\", return: \"Welcome!\")\n"
273
+ " \"Hello, \" <> name\n"
274
+ " // -> \"Welcome!\"\n"
275
+ " ```\n"
276
+ "\n"
277
+ " ```gleam\n"
278
+ " let name = \"Kamaka\"\n"
279
+ " use <- guard(when: name == \"\", return: \"Welcome!\")\n"
280
+ " \"Hello, \" <> name\n"
281
+ " // -> \"Hello, Kamaka\"\n"
282
+ " ```\n"
283
+ ).
284
+ -spec guard(boolean(), BTX, fun(() -> BTX)) -> BTX.
285
+ guard(Requirement, Consequence, Alternative) ->
286
+ case Requirement of
287
+ true ->
288
+ Consequence;
289
+
290
+ false ->
291
+ Alternative()
292
+ end.
293
+
294
+ -file("src/gleam/bool.gleam", 289).
295
+ ?DOC(
296
+ " Runs a callback function if the given bool is `True`, otherwise runs an\n"
297
+ " alternative callback function.\n"
298
+ "\n"
299
+ " Useful when further computation should be delayed regardless of the given\n"
300
+ " bool's value.\n"
301
+ "\n"
302
+ " See [`guard`](#guard) for more info.\n"
303
+ "\n"
304
+ " ## Examples\n"
305
+ "\n"
306
+ " ```gleam\n"
307
+ " let name = \"Kamaka\"\n"
308
+ " let inquiry = fn() { \"How may we address you?\" }\n"
309
+ " use <- lazy_guard(when: name == \"\", return: inquiry)\n"
310
+ " \"Hello, \" <> name\n"
311
+ " // -> \"Hello, Kamaka\"\n"
312
+ " ```\n"
313
+ "\n"
314
+ " ```gleam\n"
315
+ " import gleam/int\n"
316
+ "\n"
317
+ " let name = \"\"\n"
318
+ " let greeting = fn() { \"Hello, \" <> name }\n"
319
+ " use <- lazy_guard(when: name == \"\", otherwise: greeting)\n"
320
+ " let number = int.random(99)\n"
321
+ " let name = \"User \" <> int.to_string(number)\n"
322
+ " \"Welcome, \" <> name\n"
323
+ " // -> \"Welcome, User 54\"\n"
324
+ " ```\n"
325
+ ).
326
+ -spec lazy_guard(boolean(), fun(() -> BTY), fun(() -> BTY)) -> BTY.
327
+ lazy_guard(Requirement, Consequence, Alternative) ->
328
+ case Requirement of
329
+ true ->
330
+ Consequence();
331
+
332
+ false ->
333
+ Alternative()
334
+ end.