%D \module
%D   [      file=s-references-identity,
%D        version=2018.09.15,
%D          title=\CONTEXT\ Style File,
%D       subtitle=Analyze References,
%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.

% begin info
%
% title   : analyze reference
%
% comment : show the building blocks of a reference (list)
%
% end info

\startmodule[references-identify]

\startluacode

moduledata.references = moduledata.references or { }

local context = context
local NC, NR = context.NC, context.NR
local bold = context.bold
local text = context

function moduledata.references.show(str)
    local t = structures.references.identify(str)
    context.starttabulate { "|T|T|T|" }
    for i=1,#t do
        if i == 1 then
            context.FL()
        else
            context.ML()
        end
        local ti = t[i]
        NC() bold(i) NC() bold("reference") NC() bold(ti.reference)      NC() NR()
        NC()         NC() text("kind")      NC() text(ti.kind)           NC() NR()
        NC()         NC() text("operation") NC() text(ti.operation)      NC() NR()
        NC()         NC() text("arguments") NC() text(ti.arguments)      NC() NR()
        NC()         NC() text("special")   NC() text(ti.special)        NC() NR()
    end
    context.LL()
    context.stoptabulate()
end

\stopluacode

\installmodulecommandluasingle \showreference {moduledata.references.show}

\stopmodule

\continueifinputfile{s-references-identify.mkiv}

\usemodule[art-01]

\starttext

    \showreference[page(123),StartMovie{mymovie}]
    \showreference[JS(Forget_Changes),CloseDocument]
    \showreference[manual::contents]

\stoptext
