Macro.unescape_string
unescape_string, go back to Macro module for more information.
Specs
Unescapes the given chars.
This is the unescaping behaviour used by default in Elixir
single- and double-quoted strings. Check unescape_string/2
for information on how to customize the escaping map.
In this setup, Elixir will escape the following: \0, \a, \b,
\d, \e, \f, \n, \r, \s, \t and \v. Bytes can be
given as hexadecimals via \xNN and Unicode code points as
\uNNNN escapes.
This function is commonly used on sigil implementations
(like ~r, ~s and others) which receive a raw, unescaped
string.
Examples
iex> Macro.unescape_string("example\\n")
"example\n"In the example above, we pass a string with \n escaped
and return a version with it unescaped.
Specs
unescape_string(String.t(), (non_neg_integer() -> non_neg_integer() | false)) :: String.t()
Unescapes the given chars according to the map given.
Check unescape_string/1 if you want to use the same map
as Elixir single- and double-quoted strings.
Map
The map must be a function. The function receives an integer representing the code point of the character it wants to unescape. Here is the default mapping function implemented by Elixir:
def unescape_map(:newline), do: true
def unescape_map(:unicode), do: true
def unescape_map(:hex), do: true
def unescape_map(?0), do: ?0
def unescape_map(?a), do: ?\a
def unescape_map(?b), do: ?\b
def unescape_map(?d), do: ?\d
def unescape_map(?e), do: ?\e
def unescape_map(?f), do: ?\f
def unescape_map(?n), do: ?\n
def unescape_map(?r), do: ?\r
def unescape_map(?s), do: ?\s
def unescape_map(?t), do: ?\t
def unescape_map(?v), do: ?\v
def unescape_map(e), do: eIf the unescape_map/1 function returns false, the char is
not escaped and the backslash is kept in the string.
Newlines, Unicode, and hexadecimals code points will be escaped if
the map returns true respectively for :newline, :unicode, and
:hex.
Examples
Using the unescape_map/1 function defined above is easy:
Macro.unescape_string("example\\n", &unescape_map(&1))