lib/kanji.ex

defmodule Kanji do
  @moduledoc """
  漢字かどうかを判定する

  ## Usage

    iex(1)> Kanji.kanji?(?漢)
    true

    iex(2)> Kanji.kanji?(?A)
    false

  ### Reference
  https://tama-san.com/kanji-regex/  
  """

  @doc """
  漢字かどうかを判定する  
  """
  @spec kanji?(char()) :: boolean()
  def kanji?(char)
      when is_integer(char) and
             (char in 0x2E80..0x2FDF or
                char in [?々, ?〇, ?〻] or
                char in 0x3400..0x4DBF or
                char in 0x4E00..0x9FFF or
                char in 0xF900..0xFAFF or
                char in 0x20000..0x2FFFF),
      do: true

  def kanji?(_any), do: false
end