Packages
gleam_erlang
0.34.0
1.3.0
1.2.0
1.1.0
1.0.0
1.0.0-rc1
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.18.0-rc1
retired
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Types and functions for programs running on Erlang!
Current section
Files
Jump to
Current section
Files
src/gleam@erlang@atom.erl
-module(gleam@erlang@atom).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([from_string/1, create_from_string/1, to_string/1, from_dynamic/1]).
-export_type([atom_/0, from_string_error/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type atom_() :: any().
-type from_string_error() :: atom_not_loaded.
-file("/Users/louis/src/gleam/erlang/src/gleam/erlang/atom.gleam", 43).
?DOC(
" Finds an existing Atom for the given String.\n"
"\n"
" If no atom is found in the virtual machine's atom table for the String then\n"
" an error is returned.\n"
"\n"
" ## Examples\n"
" ```gleam\n"
" from_string(\"ok\")\n"
" // -> Ok(create_from_string(\"ok\"))\n"
" ```\n"
" ```gleam\n"
" from_string(\"some_new_atom\")\n"
" // -> Error(AtomNotLoaded)\n"
" ```\n"
).
-spec from_string(binary()) -> {ok, atom_()} | {error, from_string_error()}.
from_string(A) ->
gleam_erlang_ffi:atom_from_string(A).
-file("/Users/louis/src/gleam/erlang/src/gleam/erlang/atom.gleam", 55).
?DOC(
" Creates an atom from a string, inserting a new value into the virtual\n"
" machine's atom table if an atom does not already exist for the given\n"
" string.\n"
"\n"
" We must be careful when using this function as there is a limit to the\n"
" number of atom that can fit in the virtual machine's atom table. Never\n"
" convert user input into atoms as filling the atom table will cause the\n"
" virtual machine to crash!\n"
).
-spec create_from_string(binary()) -> atom_().
create_from_string(A) ->
erlang:binary_to_atom(A).
-file("/Users/louis/src/gleam/erlang/src/gleam/erlang/atom.gleam", 68).
?DOC(
" Returns a `String` corresponding to the text representation of the given\n"
" `Atom`.\n"
"\n"
" ## Examples\n"
" ```gleam\n"
" let ok_atom = create_from_string(\"ok\")\n"
" to_string(ok_atom)\n"
" // -> \"ok\"\n"
" ```\n"
).
-spec to_string(atom_()) -> binary().
to_string(A) ->
erlang:atom_to_binary(A).
-file("/Users/louis/src/gleam/erlang/src/gleam/erlang/atom.gleam", 85).
?DOC(
" Checks to see whether a `Dynamic` value is an atom, and return the atom if\n"
" it is.\n"
"\n"
" ## Examples\n"
" ```gleam\n"
" import gleam/dynamic\n"
" from_dynamic(dynamic.from(create_from_string(\"hello\")))\n"
" // -> Ok(create_from_string(\"hello\"))\n"
" ```\n"
" ```gleam\n"
" from_dynamic(dynamic.from(123))\n"
" // -> Error([DecodeError(expected: \"Atom\", found: \"Int\", path: [])])\n"
" ```\n"
).
-spec from_dynamic(gleam@dynamic:dynamic_()) -> {ok, atom_()} |
{error, list(gleam@dynamic@decode:decode_error())}.
from_dynamic(From) ->
gleam_erlang_ffi:atom_from_dynamic(From).