%D \module
%D   [       file=m-calcmath,
%D        version=2006.04.24, % 1999.11.06,
%D          title=\CONTEXT\ Modules,
%D       subtitle=Calculator Math,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

%D Lua code.

\registerctxluafile{x-calcmath}{}

\def\ctxmodulecalcmath#1{\ctxlua{moduledata.calcmath.#1}}

%D Interface:

\unprotect

\protected\def\inlinecalcmath #1{\mathematics{\ctxmodulecalcmath{tex(\!!bs#1\!!es,1)}}}
\protected\def\displaycalcmath#1{\startformula\ctxmodulecalcmath{tex(\!!bs#1\!!es,2)}\stopformula}

\let\calcmath\inlinecalcmath

\let\icm\inlinecalcmath
\let\dcm\displaycalcmath

\startxmlsetups xml:cam:define
    \xmlsetsetup {\xmldocument} {cam:*}     {*}
    \xmlsetsetup {\xmldocument} {(icm|dcm)} {cam:*}
\stopxmlsetups

\xmlregisterns{cam}{calcmath}

\xmlregistersetup{xml:cam:define}

% tex -> lua -> tex -> lua -> tex
%   \mathematics{\ctxmodulecalcmath{xml(\!!bs\xmlflush{#1}\!!es,1)}}
% tex -> lua -> tex
%   \mathematics{\ctxmodulecalcmath{xml("#1",1)}}%

\startxmlsetups cam:i
    \mathematics{\ctxmodulecalcmath{xml("#1",1)}}%
\stopxmlsetups

\startxmlsetups cam:d
    \startformula\ctxmodulecalcmath{xml("#1",2)}\stopformula
\stopxmlsetups

\startxmlsetups cam:icm
    \mathematics{\ctxmodulecalcmath{xml("#1",1)}}
\stopxmlsetups

\startxmlsetups cam:dcm
    \startformula\ctxmodulecalcmath{xml("#1",2)}\stopformula
\stopxmlsetups

\protect \endinput

\starttext

% \calcmath{sin(x) + x^2 + x^(1+x) + 1/x^2 + mean(x+mean(y))}
% \calcmath{int(a,b,c)}
% \calcmath{(1+x)/(1+x) + (1+x)/(1+(1+x)/(1+x))}
% \calcmath{10E-2}
% \calcmath{(1+x)/x}
% \calcmath{(1+x)/12}
% \calcmath{(1+x)/-12}
% \calcmath{1/-12}
% \calcmath{12x/(1+x)}
% \calcmath{exp(x+exp(x+1))}
% \calcmath{abs(x+abs(x+1)) + pi + inf}
% \calcmath{Dx Dy}
% \calcmath{D(x+D(y))}
% \calcmath{Df(x)}
% \calcmath{g(x)}
