%D \module
%D   [       file=publ-imp-def,
%D        version=2013.12.24,
%D          title=\CONTEXT\ Publication Support,
%D       subtitle=Definitions,
%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 Here we collect some helper setups. We assume that checking of a field
%D happens in the calling setup, if only because that is the place where
%D fences are also dealt with.

% These will become texdefinitions

\unprotect

\startxmlsetups btx:format:crossref
    \cite[\btxfield{crossref}]
\stopxmlsetups

\startxmlsetups btx:format:key
    \btxfield{short}
\stopxmlsetups

\starttexdefinition mutable protected btx:format:gotointernal #content
    \ifx\currentbtxinternal\empty
        #content
    \else\ifnum\currentbtxinternal=\zerocount
        #content
    \else\ifconditional\btxinteractive
        \goto
            {#content}
            [\s!internal(\currentbtxinternal)]
    \else
        #content
    \fi\fi\fi
\stoptexdefinition

\starttexdefinition mutable protected btx:format:goto #link #content
    \ifconditional\btxinteractive
        \goto {#content} [#link]
    \else
        #content
    \fi
\stoptexdefinition

\startxmlsetups btx:format:doi
    \edef\currentbtxfielddoi{\btxfield{doi}}
    \ifx\currentbtxfielddoi\empty
        {\tttf no-doi}
    \else
        \texdefinition {btx:format:goto} {
            url(http://dx.doi.org/\currentbtxfielddoi)
        } {
            \hyphenatedurl{\currentbtxfielddoi}
        }
    \fi
\stopxmlsetups

\startxmlsetups btx:format:url
    \edef\currentbtxfieldurl{\btxfield{url}}
    \ifx\currentbtxfieldurl\empty
        {\tttf no-url}
    \else
        \texdefinition {btx:format:goto} {
            url(\currentbtxfieldurl)
        } {
            \hyphenatedurl{\currentbtxfieldurl}
        }
    \fi
\stopxmlsetups

\startxmlsetups btx:format:year
    \edef\currentbtxfieldyear{\btxfield{year}}
    \ifx\currentbtxfieldyear\empty
        \btxlabeltext{\currentbtxspecification:nd}
    \fi
\stopxmlsetups

\startxmlsetups btx:format:month
    \edef\currentbtxfieldmonth{\btxfield{month}}
    \ifx\currentbtxfieldmonth\empty
        {\tttf no-month}
    \else
        \edef\p_monthconversion{\btxparameter\c!monthconversion}
        \ifx\p_monthconversion\empty % month month:mnem
            \currentbtxfieldmonth
        \else
            \doifelsenumber \currentbtxfieldmonth {
                \convertnumber\p_monthconversion\currentbtxfieldmonth
            } {
                \currentbtxfieldmonth
            }
        \fi
    \fi
\stopxmlsetups

% macros:

\starttexdefinition mutable protected btx:style:italic #content
    \dontleavehmode
    \begingroup
        \it
        #content
        \italiccorrection
    \endgroup
\stoptexdefinition

\starttexdefinition mutable protected btx:style:bold #content
    \dontleavehmode
    \begingroup
        \bf
        #content
    \endgroup
\stoptexdefinition

\starttexdefinition mutable protected btx:style:quote #content
    \dontleavehmode
    \startquote
        #content
    \stopquote
\stoptexdefinition

\starttexdefinition mutable protected btx:style #style #content
    \doifelsedefined {btx:style:#style} {
        \texdefinition{btx:style:#style} {
            #content
        }
    } {
        #content
    }
\stoptexdefinition

\protect