\ProvidesPackage{uninormalize}
\RequirePackage{luatexbase}
\RequirePackage{luacode}
\RequirePackage{kvoptions}
\DeclareBoolOption[true]{nodes}
\DeclareBoolOption[true]{buffer}
\DeclareBoolOption{debug}
\ProcessKeyvalOptions*
\ifuninormalize@nodes
  \luaexec{processnodes=true}
\fi
\ifuninormalize@buffer
  \luaexec{processbuffer=true}
\fi
\ifuninormalize@debug
  \luaexec{uninormalize_debug = true}
\fi
\begin{luacode*}
local normalize = require "unicode-normalize"
if processnodes==true then
  print "[uninormalize] process nodes on"
  luatexbase.add_to_callback("pre_linebreak_filter",normalize.nodes, "normalize unicode")
  luatexbase.add_to_callback("hpack_filter",normalize.nodes, "normalize unicode")
end
if processbuffer== true then
  print "[uninormalize] process buffer on"
  luatexbase.add_to_callback("process_input_buffer", normalize.buffer," normalize unicode")
end
if uninormalize_debug then
  normalize.debug = true
end
\end{luacode*}


\endinput