%D \module
%D   [       file=attr-ini,
%D        version=2007.06.06, % probably a bit older
%D          title=\CONTEXT\ Node Macros,
%D       subtitle=Finalizing,
%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.

\writestatus{loading}{ConTeXt Node Support / Finalizing}

% Objects are processed indepently \unknown\ actually we may
% need a proper callback.

\unprotect

\registerctxluafile{node-shp}{optimize}
% \registerctxluafile{node-fin}{autosuffix,optimize} % we might generalize this one
\registerctxluafile{node-fin}{optimize} % we might generalize this one

% we might have two variants at some point (efficiency)

\unexpanded\def\finalizeobjectbox #1{\clf_finalizebox#1\relax}
\unexpanded\def\finalizeshipoutbox#1{\clf_finalizebox#1\relax}

% Experimental (for Aditya):

\unexpanded\def\cleanupbox#1{\clf_cleanupbox#1\relax}

% Tricky stuff: this might become obsolete.

\definesystemattribute[trigger][public]

\newcount\c_syst_attr_trigger

\edef\startinheritattributes{\c_attr_trigger\plusone}
\edef\stopinheritattributes {\c_attr_trigger\attributeunsetvalue}

\def\syst_attr_trigger_copy_yes{\afterassignment\syst_attr_trigger_copy_indeed\c_syst_attr_trigger}
\def\syst_attr_trigger_dump_yes{\afterassignment\syst_attr_trigger_dump_indeed\c_syst_attr_trigger}

\def\syst_attr_trigger_copy_indeed
  {\ifvbox\c_syst_attr_trigger
     \vpack attr \triggerattribute \plusone {\unvcopy\c_syst_attr_trigger}%
   \else
     \hpack attr \triggerattribute \plusone {\unhcopy\c_syst_attr_trigger}%
   \fi}

\def\syst_attr_trigger_dump_indeed
  {\ifvbox\c_syst_attr_trigger
     \vpack attr \triggerattribute \plusone {\unvbox\c_syst_attr_trigger}%
   \else
     \hpack attr \triggerattribute \plusone {\unhbox\c_syst_attr_trigger}%
   \fi}

\unexpanded\def\enableattributeinheritance
  {\clf_enablestatetriggering
   \let\attributedcopy\syst_attr_trigger_copy_yes
   \let\attributedbox \syst_attr_trigger_dump_yes}

\unexpanded\def\disableattributeinheritance
  {\clf_disablestatetriggering
   \let\attributedcopy\copy
   \let\attributedbox \box}

\disableattributeinheritance

\installtexdirective
  {attributes.inheritance}
  {\enableattributeinheritance}
  {\disableattributeinheritance}

% \appendtoks
%     \enableattributeinheritance % might become default
% \to\everyjob

\protect \endinput
