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,381 @@
1
+ -module(gleam@option).
2
+ -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
3
+ -define(FILEPATH, "src/gleam/option.gleam").
4
+ -export([all/1, is_some/1, is_none/1, to_result/2, from_result/1, unwrap/2, lazy_unwrap/2, map/2, flatten/1, then/2, 'or'/2, lazy_or/2, values/1]).
5
+ -export_type([option/1]).
6
+
7
+ -if(?OTP_RELEASE >= 27).
8
+ -define(MODULEDOC(Str), -moduledoc(Str)).
9
+ -define(DOC(Str), -doc(Str)).
10
+ -else.
11
+ -define(MODULEDOC(Str), -compile([])).
12
+ -define(DOC(Str), -compile([])).
13
+ -endif.
14
+
15
+ -type option(EL) :: {some, EL} | none.
16
+
17
+ -file("src/gleam/option.gleam", 57).
18
+ -spec reverse_and_prepend(list(FA), list(FA)) -> list(FA).
19
+ reverse_and_prepend(Prefix, Suffix) ->
20
+ case Prefix of
21
+ [] ->
22
+ Suffix;
23
+
24
+ [First | Rest] ->
25
+ reverse_and_prepend(Rest, [First | Suffix])
26
+ end.
27
+
28
+ -file("src/gleam/option.gleam", 42).
29
+ -spec all_loop(list(option(ER)), list(ER)) -> option(list(ER)).
30
+ all_loop(List, Acc) ->
31
+ case List of
32
+ [] ->
33
+ {some, lists:reverse(Acc)};
34
+
35
+ [none | _] ->
36
+ none;
37
+
38
+ [{some, First} | Rest] ->
39
+ all_loop(Rest, [First | Acc])
40
+ end.
41
+
42
+ -file("src/gleam/option.gleam", 38).
43
+ ?DOC(
44
+ " Combines a list of `Option`s into a single `Option`.\n"
45
+ " If all elements in the list are `Some` then returns a `Some` holding the list of values.\n"
46
+ " If any element is `None` then returns `None`.\n"
47
+ "\n"
48
+ " ## Examples\n"
49
+ "\n"
50
+ " ```gleam\n"
51
+ " assert all([Some(1), Some(2)]) == Some([1, 2])\n"
52
+ " ```\n"
53
+ "\n"
54
+ " ```gleam\n"
55
+ " assert all([Some(1), None]) == None\n"
56
+ " ```\n"
57
+ ).
58
+ -spec all(list(option(EM))) -> option(list(EM)).
59
+ all(List) ->
60
+ all_loop(List, []).
61
+
62
+ -file("src/gleam/option.gleam", 76).
63
+ ?DOC(
64
+ " Checks whether the `Option` is a `Some` value.\n"
65
+ "\n"
66
+ " ## Examples\n"
67
+ "\n"
68
+ " ```gleam\n"
69
+ " assert is_some(Some(1))\n"
70
+ " ```\n"
71
+ "\n"
72
+ " ```gleam\n"
73
+ " assert !is_some(None)\n"
74
+ " ```\n"
75
+ ).
76
+ -spec is_some(option(any())) -> boolean().
77
+ is_some(Option) ->
78
+ Option /= none.
79
+
80
+ -file("src/gleam/option.gleam", 92).
81
+ ?DOC(
82
+ " Checks whether the `Option` is a `None` value.\n"
83
+ "\n"
84
+ " ## Examples\n"
85
+ "\n"
86
+ " ```gleam\n"
87
+ " assert !is_none(Some(1))\n"
88
+ " ```\n"
89
+ "\n"
90
+ " ```gleam\n"
91
+ " assert is_none(None)\n"
92
+ " ```\n"
93
+ ).
94
+ -spec is_none(option(any())) -> boolean().
95
+ is_none(Option) ->
96
+ Option =:= none.
97
+
98
+ -file("src/gleam/option.gleam", 108).
99
+ ?DOC(
100
+ " Converts an `Option` type to a `Result` type.\n"
101
+ "\n"
102
+ " ## Examples\n"
103
+ "\n"
104
+ " ```gleam\n"
105
+ " assert to_result(Some(1), \"some_error\") == Ok(1)\n"
106
+ " ```\n"
107
+ "\n"
108
+ " ```gleam\n"
109
+ " assert to_result(None, \"some_error\") == Error(\"some_error\")\n"
110
+ " ```\n"
111
+ ).
112
+ -spec to_result(option(FI), FL) -> {ok, FI} | {error, FL}.
113
+ to_result(Option, E) ->
114
+ case Option of
115
+ {some, A} ->
116
+ {ok, A};
117
+
118
+ none ->
119
+ {error, E}
120
+ end.
121
+
122
+ -file("src/gleam/option.gleam", 127).
123
+ ?DOC(
124
+ " Converts a `Result` type to an `Option` type.\n"
125
+ "\n"
126
+ " ## Examples\n"
127
+ "\n"
128
+ " ```gleam\n"
129
+ " assert from_result(Ok(1)) == Some(1)\n"
130
+ " ```\n"
131
+ "\n"
132
+ " ```gleam\n"
133
+ " assert from_result(Error(\"some_error\")) == None\n"
134
+ " ```\n"
135
+ ).
136
+ -spec from_result({ok, FO} | {error, any()}) -> option(FO).
137
+ from_result(Result) ->
138
+ case Result of
139
+ {ok, A} ->
140
+ {some, A};
141
+
142
+ {error, _} ->
143
+ none
144
+ end.
145
+
146
+ -file("src/gleam/option.gleam", 146).
147
+ ?DOC(
148
+ " Extracts the value from an `Option`, returning a default value if there is none.\n"
149
+ "\n"
150
+ " ## Examples\n"
151
+ "\n"
152
+ " ```gleam\n"
153
+ " assert unwrap(Some(1), 0) == 1\n"
154
+ " ```\n"
155
+ "\n"
156
+ " ```gleam\n"
157
+ " assert unwrap(None, 0) == 0\n"
158
+ " ```\n"
159
+ ).
160
+ -spec unwrap(option(FT), FT) -> FT.
161
+ unwrap(Option, Default) ->
162
+ case Option of
163
+ {some, X} ->
164
+ X;
165
+
166
+ none ->
167
+ Default
168
+ end.
169
+
170
+ -file("src/gleam/option.gleam", 165).
171
+ ?DOC(
172
+ " Extracts the value from an `Option`, evaluating the default function if the option is `None`.\n"
173
+ "\n"
174
+ " ## Examples\n"
175
+ "\n"
176
+ " ```gleam\n"
177
+ " assert lazy_unwrap(Some(1), fn() { 0 }) == 1\n"
178
+ " ```\n"
179
+ "\n"
180
+ " ```gleam\n"
181
+ " assert lazy_unwrap(None, fn() { 0 }) == 0\n"
182
+ " ```\n"
183
+ ).
184
+ -spec lazy_unwrap(option(FV), fun(() -> FV)) -> FV.
185
+ lazy_unwrap(Option, Default) ->
186
+ case Option of
187
+ {some, X} ->
188
+ X;
189
+
190
+ none ->
191
+ Default()
192
+ end.
193
+
194
+ -file("src/gleam/option.gleam", 188).
195
+ ?DOC(
196
+ " Updates a value held within the `Some` of an `Option` by calling a given function\n"
197
+ " on it.\n"
198
+ "\n"
199
+ " If the `Option` is a `None` rather than `Some`, the function is not called and the\n"
200
+ " `Option` stays the same.\n"
201
+ "\n"
202
+ " ## Examples\n"
203
+ "\n"
204
+ " ```gleam\n"
205
+ " assert map(over: Some(1), with: fn(x) { x + 1 }) == Some(2)\n"
206
+ " ```\n"
207
+ "\n"
208
+ " ```gleam\n"
209
+ " assert map(over: None, with: fn(x) { x + 1 }) == None\n"
210
+ " ```\n"
211
+ ).
212
+ -spec map(option(FX), fun((FX) -> FZ)) -> option(FZ).
213
+ map(Option, Fun) ->
214
+ case Option of
215
+ {some, X} ->
216
+ {some, Fun(X)};
217
+
218
+ none ->
219
+ none
220
+ end.
221
+
222
+ -file("src/gleam/option.gleam", 211).
223
+ ?DOC(
224
+ " Merges a nested `Option` into a single layer.\n"
225
+ "\n"
226
+ " ## Examples\n"
227
+ "\n"
228
+ " ```gleam\n"
229
+ " assert flatten(Some(Some(1))) == Some(1)\n"
230
+ " ```\n"
231
+ "\n"
232
+ " ```gleam\n"
233
+ " assert flatten(Some(None)) == None\n"
234
+ " ```\n"
235
+ "\n"
236
+ " ```gleam\n"
237
+ " assert flatten(None) == None\n"
238
+ " ```\n"
239
+ ).
240
+ -spec flatten(option(option(GB))) -> option(GB).
241
+ flatten(Option) ->
242
+ case Option of
243
+ {some, X} ->
244
+ X;
245
+
246
+ none ->
247
+ none
248
+ end.
249
+
250
+ -file("src/gleam/option.gleam", 246).
251
+ ?DOC(
252
+ " Updates a value held within the `Some` of an `Option` by calling a given function\n"
253
+ " on it, where the given function also returns an `Option`. The two options are\n"
254
+ " then merged together into one `Option`.\n"
255
+ "\n"
256
+ " If the `Option` is a `None` rather than `Some` the function is not called and the\n"
257
+ " option stays the same.\n"
258
+ "\n"
259
+ " This function is the equivalent of calling `map` followed by `flatten`, and\n"
260
+ " it is useful for chaining together multiple functions that return `Option`.\n"
261
+ "\n"
262
+ " ## Examples\n"
263
+ "\n"
264
+ " ```gleam\n"
265
+ " assert then(Some(1), fn(x) { Some(x + 1) }) == Some(2)\n"
266
+ " ```\n"
267
+ "\n"
268
+ " ```gleam\n"
269
+ " assert then(Some(1), fn(x) { Some(#(\"a\", x)) }) == Some(#(\"a\", 1))\n"
270
+ " ```\n"
271
+ "\n"
272
+ " ```gleam\n"
273
+ " assert then(Some(1), fn(_) { None }) == None\n"
274
+ " ```\n"
275
+ "\n"
276
+ " ```gleam\n"
277
+ " assert then(None, fn(x) { Some(x + 1) }) == None\n"
278
+ " ```\n"
279
+ ).
280
+ -spec then(option(GF), fun((GF) -> option(GH))) -> option(GH).
281
+ then(Option, Fun) ->
282
+ case Option of
283
+ {some, X} ->
284
+ Fun(X);
285
+
286
+ none ->
287
+ none
288
+ end.
289
+
290
+ -file("src/gleam/option.gleam", 273).
291
+ ?DOC(
292
+ " Returns the first value if it is `Some`, otherwise returns the second value.\n"
293
+ "\n"
294
+ " ## Examples\n"
295
+ "\n"
296
+ " ```gleam\n"
297
+ " assert or(Some(1), Some(2)) == Some(1)\n"
298
+ " ```\n"
299
+ "\n"
300
+ " ```gleam\n"
301
+ " assert or(Some(1), None) == Some(1)\n"
302
+ " ```\n"
303
+ "\n"
304
+ " ```gleam\n"
305
+ " assert or(None, Some(2)) == Some(2)\n"
306
+ " ```\n"
307
+ "\n"
308
+ " ```gleam\n"
309
+ " assert or(None, None) == None\n"
310
+ " ```\n"
311
+ ).
312
+ -spec 'or'(option(GK), option(GK)) -> option(GK).
313
+ 'or'(First, Second) ->
314
+ case First of
315
+ {some, _} ->
316
+ First;
317
+
318
+ none ->
319
+ Second
320
+ end.
321
+
322
+ -file("src/gleam/option.gleam", 300).
323
+ ?DOC(
324
+ " Returns the first value if it is `Some`, otherwise evaluates the given function for a fallback value.\n"
325
+ "\n"
326
+ " ## Examples\n"
327
+ "\n"
328
+ " ```gleam\n"
329
+ " assert lazy_or(Some(1), fn() { Some(2) }) == Some(1)\n"
330
+ " ```\n"
331
+ "\n"
332
+ " ```gleam\n"
333
+ " assert lazy_or(Some(1), fn() { None }) == Some(1)\n"
334
+ " ```\n"
335
+ "\n"
336
+ " ```gleam\n"
337
+ " assert lazy_or(None, fn() { Some(2) }) == Some(2)\n"
338
+ " ```\n"
339
+ "\n"
340
+ " ```gleam\n"
341
+ " assert lazy_or(None, fn() { None }) == None\n"
342
+ " ```\n"
343
+ ).
344
+ -spec lazy_or(option(GO), fun(() -> option(GO))) -> option(GO).
345
+ lazy_or(First, Second) ->
346
+ case First of
347
+ {some, _} ->
348
+ First;
349
+
350
+ none ->
351
+ Second()
352
+ end.
353
+
354
+ -file("src/gleam/option.gleam", 320).
355
+ -spec values_loop(list(option(GW)), list(GW)) -> list(GW).
356
+ values_loop(List, Acc) ->
357
+ case List of
358
+ [] ->
359
+ lists:reverse(Acc);
360
+
361
+ [none | Rest] ->
362
+ values_loop(Rest, Acc);
363
+
364
+ [{some, First} | Rest@1] ->
365
+ values_loop(Rest@1, [First | Acc])
366
+ end.
367
+
368
+ -file("src/gleam/option.gleam", 316).
369
+ ?DOC(
370
+ " Given a list of `Option`s,\n"
371
+ " returns only the values inside `Some`.\n"
372
+ "\n"
373
+ " ## Examples\n"
374
+ "\n"
375
+ " ```gleam\n"
376
+ " assert values([Some(1), None, Some(3)]) == [1, 3]\n"
377
+ " ```\n"
378
+ ).
379
+ -spec values(list(option(GS))) -> list(GS).
380
+ values(Options) ->
381
+ values_loop(Options, []).
@@ -0,0 +1,188 @@
1
+ -module(gleam@order).
2
+ -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
3
+ -define(FILEPATH, "src/gleam/order.gleam").
4
+ -export([negate/1, to_int/1, compare/2, reverse/1, break_tie/2, lazy_break_tie/2]).
5
+ -export_type([order/0]).
6
+
7
+ -if(?OTP_RELEASE >= 27).
8
+ -define(MODULEDOC(Str), -moduledoc(Str)).
9
+ -define(DOC(Str), -doc(Str)).
10
+ -else.
11
+ -define(MODULEDOC(Str), -compile([])).
12
+ -define(DOC(Str), -compile([])).
13
+ -endif.
14
+
15
+ -type order() :: lt | eq | gt.
16
+
17
+ -file("src/gleam/order.gleam", 32).
18
+ ?DOC(
19
+ " Inverts an order, so less-than becomes greater-than and greater-than\n"
20
+ " becomes less-than.\n"
21
+ "\n"
22
+ " ## Examples\n"
23
+ "\n"
24
+ " ```gleam\n"
25
+ " assert negate(Lt) == Gt\n"
26
+ " ```\n"
27
+ "\n"
28
+ " ```gleam\n"
29
+ " assert negate(Eq) == Eq\n"
30
+ " ```\n"
31
+ "\n"
32
+ " ```gleam\n"
33
+ " assert negate(Gt) == Lt\n"
34
+ " ```\n"
35
+ ).
36
+ -spec negate(order()) -> order().
37
+ negate(Order) ->
38
+ case Order of
39
+ lt ->
40
+ gt;
41
+
42
+ eq ->
43
+ eq;
44
+
45
+ gt ->
46
+ lt
47
+ end.
48
+
49
+ -file("src/gleam/order.gleam", 56).
50
+ ?DOC(
51
+ " Produces a numeric representation of the order.\n"
52
+ "\n"
53
+ " ## Examples\n"
54
+ "\n"
55
+ " ```gleam\n"
56
+ " assert to_int(Lt) == -1\n"
57
+ " ```\n"
58
+ "\n"
59
+ " ```gleam\n"
60
+ " assert to_int(Eq) == 0\n"
61
+ " ```\n"
62
+ "\n"
63
+ " ```gleam\n"
64
+ " assert to_int(Gt) == 1\n"
65
+ " ```\n"
66
+ ).
67
+ -spec to_int(order()) -> integer().
68
+ to_int(Order) ->
69
+ case Order of
70
+ lt ->
71
+ -1;
72
+
73
+ eq ->
74
+ 0;
75
+
76
+ gt ->
77
+ 1
78
+ end.
79
+
80
+ -file("src/gleam/order.gleam", 72).
81
+ ?DOC(
82
+ " Compares two `Order` values to one another, producing a new `Order`.\n"
83
+ "\n"
84
+ " ## Examples\n"
85
+ "\n"
86
+ " ```gleam\n"
87
+ " assert compare(Eq, with: Lt) == Gt\n"
88
+ " ```\n"
89
+ ).
90
+ -spec compare(order(), order()) -> order().
91
+ compare(A, B) ->
92
+ case {A, B} of
93
+ {X, Y} when X =:= Y ->
94
+ eq;
95
+
96
+ {lt, _} ->
97
+ lt;
98
+
99
+ {eq, gt} ->
100
+ lt;
101
+
102
+ {_, _} ->
103
+ gt
104
+ end.
105
+
106
+ -file("src/gleam/order.gleam", 92).
107
+ ?DOC(
108
+ " Inverts an ordering function, so less-than becomes greater-than and greater-than\n"
109
+ " becomes less-than.\n"
110
+ "\n"
111
+ " ## Examples\n"
112
+ "\n"
113
+ " ```gleam\n"
114
+ " import gleam/int\n"
115
+ " import gleam/list\n"
116
+ "\n"
117
+ " assert list.sort([1, 5, 4], by: reverse(int.compare)) == [5, 4, 1]\n"
118
+ " ```\n"
119
+ ).
120
+ -spec reverse(fun((I, I) -> order())) -> fun((I, I) -> order()).
121
+ reverse(Orderer) ->
122
+ fun(A, B) -> Orderer(B, A) end.
123
+
124
+ -file("src/gleam/order.gleam", 112).
125
+ ?DOC(
126
+ " Return a fallback `Order` in case the first argument is `Eq`.\n"
127
+ "\n"
128
+ " ## Examples\n"
129
+ "\n"
130
+ " ```gleam\n"
131
+ " import gleam/int\n"
132
+ "\n"
133
+ " assert break_tie(in: int.compare(1, 1), with: Lt) == Lt\n"
134
+ " ```\n"
135
+ "\n"
136
+ " ```gleam\n"
137
+ " import gleam/int\n"
138
+ "\n"
139
+ " assert break_tie(in: int.compare(1, 0), with: Eq) == Gt\n"
140
+ " ```\n"
141
+ ).
142
+ -spec break_tie(order(), order()) -> order().
143
+ break_tie(Order, Other) ->
144
+ case Order of
145
+ lt ->
146
+ Order;
147
+
148
+ gt ->
149
+ Order;
150
+
151
+ eq ->
152
+ Other
153
+ end.
154
+
155
+ -file("src/gleam/order.gleam", 139).
156
+ ?DOC(
157
+ " Invokes a fallback function returning an `Order` in case the first argument\n"
158
+ " is `Eq`.\n"
159
+ "\n"
160
+ " This can be useful when the fallback comparison might be expensive and it\n"
161
+ " needs to be delayed until strictly necessary.\n"
162
+ "\n"
163
+ " ## Examples\n"
164
+ "\n"
165
+ " ```gleam\n"
166
+ " import gleam/int\n"
167
+ "\n"
168
+ " assert lazy_break_tie(in: int.compare(1, 1), with: fn() { Lt }) == Lt\n"
169
+ " ```\n"
170
+ "\n"
171
+ " ```gleam\n"
172
+ " import gleam/int\n"
173
+ "\n"
174
+ " assert lazy_break_tie(in: int.compare(1, 0), with: fn() { Eq }) == Gt\n"
175
+ " ```\n"
176
+ ).
177
+ -spec lazy_break_tie(order(), fun(() -> order())) -> order().
178
+ lazy_break_tie(Order, Comparison) ->
179
+ case Order of
180
+ lt ->
181
+ Order;
182
+
183
+ gt ->
184
+ Order;
185
+
186
+ eq ->
187
+ Comparison()
188
+ end.
@@ -0,0 +1,104 @@
1
+ -module(gleam@pair).
2
+ -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
3
+ -define(FILEPATH, "src/gleam/pair.gleam").
4
+ -export([first/1, second/1, swap/1, map_first/2, map_second/2, new/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
+ -file("src/gleam/pair.gleam", 9).
15
+ ?DOC(
16
+ " Returns the first element in a pair.\n"
17
+ "\n"
18
+ " ## Examples\n"
19
+ "\n"
20
+ " ```gleam\n"
21
+ " assert first(#(1, 2)) == 1\n"
22
+ " ```\n"
23
+ ).
24
+ -spec first({CMG, any()}) -> CMG.
25
+ first(Pair) ->
26
+ {A, _} = Pair,
27
+ A.
28
+
29
+ -file("src/gleam/pair.gleam", 22).
30
+ ?DOC(
31
+ " Returns the second element in a pair.\n"
32
+ "\n"
33
+ " ## Examples\n"
34
+ "\n"
35
+ " ```gleam\n"
36
+ " assert second(#(1, 2)) == 2\n"
37
+ " ```\n"
38
+ ).
39
+ -spec second({any(), CMJ}) -> CMJ.
40
+ second(Pair) ->
41
+ {_, A} = Pair,
42
+ A.
43
+
44
+ -file("src/gleam/pair.gleam", 35).
45
+ ?DOC(
46
+ " Returns a new pair with the elements swapped.\n"
47
+ "\n"
48
+ " ## Examples\n"
49
+ "\n"
50
+ " ```gleam\n"
51
+ " assert swap(#(1, 2)) == #(2, 1)\n"
52
+ " ```\n"
53
+ ).
54
+ -spec swap({CMK, CML}) -> {CML, CMK}.
55
+ swap(Pair) ->
56
+ {A, B} = Pair,
57
+ {B, A}.
58
+
59
+ -file("src/gleam/pair.gleam", 49).
60
+ ?DOC(
61
+ " Returns a new pair with the first element having had `with` applied to\n"
62
+ " it.\n"
63
+ "\n"
64
+ " ## Examples\n"
65
+ "\n"
66
+ " ```gleam\n"
67
+ " assert #(1, 2) |> map_first(fn(n) { n * 2 }) == #(2, 2)\n"
68
+ " ```\n"
69
+ ).
70
+ -spec map_first({CMM, CMN}, fun((CMM) -> CMO)) -> {CMO, CMN}.
71
+ map_first(Pair, Fun) ->
72
+ {A, B} = Pair,
73
+ {Fun(A), B}.
74
+
75
+ -file("src/gleam/pair.gleam", 63).
76
+ ?DOC(
77
+ " Returns a new pair with the second element having had `with` applied to\n"
78
+ " it.\n"
79
+ "\n"
80
+ " ## Examples\n"
81
+ "\n"
82
+ " ```gleam\n"
83
+ " assert #(1, 2) |> map_second(fn(n) { n * 2 }) == #(1, 4)\n"
84
+ " ```\n"
85
+ ).
86
+ -spec map_second({CMP, CMQ}, fun((CMQ) -> CMR)) -> {CMP, CMR}.
87
+ map_second(Pair, Fun) ->
88
+ {A, B} = Pair,
89
+ {A, Fun(B)}.
90
+
91
+ -file("src/gleam/pair.gleam", 77).
92
+ ?DOC(
93
+ " Returns a new pair with the given elements. This can also be done using the dedicated\n"
94
+ " syntax instead: `new(1, 2) == #(1, 2)`.\n"
95
+ "\n"
96
+ " ## Examples\n"
97
+ "\n"
98
+ " ```gleam\n"
99
+ " assert new(1, 2) == #(1, 2)\n"
100
+ " ```\n"
101
+ ).
102
+ -spec new(CMS, CMT) -> {CMS, CMT}.
103
+ new(First, Second) ->
104
+ {First, Second}.