Files
n8n-openai-adapter/lib/string.ex
T

41 lines
935 B
Elixir

defmodule String do
# Receives a string as a list and escapes all occorrences
# of char and any string interpolation
def escape(other, char) do
[char|do_escape(other, char)]
end
## Helpers
defp do_escape([char|t], char) do
[?\\,char|do_escape(t, char)]
end
defp do_escape([h|t], char) when
h == ?# or h == ?\b or
h == ?\d or h == ?\e or
h == ?\f or h == ?\n or
h == ?\r or h == ?\\ or
h == ?\t or h == ?\v do
[?\\,escape_map(h)|do_escape(t, char)]
end
defp do_escape([h|t], char) do
[h|do_escape(t,char)]
end
defp do_escape([], char) do
[char]
end
defp escape_map(?#), do: ?#
defp escape_map(?\b), do: ?b
defp escape_map(?\d), do: ?d
defp escape_map(?\e), do: ?e
defp escape_map(?\f), do: ?f
defp escape_map(?\n), do: ?n
defp escape_map(?\r), do: ?r
defp escape_map(?\\), do: ?\\
defp escape_map(?\t), do: ?t
defp escape_map(?\v), do: ?v
end