Current section
Files
Jump to
Current section
Files
lib/pinyin.ex
defmodule Pinyin do
def letter(string) do
pro = string |> :unicode.characters_to_list
|> (Enum.map &:uni2pinyin.decode/1)
combine(pro, String.to_char_list(string))
end
defp combine(pro, ori) do
Enum.map(Enum.zip(pro, ori),
fn {p, o} -> if is_tuple(p), do: to_string([o]),
else: pinyin_to_string(p) end)
end
defp pinyin_to_string(chars) do
if is_list(hd chars) do
str = chars |> (Enum.map &char_to_string/1)
|> (Enum.into HashSet.new)
|> HashSet.to_list
if length(str) == 1, do: (hd str), else: str
else
char_to_string(chars)
end
end
defp char_to_string(chars) do
to_string(Enum.slice(chars, 0, length(chars) -1))
end
end