%D \module
%D   [       file=core-01e,
%D        version=1997.03.31,
%D          title=\CONTEXT\ Core Macros,
%D       subtitle=1E (to be split),
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
%C details.

\writestatus{loading}{Context Core Macros (e)}

\unprotect

% \ifprocesspreviousparagraphs
%
% \nofskippedparagraphs
% \paragraphnumber
% \nofparagraphs
%
% \dosetparagraph
% \doresetparagraph
% \dobeforeparagraph
% \doafterparagraph
% \dobeforeskipparagraph
% \doafterskipparagraph
%
% \pushparagraphs\endcommand       alle alineas tot \endcommand laden
% \pushmoreparagraphs\endcommand   alle alineas tot \endcommand toevoegen
% \popparagraphs                   alle alineas oproepen
% \popparagraphs[a,b,c]            enkele alineas oproepen [geen]
%
% tzt een optionele prefix:
%
% \pushparagraphs[xxx]\endcommand  alle alineas tot \endcommand laden
% \popparagraphs[xxx]              alle alineas oproepen
% \popparagraphs[xxx][a,b,c]       enkele alineas oproepen
%
% \numberparagraphs
% \numberparagraphlines
% \resetparagraphlines

\newif\ifprocesspreviousparagraphs  % public
\newif\ifprocessallparagraphs       % private

\newcounter\totalnofparagraphs       % private
\newcounter\globalparagraphnumber    % private
\newcounter\discardedparagraphs      % private
\newcounter\mostrecentparagraphtotal % public

\let\dosetparagraph        = \relax % public
\let\doresetparagraph      = \relax % public
\let\dobeforeparagraph     = \relax % public
\let\doafterparagraph      = \relax % public
\let\dobeforeskipparagraph = \relax % public
\let\doafterskipparagraph  = \relax % public

\def\paragraphnumber      {} % public
\def\nofparagraphs        {} % public
\def\nofskippedparagraphs {} % public

\def\paragraphprefix {paragraph} % private

% voorlopig, wordt nog class

\def\resetparagraphlines%
  {\global\linenumber=1\relax}

\def\numberparagraphs% instelbaar maken en slimmer ivm breedte regelnummer !!!!!
  {\processpreviousparagraphstrue
   \def\dosetparagraph%
     {\bgroup
      \resetparagraphlines
      \EveryPar
        {\strut\inlinkermarge{\tf{\tx\paragraphnumber}\kern2em}%
         \ignorespaces}}
   \def\doresetparagraph%
     {\resetparagraphlines
      \egroup}}

\def\numberparagraphlines%
  {\processpreviousparagraphstrue
   \def\dosetparagraph%
     {\resetparagraphlines}
   \def\doresetparagraph%
     {\resetparagraphlines}
   \def\dobeforeparagraph%
     {\startregelnummeren[\v!verder]}
   \def\doafterparagraph%
     {\stopregelnummeren}
   \def\dobeforeskipparagraph%
     {\stopregelnummeren
      \let\paragraphnumber=\relax}
   \def\doafterskipparagraph%
     {\startregelnummeren[\v!verder]}}

\def\dopushparagraphs#1%
  {\global\let\mostrecentparagraphtotal=\totalnofparagraphs
   \ifx#1\undefined
     \let#1=\relax
   \fi
   \convertargument#1\to\asciiA
   \convertargument{ }\to\asciiB  % lege regel
   \def\dopushparagraph##1\par%
     {\convertargument##1\to\asciiC
      \doifelse{\asciiC}{\asciiA}
        {\let\next=#1}
        {\doifnot{\asciiC}{}      % lege paragraaf
           {\doifnot{\asciiC}{\asciiB}
              {\doglobal\increment\totalnofparagraphs
               \ifnum\totalnofparagraphs>0\nofskippedparagraphs\relax
                 \setgvalue{\paragraphprefix\totalnofparagraphs}%
                   {##1}%
               \else
                 \setgvalue{\paragraphprefix\totalnofparagraphs}%
                   {\skipparagraph##1\par}%
               \fi}}%
         \let\next=\dopushparagraph}
      \next}%
   \dopushparagraph}

\def\pushparagraphs%
  {\doglobal\newcounter\totalnofparagraphs
   \dopushparagraphs}

\def\pushmoreparagraphs%
  {\dopushparagraphs}

\def\dododopopparagraph#1% no grouping, i.v.m. sidefloats
  {\ifnum#1>\totalnofparagraphs\relax
   \else
     \let\paragraphnumber=\globalparagraphnumber
     \decrement(\paragraphnumber,\discardedparagraphs)%
     \dobeforeparagraph
     \ifhmode\indentation\fi\getvalue{\paragraphprefix#1}\par
     \doafterparagraph
   \fi}

\long\def\skipparagraph#1\par%
  {\doglobal\increment\discardedparagraphs
   \ifprocessallparagraphs
     \dobeforeskipparagraph
     \ifhmode\indentation\fi#1\par
     \doafterskipparagraph
   \fi}

\def\dodopopparagraph%
  {\dododopopparagraph}

\def\dodoprocessparagraph#1%
  {\ifprocesspreviousparagraphs
     \bgroup
     \setbox0=\vbox{\dododopopparagraph{#1}}%
     \egroup
   \fi}

\def\processpreviousparagraphs[#1]% process previous ones
  {\ifprocesspreviousparagraphs
     \bgroup
     \getfromcommacommand[#1][1]% tzt snelle \..command.. testen
     \let\totalnofparagraphs=\commalistelement
     \decrement\totalnofparagraphs
     \let\dodopopparagraph=\dodoprocessparagraph
     \popparagraphs
     \egroup
   \fi}

\def\dopopparagraphs[#1]%
  {\doifnotinset{#1}{\v!geen,0}
     {\dosetparagraph
      \doglobal\newcounter\globalparagraphnumber
      \doglobal\newcounter\discardedparagraphs
      \doifelse{#1}{}
        {\processallparagraphstrue}
        {\processallparagraphsfalse}%
      \def\dopopparagraph%
        {\doglobal\increment\globalparagraphnumber
         \ifnum\globalparagraphnumber>\totalnofparagraphs\relax
           \let\dopopparagraph=\relax
         \else\ifprocessallparagraphs
           \ifnum\globalparagraphnumber>\mostrecentparagraphtotal\relax
             \dodopopparagraph\globalparagraphnumber
           \else
             \dodoprocessparagraph\globalparagraphnumber
           \fi
         \else
           \let\paragraphnumber=\globalparagraphnumber
           \decrement(\paragraphnumber,\discardedparagraphs)%
           \ExpandBothAfter\doifinsetelse{\paragraphnumber}{#1}
             {\dodopopparagraph\globalparagraphnumber}
             {\dodoprocessparagraph\globalparagraphnumber}%
         \fi\fi
         \dopopparagraph}%
      \dopopparagraph
      \doresetparagraph}}

\def\popparagraphs%
  {\dosingleempty\dopopparagraphs}

\def\countparagraphs%
  {\popparagraphs[\!!maxcard]%
   \global\let\nofparagraphs=\totalnofparagraphs
   \doglobal\decrement(\nofparagraphs,\discardedparagraphs)}

% \steluitlijnenin[onder]
% \stelwitruimtein[groot]
%
% \toonkader
%
% \numberparagraphlines
% \numberparagraphs
%
% \def\nofskippedparagraphs{1}
%
% \pushparagraphs\ThatsIt
%
% \ruledbaseline eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste
%
% \ruledbaseline eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste eerste eerste eerste
% eerste eerste eerste eerste eerste
%
% \ruledbaseline tweede tweede tweede tweede tweede tweede
% tweede tweede tweede tweede tweede tweede tweede tweede
% tweede tweede tweede tweede tweede tweede tweede tweede
% tweede tweede tweede tweede tweede tweede tweede tweede
% tweede tweede tweede tweede tweede tweede tweede tweede
% tweede tweede tweede tweede tweede tweede tweede tweede
% tweede tweede tweede tweede tweede
%
% \skipparagraph \ruledbaseline skipped skipped skipped
% skipped skipped skipped skipped skipped skipped skipped
% skipped skipped skipped skipped skipped skipped skipped
% skipped skipped
%
% \ruledbaseline derde derde derde derde derde derde derde
% derde derde derde derde derde derde derde derde derde derde
% derde derde derde derde derde derde derde derde derde derde
% derde derde derde derde derde derde derde derde derde derde
% derde derde derde derde derde derde derde derde derde derde
% derde derde derde derde derde derde derde derde derde derde
%
% \skipparagraph \ruledbaseline skipped skipped skipped
% skipped skipped skipped skipped skipped skipped skipped
% skipped skipped skipped skipped skipped skipped skipped
% skipped skipped skipped
%
% \ruledbaseline vierde vierde vierde vierde vierde vierde
% vierde vierde vierde vierde vierde vierde vierde vierde
% vierde vierde vierde vierde vierde vierde vierde vierde
% vierde vierde vierde vierde
%
% \ruledbaseline vijfde vijfde vijfde vijfde vijfde vijfde
% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde
% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde
% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde
% vijfde vijfde vijfde
%
% \skipparagraph \ruledbaseline skipped skipped skipped
% skipped skipped skipped skipped skipped skipped skipped
% skipped skipped skipped skipped skipped skipped skipped
% skipped skipped skipped
%
% \ThatsIt
%
% \popparagraphs
%
% \countparagraphs
%
% \blanko[2*groot]
%
% nofparagraphs:~\nofparagraphs
%
% \pagina
%
% \popparagraphs[1]
% \popparagraphs[2]
% \popparagraphs[3]
% \popparagraphs[4]
% \popparagraphs[5]
%
% \pagina
%
% \ruledvbox{\popparagraphs[1,2,3,4,5]}
%
% \pagina

% PAS OP: VERVALLEN
%
% \newif\ifprocesspreviousparagraphs
% \newif\ifprocessallparagraphs
%
% \newcounter\nofskippedparagraphs
% \newcounter\nofmidskippedparagraphs
%
% \def\alineanummer  {}
%
% \newcounter\nofalineas
%
% \def\laadalineas#1%  alinea = class
%   {\doglobal\newcounter\nofalineas
%    \doglobal\decrement(\nofalineas,\nofskippedparagraphs)%
%    \ifx#1\undefined
%      \let#1=\relax
%    \fi
%    \convertargument#1\to\asciiA
%    \convertargument{ }\to\asciiB  % lege regel
%    \def\dolaadalinea##1\par%
%      {\convertargument##1\to\asciiC
%       \doifelse{\asciiC}{\asciiA}
%         {\let\next=#1}
%         {\doifnot{\asciiC}{}      % lege paragraaf
%            {\doifnot{\asciiC}{\asciiB}
%               {\doglobal\increment\nofalineas
%                \setgvalue{alinea\nofalineas}{##1}}}%
%          \let\next=\dolaadalinea}
%       \next}%
%    \dolaadalinea}
%
% % De constructie \edef\alineanummer{#1} is nodig voor
% % bijvoorbeeld:
% %
% % \EveryPar{\strut\inlinker{\alineanummer}}
% %
% % Laten we dit weg, dan wordt het vorige nummer gebruikt.
%
% \def\dododohaalalinea#1% geen grouping, i.v.m. sidefloats
%   {\edef\localalineanummer{#1}%
%    \ifnum\localalineanummer>\nofalineas\relax
%    \else
%      \ifnum\localalineanummer>0\relax
%        \let\alineanummer=\localalineanummer
%        \decrement(\alineanummer,\nofmidskippedparagraphs)%
%      \else
%        \let\alineanummer=\empty
%      \fi
%      \dopreparagraph
%      \doeveryparagraph\getvalue{alinea\localalineanummer}\par
%      \dopostparagraph
%    \fi}
%
% \long\def\geenalinea#1\par%
%   {\ifprocessallparagraphs
%      \let\alineanummer=\relax
%      \dopostparagraph % fool around a bit
%      #1\par
%      \dopreparagraph  % ugly but effective
%    \fi
%    \doglobal\increment\nofmidskippedparagraphs}
%
% \def\dodohaalalinea%
%   {\dododohaalalinea}
%
% \def\dodoverwerkalinea#1%
%   {\ifprocesspreviousparagraphs
%      \bgroup
%      \setbox0=\vbox{\dododohaalalinea{#1}}%
%      \egroup
%    \fi}
%
% \def\verwerkvorigealineas[#1]% process previous ones
%   {\ifprocesspreviousparagraphs
%      \bgroup
%      \getfromcommacommand[#1][1]%
%      \let\nofalineas=\commalistelement
%      \decrement\nofalineas
%      \let\dodohaalalinea=\dodoverwerkalinea
%      \haalalineas
%      \egroup
%    \fi}
%
% \let \dosetparagraph   = \relax
% \let \doresetparagraph = \relax
% \let \dopreparagraph   = \relax
% \let \dopostparagraph  = \relax
% \let \doeveryparagraph = \relax
%
% \def\dohaalalineas[#1]%
%   {\doifnotinset{#1}{\v!geen,0}
%      {\dosetparagraph
%       \doglobal\newcounter\globalalineanummer
%       \doglobal\newcounter\nofmidskippedparagraphs
%       \doifelse{#1}{}
%         {\processallparagraphstrue
%          \doglobal\decrement(\globalalineanummer,\nofskippedparagraphs)}
%         {\processallparagraphsfalse}%
%       \def\dohaalalinea%
%         {\doglobal\increment\globalalineanummer
%          \ifnum\globalalineanummer>\nofalineas\relax
%            \let\dohaalalinea=\relax
%          \else
%            \ifprocessallparagraphs
%              \dodohaalalinea\globalalineanummer
%            \else
%              \let\localalineanummer=\globalalineanummer
%              \decrement(\localalineanummer,\nofmidskippedparagraphs)%
%              \ExpandBothAfter\doifinsetelse{\localalineanummer}{#1}
%                {\dodohaalalinea\globalalineanummer}
%                {\dodoverwerkalinea\globalalineanummer}%
%            \fi
%          \fi
%          \dohaalalinea}%
%       \dohaalalinea
%       \doresetparagraph}}
%
% \def\haalalineas%
%   {\dosingleempty\dohaalalineas}

\protect

\endinput
