%\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>
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
% Copyright (C) 2015 Nicola Talbot, all rights reserved.
% Maintainer Zunbeltz Izaola. Based on the basque-date package by Edorta Ibarra.
% \fi
% \iffalse
%<*driver>
\documentclass{ltxdoc}

\usepackage{alltt}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[colorlinks,
            bookmarks,
            hyperindex=false,
            pdfauthor={Nicola L.C. Talbot},
            pdftitle={datetime2.sty Basque Module}]{hyperref}


\CheckSum{377}

\renewcommand*{\usage}[1]{\hyperpage{#1}}
\renewcommand*{\main}[1]{\hyperpage{#1}}
\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
\setcounter{IndexColumns}{2}

\newcommand*{\sty}[1]{\textsf{#1}}
\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}

\RecordChanges
\PageIndex
\CodelineNumbered

\begin{document}
\DocInput{datetime2-basque.dtx}
\end{document}
%</driver>
%\fi
%
%\MakeShortVerb{"}
%
%\title{Basque Module for datetime2 Package}
%\author{Zunbeltz Izaola \and Nicola L. C. Talbot (inactive)}
%\date{2015-03-29 (v1.2)}
%\maketitle
%
%
%\begin{abstract}
%This is the Basque language module for the \sty{datetime2}
%package. If you want to use the settings in this module you must
%install it in addition to installing \sty{datetime2}. If you use
%\sty{babel} or \sty{polyglossia}, you will need this module to
%prevent them from redefining \cs{today}. The \sty{datetime2}
% \opt{useregional} setting must be set to "text" or "numeric"
% for the language styles to be set.
% Alternatively, you can set the style in the document using
% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
% depending on the value of the \opt{useregional} setting.
% Currently there is only a regionless style.
%\end{abstract}
%
% \section{Introduction}
%
% According to The Basque Language Academy (\textit{Euskaltzaindia}), there 
% are various correct forms to display the date in Basque.\footnote{\textit{37. 
% araua. Data nola adierazi}: \url{http://euskaltzaindia.net/dok/arauak/Araua\_0037.pdf}} 
% The most used form, which includes the name of the location where the document or 
% text has been written, is the following:
%
% \begin{center}
% \textit{Durango(n), 1983ko martxoaren 7a(n)},
% \end{center}
% where the inessive case \textit{``n''} is optional. It must be taken into account 
% that the declination of numbers in Basque is not straightforward. 
% The inessive case is deactivated by default. To activate it, set the 
% \sty{inessive} boolean option to \sty{true} with \cs{DTMlangsetup}:
% \begin{verbatim}
% \DTMlangsetup[basque]{inessive=true}
% \end{verbatim}

%\StopEventually{%
%\clearpage
%\phantomsection
%\addcontentsline{toc}{section}{Change History}%
%\PrintChanges
%\addcontentsline{toc}{section}{\indexname}%
%\PrintIndex}
%
%\section{The Code}
%At the moment there is only the one ".ldf" file.
%
%\subsection{Main Basque Module (\texttt{datetime2-basque.ldf})}
%\changes{1.0}{2015-03-29}{Initial release}
%
%\iffalse
%    \begin{macrocode}
%<*datetime2-basque.ldf>
%    \end{macrocode}
%\fi
%
% Identify Module
%    \begin{macrocode}
\ProvidesDateTimeModule{basque}[2015/03/29 v1.0]
%    \end{macrocode}
%
% Define a boolean to  use the inessive case. It is not used by default.
%
%    \begin{macrocode}
\DTMdefboolkey{basque}{inessive}[false]{} 
%    \end{macrocode}

%\begin{macro}{\DTMbasqueordinal}
% Numbers are declined according to to the case.
%    \begin{macrocode}
\newcommand*{\DTMbasqueordinal}[1]{%
  \number#1%
  \DTMifbool{basque}{inessive}{%
    \ifcase\number#1 %declination for the day (inessive case)
    \or ean\or an\or an\or an\or ean\or an\or an\or an\or an\or ean\or
    n\or an\or an\or an\or ean\or an\or an\or an\or an\or an\or ean\or
    an\or an\or an\or ean\or an\or an\or an\or an\or ean\or n\fi%
  }{%
    \ifcase\number#1 %declination for the day (absolutive case)
    \or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or \or
    a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or
    a\or a\or a\or a\or a\or a\or a\or\fi%
  }%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMbasquemonthname}
% Basque declined month names.
%    \begin{macrocode}
\newcommand*{\DTMbasquemonthname}[1]{%
  \ifcase#1
  \or
  urtarrilaren%
  \or
  otsailaren%
  \or
  martxoaren%
  \or
  apirilaren%
  \or
  maiatzaren%
  \or
  ekainaren%
  \or
  uztailaren%
  \or
  abuztuaren%
  \or
  irailaren%
  \or
  urriaren%
  \or
  azaroaren%
  \or
  abenduaren%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMbasqueMonthname}
% As above but start with a capital.
%    \begin{macrocode}
\newcommand*{\DTMbasqueMonthname}[1]{%
  \ifcase#1
  \or
  Urtarrilaren%
  \or
  Otsailaren%
  \or
  Martxoaren%
  \or
  Apirilaren%
  \or
  Maiatzaren%
  \or
  Ekainaren%
  \or
  Uztailaren%
  \or
  Abuztuaren%
  \or
  Irailaren%
  \or
  Urriaren%
  \or
  Azaroaren%
  \or
  Abenduaren%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
% Define the \texttt{basque} style.
% The time style is the same as the "default" style
% provided by \sty{datetime2}. This may need correcting. For
% example, if a 12 hour style similar to the "englishampm" (from the
% "english-base" module) is required. 
%
% Allow the user a way of configuring the "basque" and
% "basque-numeric" styles. This doesn't use the package wide
% separators such as
% \cs{dtm@datetimesep} in case other date formats are also required.
%\begin{macro}{\DTMbasquemonthdaysep}
% The separator between the day and month for the text format.
%    \begin{macrocode}
\newcommand*{\DTMbasquemonthdaysep}{%
 \DTMtexorpdfstring{\protect~}{\space}}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMbasqueyearmonthsep}
% The separator between the month and year for the text format.
% According to the Basque declination rules for year
%    \begin{macrocode}
\newcommand*{\DTMbasqueyearmonthsep}{\ifcase\DTMtwodigits{\@dtm@currentyear}
  %Declination for the year
  %00-20
		  ko \or eko \or ko \or ko \or ko \or eko \or ko
		  \or ko \or ko \or ko \or eko \or ko \or ko 
		  \or ko \or ko \or eko \or ko \or ko \or ko  
		  \or ko \or ko \or 
		  %21-40
		  eko \or ko \or ko \or ko \or eko \or ko
		  \or ko \or ko \or ko \or eko \or ko \or ko 
		  \or ko \or ko \or eko \or ko \or ko \or ko  
		  \or ko \or ko \or
		  %41-60
		  eko \or ko \or ko \or ko \or eko \or ko
		  \or ko \or ko \or ko \or eko \or ko \or ko 
		  \or ko \or ko \or eko \or ko \or ko \or ko  
		  \or ko \or ko \or
		  %61-80
		  eko \or ko \or ko \or ko \or eko \or ko
		  \or ko \or ko \or ko \or eko \or ko \or ko 
		  \or ko \or ko \or eko \or ko \or ko \or ko  
		  \or ko \or ko \or
		  %81-100
		  eko \or ko \or ko \or ko \or eko \or ko
		  \or ko \or ko \or ko \or eko \or ko \or ko 
		  \or ko \or ko \or eko \or ko \or ko \or ko  
		  \or ko \or eko								
		\fi%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMbasquedatetimesep}
% The separator between the date and time blocks in the full format
% (either text or numeric).
%    \begin{macrocode}
\newcommand*{\DTMbasquedatetimesep}{\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMbasquetimezonesep}
% The separator between the time and zone blocks in the full format
% (either text or numeric).
%    \begin{macrocode}
\newcommand*{\DTMbasquetimezonesep}{\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMbasquedatesep}
% The separator for the numeric date format.
%
% There is no clear tradition for the puctuation mark to separe the numbers. 
% Spanish tradition will use either slash (/) or en-dash (-). I couldn't find typographic guidelines on the french tradition.
% I choose the slash over the en-dash because I found that more compact dates are nicer.
% 
%    \begin{macrocode}
\newcommand*{\DTMbasquedatesep}{/}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMbasquetimesep}
% The separator for the numeric time format.
%    \begin{macrocode}
\newcommand*{\DTMbasquetimesep}{:}
%    \end{macrocode}
%\end{macro}
%
%Provide keys that can be used in \cs{DTMlangsetup} to set these
%separators.
%    \begin{macrocode}
\DTMdefkey{basque}{monthdaysep}{\renewcommand*{\DTMbasquemonthdaysep}{#1}}
\DTMdefkey{basque}{yearmonthsep}{\renewcommand*{\DTMbasqueyearmonthsep}{#1}}
\DTMdefkey{basque}{datetimesep}{\renewcommand*{\DTMbasquedatetimesep}{#1}}
\DTMdefkey{basque}{timezonesep}{\renewcommand*{\DTMbasquetimezonesep}{#1}}
\DTMdefkey{basque}{datesep}{\renewcommand*{\DTMbasquedatesep}{#1}}
\DTMdefkey{basque}{timesep}{\renewcommand*{\DTMbasquetimesep}{#1}}
%    \end{macrocode}
%
% TODO: provide a boolean key to switch between full and abbreviated
% formats if appropriate. (I don't know how the date should be
% abbreviated.)
%
% Define a boolean key that determines if the time zone mappings
% should be used.
%    \begin{macrocode}
\DTMdefboolkey{basque}{mapzone}[true]{}
%    \end{macrocode}
% The default is to use mappings.
%    \begin{macrocode}
\DTMsetbool{basque}{mapzone}{true}
%    \end{macrocode}
%
% Define a boolean key that determines if the day of month should be
% displayed.
%    \begin{macrocode}
\DTMdefboolkey{basque}{showdayofmonth}[true]{}
%    \end{macrocode}
% The default is to show the day of month.
%    \begin{macrocode}
\DTMsetbool{basque}{showdayofmonth}{true}
%    \end{macrocode}
%
% Define a boolean key that determines if the year should be
% displayed.
%    \begin{macrocode}
\DTMdefboolkey{basque}{showyear}[true]{}
%    \end{macrocode}
% The default is to show the year.
%    \begin{macrocode}
\DTMsetbool{basque}{showyear}{true}
%    \end{macrocode}
%
% Define the "basque" style. (TODO: implement day of week?)
%    \begin{macrocode}
\DTMnewstyle
 {basque}% label
 {% date style
   \renewcommand*\DTMdisplaydate[4]{%
     \DTMifbool{basque}{showyear}%
     {%
       \number##1%
       \DTMbasqueyearmonthsep
     }%
     {}%
     \DTMbasquemonthname{##2}%
     \DTMifbool{basque}{showdayofmonth}
     {\DTMbasquemonthdaysep\DTMbasqueordinal{##3}}%
     {}%
   }%
   \renewcommand*\DTMDisplaydate[4]{%
     \DTMifbool{basque}{showyear}%
     {%
       \number##1%
       \DTMbasqueyearmonthsep
       \DTMbasquemonthname{##2}%
     }%
     {%
       \DTMbasqueMonthname{##2}%
     }%
     \DTMifbool{basque}{showdayofmonth}
     {\DTMbasquemonthdaysep\DTMbasqueordinal{##3}}%
     {}%
   }%
 }%
 {% time style (use default)
   \DTMsettimestyle{default}%
 }%
 {% zone style
   \DTMresetzones
   \DTMbasquezonemaps
   \renewcommand*{\DTMdisplayzone}[2]{%
     \DTMifbool{basque}{mapzone}%
     {\DTMusezonemapordefault{##1}{##2}}%
     {%
       \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
       \ifDTMshowzoneminutes\DTMbasquetimesep\DTMtwodigits{##2}\fi
     }%
   }%
 }%
 {% full style
   \renewcommand*{\DTMdisplay}[9]{%
    \ifDTMshowdate
     \DTMdisplaydate{##1}{##2}{##3}{##4}%
     \DTMbasquedatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
     \DTMbasquetimezonesep
     \DTMdisplayzone{##8}{##9}%
    \fi
   }%
   \renewcommand*{\DTMDisplay}[9]{%
    \ifDTMshowdate
     \DTMDisplaydate{##1}{##2}{##3}{##4}%
     \DTMbasquedatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
     \DTMbasquetimezonesep
     \DTMdisplayzone{##8}{##9}%
    \fi
   }%
 }%
%    \end{macrocode}
%
% Define numeric style.
%    \begin{macrocode}
\DTMnewstyle
 {basque-numeric}% label
 {% date style
    \renewcommand*\DTMdisplaydate[4]{%
      \DTMifbool{basque}{showyear}%
      {%
        \number##1%
        \DTMbasquedatesep
      }%
      {}%
      \number##2%
      \DTMifbool{basque}{showdayofmonth}%
      {%
        \DTMbasquedatesep
        \number##3 % space intended
      }%
      {}%
    }%
    \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
 }%
 {% time style
    \renewcommand*\DTMdisplaytime[3]{%
      \number##1
      \DTMbasquetimesep\DTMtwodigits{##2}%
      \ifDTMshowseconds\DTMbasquetimesep\DTMtwodigits{##3}\fi
    }%
 }%
 {% zone style
   \DTMresetzones
   \DTMbasquezonemaps
   \renewcommand*{\DTMdisplayzone}[2]{%
     \DTMifbool{basque}{mapzone}%
     {\DTMusezonemapordefault{##1}{##2}}%
     {%
       \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
       \ifDTMshowzoneminutes\DTMbasquetimesep\DTMtwodigits{##2}\fi
     }%
   }%
 }%
 {% full style
   \renewcommand*{\DTMdisplay}[9]{%
    \ifDTMshowdate
     \DTMdisplaydate{##1}{##2}{##3}{##4}%
     \DTMbasquedatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
     \DTMbasquetimezonesep
     \DTMdisplayzone{##8}{##9}%
    \fi
   }%
   \renewcommand*{\DTMDisplay}{\DTMdisplay}%
 }
%    \end{macrocode}
%
%\begin{macro}{\DTMbasquezonemaps}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed. This currently has no mappings.
%    \begin{macrocode}
\newcommand*{\DTMbasquezonemaps}{%
}
%    \end{macrocode}
%\end{macro}

% Switch style according to the \opt{useregional} setting.
%    \begin{macrocode}
\DTMifcaseregional
{}% do nothing
{\DTMsetstyle{basque}}
{\DTMsetstyle{basque-numeric}}
%    \end{macrocode}
%
% Redefine \cs{datebasque} (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\datebasque
  {% do nothing
  }%
  {%
    \def\datebasque{%
      \DTMifcaseregional
      {}% do nothing
      {\DTMsetstyle{basque}}%
      {\DTMsetstyle{basque-numeric}}%
    }%
  }%
}%
{%
  \csdef{date\CurrentTrackedDialect}{%
    \DTMifcaseregional
    {}% do nothing
    {\DTMsetstyle{basque}}%
    {\DTMsetstyle{basque-numeric}}
  }%
}%
%    \end{macrocode}
%\iffalse
%    \begin{macrocode}
%</datetime2-basque.ldf>
%    \end{macrocode}
%\fi
%\Finale
\endinput
