%%
%% This is file `textmerg.sty', generated
%% on <1995/1/3> with the docstrip utility (2.2i).
%%
%% The original source files were:
%%
%% textmerg.dtx (with options: `textmerg')
%%
%% Copyright (C) 1992,1994 Mike Piff, University of Sheffield, England
%%
%% You are not allowed to change this file.
%%
%% You are NOT ALLOWED to distribute this file alone. You are NOT
%% ALLOWED to take money for the distribution or use of this
%% file except for a nominal charge for copying etc.
%%
%% Please address any problems to:
%%
%% M.Piff@shef.ac.uk
%%
%% For updates, contact your nearest CTAN site.
%%
\def\fileversion{2.01}
\def\filedate{1994/06/20}
\def\filename{textmerg.dtx}
\def\Copyright{Copyright (C) 1992,1994 Mike Piff, University of Sheffield, England}
\NeedsTeXFormat{LaTeX2e}[1994/01/01]
\ProvidesPackage{textmerg}[\filedate]
\typeout{Package `textmerg' <\filedate>.}
\typeout{\Copyright}
\def\glet{\global\let}
\newread\MergeFile
\def\InputFile#1{%
\openin\MergeFile=#1
\ifeof\MergeFile
\errmessage{Empty merge file}%
\closein\MergeFile
\long\def\MakeTemplate##1{%
\def\Template{}}%
\else\GetInput\fi}
\def\GetInput{{\endlinechar=-1
\global\read\MergeFile to\InputBuffer}}
\def\SeeIfEof{%
\let\NextLook\relax
\ifeof\MergeFile
\else
\ifx\InputBuffer\empty
\LookAgain
\fi
\fi
\NextLook}
\def\LookAgain{\GetInput
\let\NextLook\SeeIfEof}
\newif\ifNonBlank \NonBlankfalse
\def\AllowBlank{\global\NonBlankfalse}
\def\DontAllowBlank{\global\NonBlanktrue}
\def\ReadIn#1{%
\ifNonBlank\SeeIfEof\fi
\ifeof\MergeFile
\gdef#1{??}\MissingField
\else
\glet#1\InputBuffer
\GetInput
\fi}
\def\MissingField{%
\message{Missing field in file}}
\newtoks\GlobalFields
\def\Fields#1{\GlobalFields{#1}}
\def\ParseFields#1{%
\ifx#1\EndParseFields
\let\NextParse\relax
\else
\let\NextParse\ParseFields
\ifx#1+\DontAllowBlank
\else
\ifx#1-\AllowBlank
\else\ReadIn#1
\fi
\fi
\fi\NextParse}
\let\EndParseFields\ParseFields
\def\ReadFields#1{\expandafter\ParseFields
\the#1\EndParseFields
\AllowBlank}
\long\def\Merge#1#2{\begingroup%
\InputFile{#1}%
\def\Fields##1{%
\ParseFields##1\EndParseFields}%
\MakeTemplate{#2}\Iterate}
\long\def\MakeTemplate#1{\def\Template{#1}}
\countdef\Iteratecounter=2
\Iteratecounter=0
\def\Iterate{%
\global\advance\Iteratecounter by1
\ReadFields\GlobalFields
\Template
\SeeIfEof
\ifeof\MergeFile
\def\NextIteration{%
\endgroup\closein\MergeFile}%
\else
\let\NextIteration\Iterate
\fi
\NextIteration}
\newcount\MultiCount \newcount\MaxCount
\newif\ifStartOfList
\def\MultiRead#1{%
\ifnum#1>0
\SelectCR
\MakeEmpty{#1}%
\global\StartOfListtrue
\glet\NextRead\MRead
\AllowBlank
\global\MaxCount=#1
\NextRead
\fi}
\newcount\Emptyctr
\def\MakeEmpty#1{\Emptyctr=0
\loop
\advance\Emptyctr by1
\expandafter\ifx\csname
pr\the\Emptyctr\endcsname\relax
\expandafter\glet\csname
pr\the\Emptyctr\endcsname\empty
\fi
\ifnum\Emptyctr<#1
\repeat}
\def\Process#1#2{%
\expandafter\def\csname
pr#1\endcsname##1{#2{##1}}}
\def\MarkEnd#1{\gdef\EndMarker{#1}}
\MarkEnd{}
\newtoks\NextLine \newtoks\NextField
\def\AppendNextField{%
\global\advance\MultiCount1
\NextField=\expandafter{\TempField}%
\edef\Append{\NextLine=
{\the\NextLine&\csname
pr\the\MultiCount\endcsname
{\the\NextField}}}%
\Append}
\def\SelectCR{\glet\EndLine\\}%
\def\FinishLine{%
\ifStartOfList
\global\StartOfListfalse
\else\EndLine\fi}
\def\StopProcessing{%
\global\MultiCount\MaxCount
\glet\NextRead\AllowBlank}
\def\MRead{%
\global\MultiCount=1
\ReadIn\TempField
\ifx\TempField\EndMarker
\StopProcessing
\else
\FinishLine
\NextField=\expandafter{\TempField}%
\edef\StartLine{\NextLine={\csname
pr1\endcsname{\the\NextField}}}%
\StartLine
\ConstructNextRow
\fi
\NextRead}
\def\ConstructNextRow{%
\ifnum\MultiCount<\MaxCount
\loop
\ReadIn\TempField
\ifx\TempField\EndMarker
\glet\TempField\empty
\StopProcessing
\MissingField
\else
\ifeof\MergeFile
\glet\TempField\empty
\StopProcessing
\MissingField
\fi
\fi
\AppendNextField
\ifnum\MultiCount<\MaxCount
\repeat
\fi
\the\NextLine}
\endinput
%%
%% End of file `textmerg.sty'.
|