%\iffalse
%<*package>
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%</package>
%
% Doc-Source file to use with LaTeX2e
% Copyright (C) 2015 Nicola Talbot, all rights reserved.
% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
% \fi
%
%
%
% \subsection{Austrian German (de-AT): \texttt{datetime2-de-AT.ldf}}
% \changes{2.0}{2017-10-03}{Added regional variant: Austrian German (de-AT)}
%
% Identify Module.
%    \begin{macrocode}
\ProvidesDateTimeModule{de-AT}[2019/12/13 v3.0]
%    \end{macrocode}
% Require the base German module.
%    \begin{macrocode}
\RequireDateTimeModule{german-base}
%    \end{macrocode}
%
%
% Allow the to configure the "de-AT" and "de-AT-numeric" styles.
% The package wide separators such as \cs{dtm@datetimesep} are not used
% in case other date formats are also required.
%
%\begin{macro}{\DTMdeATdowdaysep}
% The separator between weekday and day
%    \begin{macrocode}
\newcommand*{\DTMdeATdowdaysep}{,\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMdeATdaymonthsep}
% The separator between the day and month for the text format.
%    \begin{macrocode}
\newcommand*{\DTMdeATdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMdeATmonthyearsep}
% The separator between the month and year for the text format.
%    \begin{macrocode}
\newcommand*{\DTMdeATmonthyearsep}{\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMdeATdatetimesep}
% The separator between the date and time blocks in the full format
% (either text or numeric).
%    \begin{macrocode}
\newcommand*{\DTMdeATdatetimesep}{,\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMdeATtimezonesep}
% The separator between the time and zone blocks in the full format
% (either text or numeric).
%    \begin{macrocode}
\newcommand*{\DTMdeATtimezonesep}{\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMdeATdatesep}
% The separator for the numeric date format.
%    \begin{macrocode}
\newcommand*{\DTMdeATdatesep}{.}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMdeATtimesep}
% The separator for the numeric time format.
%    \begin{macrocode}
\newcommand*{\DTMdeATtimesep}{:}
%    \end{macrocode}
%\end{macro}
%
% Provide keys that can be used in \cs{DTMlangsetup} to set these
% separators.
%    \begin{macrocode}
\DTMdefkey{de-AT}{dowdaysep}{\renewcommand*{\DTMdeATdowdaysep}{#1}}
\DTMdefkey{de-AT}{daymonthsep}{\renewcommand*{\DTMdeATdaymonthsep}{#1}}
\DTMdefkey{de-AT}{monthyearsep}{\renewcommand*{\DTMdeATmonthyearsep}{#1}}
\DTMdefkey{de-AT}{datetimesep}{\renewcommand*{\DTMdeATdatetimesep}{#1}}
\DTMdefkey{de-AT}{timezonesep}{\renewcommand*{\DTMdeATtimezonesep}{#1}}
\DTMdefkey{de-AT}{datesep}{\renewcommand*{\DTMdeATdatesep}{#1}}
\DTMdefkey{de-AT}{timesep}{\renewcommand*{\DTMdeATtimesep}{#1}}
%    \end{macrocode}
%
% 
% Define a boolean key that can switch between full and abbreviated formats for
% the month and day of week names.
%    \begin{macrocode}
\DTMdefboolkey{de-AT}{abbr}[true]{}
%    \end{macrocode}
%
% The default is to show the full names.
%    \begin{macrocode}
\DTMsetbool{de-AT}{abbr}{false}
%    \end{macrocode}
%
% Define a boolean key that determines if the time zone mappings
% should be used.
%    \begin{macrocode}
\DTMdefboolkey{de-AT}{mapzone}[true]{}
%    \end{macrocode}
% The default is to use mappings.
%    \begin{macrocode}
\DTMsetbool{de-AT}{mapzone}{true}
%    \end{macrocode}
%
% Define a boolean key that determines if the day of month should be
% displayed.
%    \begin{macrocode}
\DTMdefboolkey{de-AT}{showdayofmonth}[true]{}
%    \end{macrocode}
% The default is to show the day of month.
%    \begin{macrocode}
\DTMsetbool{de-AT}{showdayofmonth}{true}
%    \end{macrocode}
%
% Define a boolean key that determines if the year should be
% displayed.
%    \begin{macrocode}
\DTMdefboolkey{de-AT}{showyear}[true]{}
%    \end{macrocode}
% The default is to show the year.
%    \begin{macrocode}
\DTMsetbool{de-AT}{showyear}{true}
%    \end{macrocode}
%
%
% Define the "de-AT" style.
%    \begin{macrocode}
\DTMnewstyle
{de-AT}% label
{% date style
  \renewcommand*\DTMdisplaydate[4]{%
    \ifDTMshowdow
      \ifnum##4>-1
        \DTMifbool{de-AT}{abbr}%
        {\DTMgermanshortweekdayname{##4}}%
        {\DTMgermanweekdayname{##4}}%
        \DTMdeATdowdaysep
      \fi
    \fi
    %
    \DTMifbool{de-AT}{showdayofmonth}%
    {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}%
    {}%
    %
    \DTMifbool{de-AT}{abbr}%
    {\DTMdeATshortmonthname{##2}}%
    {\DTMdeATmonthname{##2}}%
    %
    \DTMifbool{de-AT}{showyear}%
    {%
      \DTMdeATmonthyearsep%
      \number##1 % space intended
    }%
    {}%
  }%
  \renewcommand*\DTMDisplaydate[4]{%
    \ifDTMshowdow
      \ifnum##4>-1
        \DTMifbool{de-AT}{abbr}%
        {\DTMgermanshortweekdayname{##4}}%
        {\DTMgermanweekdayname{##4}}%
        \DTMdeATdowdaysep
      \fi
    \fi
    %
    \DTMifbool{de-AT}{showdayofmonth}%
    {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}%
    {}%
    %
    \DTMifbool{de-AT}{abbr}%
    {\DTMdeATshortmonthname{##2}}%
    {\DTMdeATmonthname{##2}}%
    %
    \DTMifbool{de-AT}{showyear}%
    {%
      \DTMdeATmonthyearsep%
      \number##1 % space intended
    }%
    {}%
  }%
}%
{% time style (use default)
  \renewcommand*\DTMdisplaytime[3]{%
    \DTMtwodigits{##1}%
    \DTMdeATtimesep\DTMtwodigits{##2}%
    \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi
  }%
}%
{% zone style
  \DTMresetzones
  \DTMgermanzonemaps
  \renewcommand*{\DTMdisplayzone}[2]{%
    \DTMifbool{de-AT}{mapzone}%
    {\DTMusezonemapordefault{##1}{##2}}%
    {%
      \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
      \ifDTMshowzoneminutes\DTMdeATtimesep\DTMtwodigits{##2}\fi
    }%
  }%
}%
{% full style
  \renewcommand*{\DTMdisplay}[9]{%
    \ifDTMshowdate
      \DTMdisplaydate{##1}{##2}{##3}{##4}%
      \DTMdeATdatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
      \DTMdeATtimezonesep
      \DTMdisplayzone{##8}{##9}%
    \fi
  }%
  \renewcommand*{\DTMDisplay}[9]{%
    \ifDTMshowdate
      \DTMDisplaydate{##1}{##2}{##3}{##4}%
      \DTMdeATdatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
      \DTMdeATtimezonesep
      \DTMdisplayzone{##8}{##9}%
    \fi
  }%
}%
%    \end{macrocode}
%
% Define the corresponding numeric style.
% \changes{3.0}{2019-12-13}{Change Austrian numeric style}
%    \begin{macrocode}
\DTMnewstyle
{de-AT-numeric}% label
{% date style
  \renewcommand*\DTMdisplaydate[4]{%
    \ifDTMshowdow
      \ifnum##4>-1
        \DTMifbool{de-AT}{abbr}%
        {\DTMgermanshortweekdayname{##4}}%
        {\DTMgermanweekdayname{##4}}%
        \DTMdeATdowdaysep
      \fi
    \fi
    %
    \DTMifbool{de-AT}{showdayofmonth}%
    {%
      \DTMtwodigits{##3}%
      \DTMdeATdatesep
    }%
    {}%
    \DTMtwodigits{##2}%
    \DTMdeATdatesep%
    \DTMifbool{de-AT}{showyear}%
    {%
      \DTMifbool{de-AT}{abbr}%
      {\DTMtwodigits{##1}}%
      {\number##1 }% space intended
    }%
    {}%
  }%
  \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
}%
{% time style
  \renewcommand*\DTMdisplaytime[3]{%
    \DTMtwodigits{##1}%
    \DTMdeATtimesep\DTMtwodigits{##2}%
    \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi
  }%
}%
{% zone style
  \DTMresetzones
  \DTMgermanzonemaps
  \renewcommand*{\DTMdisplayzone}[2]{%
    \DTMifbool{de-AT}{mapzone}%
    {\DTMusezonemapordefault{##1}{##2}}%
    {%
      \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
      \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
    }%
  }%
}%
{% full style
  \renewcommand*{\DTMdisplay}[9]{%
    \ifDTMshowdate
      \DTMdisplaydate{##1}{##2}{##3}{##4}%
      \DTMdeATdatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
      \DTMdeATtimezonesep
      \DTMdisplayzone{##8}{##9}%
    \fi
  }%
  \renewcommand*{\DTMDisplay}{\DTMdisplay}%
}
%    \end{macrocode}
%
% Switch the style according to the \opt{useregional} setting.
%    \begin{macrocode}
\DTMifcaseregional
  {}% do nothing
  {\DTMsetstyle{de-AT}}%
  {\DTMsetstyle{de-AT-numeric}}%
%    \end{macrocode}
%
% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%    \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
  \ifundef\dategerman
  {}% do nothing
  {%
    \def\dategerman{%
      \DTMifcaseregional
      {}% do nothing
      {\DTMsetstyle{de-AT}}%
      {\DTMsetstyle{de-AT-numeric}}%
    }%
  }%
}%
{%
  \csdef{date\CurrentTrackedDialect}{%
    \DTMifcaseregional
    {}% do nothing
    {\DTMsetstyle{de-AT}}%
    {\DTMsetstyle{de-AT-numeric}}%
  }%
}%
%    \end{macrocode}
%
\endinput
