% This file is copyrighted (c) 1998-2004 by Javier Bezos.
% All Rights Reserved.
% 
% This program can be redistributed and/or modified under the terms
% of the LaTeX Project Public License Distributed from CTAN
% archives in directory macros/latex/base/lppl.txt; either
% version 1 of the License, or any later version.

\ProvidesPackage{esindex}[2004/07/19 v1.1 Spanish indexes]

\def\esx@level{`\!}
\def\esx@actual{`\@}
\def\esx@encap{`\|}
\def\esx@quote{`\"}

\def\esx@error{\PackageError{esindex}{Unknown index parameter}%
	   {Options in this package have the form^^J%
	    parameter=value, where parameter stands for^^J%
		one of the following MakeIndex ones:^^J%
		encap, level, actual, quote}}

\def\esx@process#1=#2\esx@process{%
  \@ifundefined{esx@#1}{\esx@error}{%
  \expandafter\edef\csname esx@#1\endcsname
   {\string`\expandafter\noexpand\csname\string#2\endcsname}}}

\DeclareOption*{%
  \@expandtwoargs\in@{=}{\CurrentOption}%
  \ifin@
    \expandafter\esx@process\CurrentOption\esx@process
  \else
    \esx@error
  \fi}

\ProcessOptions

\begingroup

\catcode`\|=\catcode\esx@encap   \lccode`\|=\esx@encap\relax
\catcode`\!=\catcode\esx@level   \lccode`\!=\esx@level\relax
\catcode`\&=\catcode\esx@actual  \lccode`\&=\esx@actual\relax
\catcode`\*=13                   \lccode`\*=\esx@quote\relax

\catcode`\'=13
\catcode`\"=13
\catcode`\~=13

\gdef\esindex#1#{\esx@index{#1}}

\lowercase{
\gdef\esx@index#1#2{%
  \let\esx@g\@empty
  \esx@bar@idx#2|\@@
  \expandafter\esx@@index\esx@b!\@@
  \protected@edef\esx@g{\noexpand\index#1{\esx@g\esx@a}}%
  \esx@g}
}

\lowercase{
\gdef\esx@bar@idx#1|#2\@@{%
  \def\esx@b{#1}\def\esx@a{#2}%
  \ifx\esx@a\@empty\else\esx@bar@eat#2\fi}
}

\lowercase{
\gdef\esx@bar@eat#1|{\def\esx@a{|#1}}
}

\lowercase{
\gdef\esx@@index#1!#2\@@{%
  \begingroup
  \def\@tabacckludge##1{\csname\string##1\endcsname}%
  \def\'##1{\@ifundefined{esx@index@q@\string##1}%
       {##1}%
       {\csname esx@index@q@\string##1\endcsname}}%
  \ifnum\catcode`\'=\active
    \let'\'%
  \fi
  \def\~##1{\string##1\string^^ff}%
  \ifnum\catcode`\~=\active
    \let~\~%
  \fi
  \def\"##1{\@ifundefined{esx@index@qq@\string##1}%
       {\string"##1}%
       {\csname esx@index@qq@\string##1\endcsname}}%
  \ifnum\catcode`\"=\active
    \let"\"%
  \fi
  \protected@xdef\esx@g{\esx@g#1\string &}%
  \endgroup
  \begingroup
  \def*##1{% <- its lower case is the quote char (")
    \ifcat##1a%
	  \@ifundefined{spanish@sh@\string*\string##1@}%
        {\string*##1}%
        {\string*\string*##1}%
	\else
	  \string*\string##1%
	\fi}%
  \def\esx@b{#2}%
  \ifx\esx@b\@empty
     \protected@xdef\esx@g{\esx@g#1}%
  \else
     \protected@xdef\esx@g{\esx@g#1!}%
     \esx@@index#2\@@
  \fi
  \endgroup}
}
\endgroup

\def\esx@index@q@n{n\string^^ff}
\def\esx@index@q@N{N\string^^ff}

\def\esx@index@qq@o{.o}
\def\esx@index@qq@O{.O}
\def\esx@index@qq@a{.a}
\def\esx@index@qq@A{.A}
\def\esx@index@qq@u{u}
\def\esx@index@qq@A{U}
\def\esx@index@qq@c{c}
\def\esx@index@qq@C{C}

\endinput