%%
%% File ctxdocstrip.tex
%%
%%     Copyright (C) 2016--2020
%%     CTEX.ORG and any individual authors listed in the documentation.
%%---------------------------------------------------------------------
%%
%%     This work may be distributed and/or modified under the
%%     conditions of the LaTeX Project Public License, either
%%     version 1.3c of this license or (at your option) any later
%%     version. This version of this license is in
%%        http://www.latex-project.org/lppl/lppl-1-3c.txt
%%     and the latest version of this license is in
%%        http://www.latex-project.org/lppl.txt
%%     and version 1.3 or later is part of all distributions of
%%     LaTeX version 2005/12/01 or later.
%%
%%     This work has the LPPL maintenance status "maintained".
%%
%%---------------------------------------------------------------------
%%
\csname ctxDocstripLoaded\endcsname
\let\ctxDocstripLoaded\endinput
\input l3docstrip %
\edef\ctxResetCatcode{%
 \catcode\number`\$=\the\catcode`\$\relax
 \catcode\number`\@=\the\catcode`\@\relax
}
\makeOther\$
\catcode`\@=11\relax
\def\plusOption+#1>#2$#3$\endLine{%
 \maybeMsg{<+#1 . >}%
 \Evaluate{#1}%
 \def\ctxCMD{#2}%
 \def\ctxID{$#3$}%
 \def\do##1##2##3{%
   \if1\Expr{##2}%
     \ctxReadIDFile
     \StreamPut##1{\inLine}%
   \fi
 }%
 \activefiles
}
\def\ctxReadIDFile{%
 \openin\inputcheck=\jobname.id\relax
 \ifeof\inputcheck\else
   \read \inputcheck to \inLine
   \closein\inputcheck
   \ifx\inLine\empty\else
     \let\ctxID\inLine
   \fi
 \fi
 \maybeMsg{^^J\ctxID^^J}%
 \def\inLine{\ctxCMD\ctxID}%
}
\keepsilent
\askforoverwritefalse
\declarepreamble\emptypreamble
\endpreamble
\declarepostamble\emptypostamble
\endpostamble
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
 \expandafter\ctxResetCatcode\expandafter\endinput
\fi
\let\OriginalStreamClose\StreamClose
\def\ctxStreamClose#1{%
 \OriginalStreamClose{#1}%
 \ctxConvFile{#1}%
}
\def\ctxConvFile#1{%
 \ifcsname zhconv@\csstring#1\endcsname
   \ctxConv{\lastnamedcs}%
           {\begincsname pth@\csstring#1\endcsname}%
 \fi
}
\def\ctxLuaFunc{%
 \directlua{
   local zhconv = require("ctex-zhconv").conv
   local scan_arg = token.scan_argument
   local t = lua.get_functions_table()
   local id = 233
   while t[id] do id = id + 1 end
   t[id] = function ()
     local enc  = scan_arg()
     local file = scan_arg()
     return zhconv(enc, file, file)
   end
   token.set_lua("ctxConv", id, "global", "protected")
 }%
 \global\let\ctxLuaFunc\relax
}
\def\convfile{%
 \ifx\@file\file
   \expandafter\ctxfile\else
   \expandafter\setconvfile\fi
}
\def\setconvfile#1#2{%
 \ctxLuaFunc
 \Name\def{zhconv@#2}{#1}%
 \let\StreamClose\ctxStreamClose
}
\def\ctxfile#1#2{%
 \setconvfile{#1}{#2}%
 \file{#2}%
}
\ctxResetCatcode
%%
%%
%% End of file ctxdocstrip.tex