summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-string.sty
blob: 7d7c24b73011e90ce1ceeaeae7283ec847a552b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
%% CONCAT : string -> string -> string
%% (\concat str1 str2) => str1 ++ str2
\addassoc\@globalenv\concat{\@tlabel@func{\def\@temp@str{}\@str@concat}}
\def\@str@concat#1#2#3{%
	\let\@@next@str\relax
	\ifx#2\@tlabel@string
    	\expandafter\def
    	\expandafter\@temp@str
    	\expandafter{\@temp@str#3}%
    	\let\@@next@str\@str@concat
  	\else\ifx#2\relax
  		\let\@@next@str\@str@fin
  	\else
  		\errmessage{LISP on TeX [function --- concat]:%
  			 Arguments of concat must be strings}%
  	\fi\fi\@@next@str#1}
\def\@str@fin#1{%
	\expandafter\gdef\expandafter#1%
	\expandafter{\expandafter\@tlabel@string\expandafter{\@temp@str}}}

%% INT2STRING : int -> string
%% (\intTOstring i) -> 'i'
\addassoc\@globalenv\intTOstring{\@tlabel@func{\@conv@intTOstr}}
\def\@conv@intTOstr#1\@tlabel@int#2{\gdef#1{\@tlabel@string{#2}}}

%% IMMEDIATEWRITE : () -> ()
%% It outputs the output buffer immediately.
%% It cause error if the buffer is imcomlete.
\addassoc\@globalenv\immediatewrite{\@tlabel@func{\@immediate@write}}
\def\@immediate@write#1{%
	\gdef#1{\@tlabel@nil{}}%
	\@temp@write@buffer\gdef\@temp@write@buffer{}}

%% GROUP : string -> string
%% (\group str) -> '{str}'
\addassoc\@globalenv\group{\@tlabel@func{\@text@group}}
\def\@text@group#1#2#3{%
	\ifx#2\@tlabel@string
   		\gdef#1{\@tlabel@string{{#3}}}%
   	\else
   		\errmessage{LISP on TeX [function --- group]:%
   			The argument of group must be a string.}%
   	\fi}

%% UNGROUP : string -> string
%% (\group '{str}') -> 'str'
\addassoc\@globalenv\ungroup{\@tlabel@func{\@text@ungroup}}
\def\@text@ungroup#1#2#3{%
	\ifx#2\@tlabel@string
		\@@text@ungroup#1#3\@@end
	\else
		\errmessage{LISP on TeX [function --- ungroup]:%
   			The argument of ungroup must be a string.}%
	\fi}
\def\@@text@ungroup#1#2#3\@@end{%
	\ifx;#3;%
		\gdef#1{\@tlabel@string{#2}}%
	\else
		\errmessage{LISP on TeX [function --- ungroup]:%
   			The argument of ungroup must be a grouped string.}%
	\fi}