\ProvidesPackage{interval}[2013/05/24 v0.1]

%%
%% This package can be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%% 
%% This work has the LPPL maintenance status "maintained".
%% 
%% The Current Maintainer of this work is Lars Madsen (daleif@imf.au.dk).
%%

\RequirePackage{pgfkeys}


\newcommand\INTV@scaler[1]{
  \def\INTV@auto{auto}
  \def\INTV@arg{#1}
  \ifx\INTV@auto\INTV@arg
    \def\INTV@openfence{\mathopen{}\mathclose\bgroup\left\INTV@leftfence}
    \def\INTV@closefence{\aftergroup\egroup\right\INTV@rightfence}
  \else
    \def\INTV@openfence{\mathopen{#1\INTV@leftfence}}
    \def\INTV@closefence{\mathclose{#1\INTV@rightfence}}
  \fi
}


% setup
\pgfkeys{%
  /interval/.is family,%
  /interval,%
  left open fence/.initial={]},%
  left closed fence/.initial={[},%
  right open fence/.initial={[},%
  right closed fence/.initial={]},%
  left fence/.link=/interval/left closed fence,%
  right fence/.link=/interval/right closed fence,%
  separator symbol/.initial={,},%
  open left/.style={ left fence/.link=/interval/left open fence },%
  open right/.style={ right fence/.link=/interval/right open fence },%
  open/.style={open left,open right},%
  scaled/.code={\INTV@scaler{#1}},%
  scaled/.default=auto,%
  soft open fences/.style={%
    left open fence={(},%
    right open fence={)},%
  },%
}

% user configuation
\newcommand\intervalconfig[1]{\pgfkeys{/interval,#1}}


\newcommand\interval[3][]{%
  \begingroup%
  \def\INTV@openfence{\mathopen{\INTV@leftfence}}%
  \def\INTV@closefence{\mathclose{\INTV@rightfence}}%
  \pgfkeys{interval,#1}%
  \pgfkeysgetvalue{/interval/left fence}{\INTV@leftfence}%
  \pgfkeysgetvalue{/interval/right fence}{\INTV@rightfence}%
  \INTV@openfence%
  #2% 
  %,%
  \pgfkeysvalueof{/interval/separator symbol}
  #3%
  \INTV@closefence%
  \endgroup%
}
