% \iffalse meta-comment
%
%% File: fancytm.dtx
%
% Copyright (C) 2022 Maximilian Keßler
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
% license or (at your option) any later version.  The latest version
% of this license is in the file
%
%    https://www.latex-project.org/lppl.txt
%
% -----------------------------------------------------------------------
%<package>\ProvidesExplPackage{fancythm}{2022/01/17}{0.0.1}{Grouped theorems.}
%
%<*driver>
\documentclass[full,kernel]{l3doc}
\usepackage{mkessler-todo}
\begin{document}
  \DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \title{^^A
%   The \pkg{fancythm} package^^A
% }
%
% \author{^^A
%      Maximilian Keßler
% }
%
% \date{Released 2022-01-12}
%
% \maketitle
%
% \begin{documentation}
% \end{documentation}
% 
% 
% \begin{implementation}
% 
% \section{\pkg{fancythm} implementation}
%
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
%
%    \begin{macrocode}
%<@@=fancythm>
%    \end{macrocode}
%
%
%
%    \begin{macrocode}
\cs_set_eq:NN \arabic:n \arabic
\cs_set_eq:NN \counter_new:n \newcounter
\cs_set_eq:NN \counter_within:nn \counterwithin
\cs_new:Npn \counter_new:nn #1 #2
  {
    \counter_new:n { #1 }
    \counter_within:nn { #1 } { #2 }
  }
\cs_set_eq:Nc \counter_alias:nn { @counteralias } % this is from thmtools
\cs_set_eq:Nc \counter_undefined_error:n { @nocounterr }

\cs_new:Npn \counter_if_exist_p:n #1 
  {
    \cs_if_exist_p:c { c@ #1 }
  }
\cs_new:Npn \counter_if_exist:nT #1
{
  \cs_if_exist:cT { c@ #1 }
}
\cs_new:Npn \counter_if_exist:nF #1
{
  \cs_if_exist:cF { c@ #1 }
}
\cs_new:Npn \counter_if_exist:nTF #1
{
  \cs_if_exist:cTF { c@ #1 }
}

\cs_new:Npn \counter_ensure_exist:n #1 
{
  \counter_if_exist:nF { #1 }
  {
    \counter_undefined_error:n { #1 }
  }
}
\cs_new:Npn \counter_the:n #1
  {
    \use:c { the #1 }
  }
\cs_new:Npn \counter_set_the:nn #1 #2
  {
    \counter_ensure_exist:n { #1 }
    \exp_args:Nc \renewcommand { the #1 } { #2 }
  }
\cs_new:Npn \counter_sub:nn #1 #2
  {
    \counter_within:nn { #1 } { #2 }
    \counter_set_the:nn { #1 } 
    {
      \counter_the:n { #2 } . \arabic:n { #1 }
    }
  }
\cs_new:Npn \@@_counter_sub_if_exist:n #1
{
  \counter_if_exist:nT { #1 }
  {
    \counter_sub:nn { in #1 } { #1 }
  }
}
%    \end{macrocode}
% 
% 
% 
%    \begin{macrocode}
%</package>
%    \end{macrocode}
%
%   \end{implementation}
% 
% 
% 
% \newpage
