Builtin functions
In the following list of builtin functions, the first letter of each
argument indicates its type:
s for string,
i for integer,
r for real,
n for any numeric type, or
f for flag (0 or "off"; or, 1 or "on").
Mathematical functions
Angles are in radians.
- abs(n)
- Absolute value of n. Result has the same numeric type
as n.
- sin(r)
- (real) Sine of r.
- cos(r)
- (real) Cosine of r.
- tan(r)
- (real) Tangent of r.
- asin(r)
- (real) Arcsine of r, in the range [-pi/2, pi/2].
r must be in the domain [-1, 1].
- acos(r)
- (real) Arccosine of r, in the range [0, pi].
r must be in the domain [-1, 1].
- atan(r)
- (real) Arctangent of r, in the range [-pi/2, pi/2].
- exp(r)
- (real) e raised to the power r.
- pow(n1, n2)
- (real) n1 raised to the power n2.
If n1 is negative, n2 must be an integer.
- sqrt(n)
- (real) Square root of n
(same as
pow(n, 0.5)
).
- ln(n)
- (real) Natural logarithm of n.
n must be positive.
The base B logarithm of any number N can be found with the expression
ln(N) / ln(B)
.
- log10(n)
- (real) Base 10 logarithm of n.
n must be positive.
- mod(i1,i2)
- (int) Remainder of i1 divided by i2.
- trunc(r)
- (int) Integer part of r.
- rand()
- (int) Random integer in the range [0, system maximum].
- rand(i)
- (int) Random integer in the range [0, i - 1].
- rand(i1,i2)
- (int) Random integer in the range [i1, i2].
Input/output functions
- echo(s1 [,attrs [,inline
[,dest]]])
- (int) Echoes s1 to the screen or dest with
attributes attrs,
interpreting inline attribute
codes if the flag inline is 1 or "on".
See: "echo()".
- send(s1[, world[, flags]])
- (int) Sends string s1 to world .
See send().
- prompt(s1)
- (int) Sets the prompt of the
current socket
to s1.
See /prompt.
- fwrite(s1,s2)
- Writes string s2 to the end of file s1.
fwrite() is good
for writing a single line, but when writing multiple lines it is
more efficient to use
tfopen(), a series
of tfwrite(),
and a tfclose().
Display attributes in
s2 are not written.
- tfopen(s1, s2)
- tfopen()
- (int) Open a tfio stream
using file s1 and mode s2.
See tfio.
- tfclose(i)
- (int) Close the stream
indicated by handle i.
See tfio.
- tfread(i, v)
- tfread(v)
- (int) Read into variable v from the
stream indicated by
handle i.
See tfio.
- tfwrite(i, s)
- tfwrite(s)
- (int) Write s to the
stream indicated by
handle i.
See tfio.
- tfflush(i)
- Flushes the stream
indicated by handle i.
- tfflush(i, f)
- Disables (if f is 0 or "off") or
enables (if f is 1 or "on") automatic flushing for the
stream indicated by handle
i.
See tfio.
- read()
- Obsolete. Use
tfread() instead.
String functions
String positions are always counted from 0. Therefore the first character
of a string s is
substr(s, 0, 1)
,
and the last character is
substr(s,
strlen(s)-1)
.
Range checking is done on string positions. Any position given outside the
allowed range will be silently forced to the closest value that is in the
range.
- ascii(s)
- (int) Integer code of the first character of s,
The character does not have to be ASCII, but may be any character
allowed by your locale.
- char(i)
- (str) character with integer code i. If
i is outside the range allowed by your
locale,
it will be silently forced into the allowed range.
- tolower(s)
- tolower(s, i)
- (str) Convert the first i (default all) characters
in s to lower case.
- toupper(s)
- toupper(s, i)
- (str) Convert the first i (default all) characters
in s to upper case.
- pad([s, i]...)
- (str) There may be any number of (s, i) pairs.
For each pair, s is padded with spaces to a length equal to
the absolute value of i.
If i is positive, s is right-justified (left-padded);
If i is negative, s is left-justified (right-padded).
The result is the concatenation of all the padded strings.
- regmatch(s1, s2)
- (int) If string s2 matches
regexp s1,
regmatch() returns a positive integer indicating the number
of captured substrings (including
%P0).
regmatch() returns 0 if string s2 does not match
regexp s1.
After a successful match, captured substrings can later be
extracted using the Pn
variables or
%Pn
substitutions.
(See also: regexp)
- replace(s1, s2, s3)
- (int) Returns s3 with every occurance of s1
replaced with s2.
See: "/replace".
- strcat(s...)
- (str) Returns the concatenation of all string arguments.
- strchr(s1, s2)
- strchr(s1, s2, i)
- (int) Searches for any character of s2 in
s1 starting at position i (default 0), and
returns the position if found, or -1 if not found.
If i is negative, it is counted as an absolute value
from the end of s.
- strcmp(s1, s2)
- (int) Returns an integer less than, equal to, or greater than 0
if s1 is lexicographically less than, equal to, or greater
than s2, respectively.
- strcmpattr(s1, s2)
- (int) Like
strcmp(),
except that in order for the strings to
be considered equal, both their text and their attributes must
be equal. In other words,
strcmp(encode_attr(s1), encode_attr(s2))
The ordering of attributes is not documented, and may change
between versions of tf.
- strlen(s)
- (int) Length of string s.
- strncmp(s1, s2, i)
- (int) Like
strcmp(), but
compares only the first i characters of s1 and
s2.
- strrchr(s1, s2)
- strrchr(s1, s2, i)
- (int) Searches backward in s1 starting at position
i (default: end of s1) for any character of s2,
and returns the position if found, or -1 if not found.
If i is negative, it is counted as an absolute value
from the end of s.
- strrep(s, i)
- (str) Returns a string containing i repetitions of
s.
- strstr(s1, s2)
- strstr(s1, s2, i)
- (int) Searches for s2 in
s1 starting at position i (default 0), and
returns the position if found, or -1 if not found.
- substr(s, i1)
- substr(s, i1, i2)
- (str) Substring of s, starting at position i1,
with length i2. If i2 is omitted, it defaults to
the remaining length of s. If i1 or i2 is
negative, they are counted as absolute values from the end of
s.
- strip_attr(s)
- (str) Returns s with all display
attributes removed.
- decode_attr(s1 [, s2 [, f]])
- (str) Returns s1 with
"@{attr}" codes interpeted as display
attributes,
as in /echo -p.
If present, s2 is a string of
attributes
that will be applied to the entire string
(as in /echo -as2).
If f is present and equal to 0 or "off", then
"@{attr}" codes are not interpeted; this is useful
for applying s2 attributes with no other effects.
- encode_attr(s)
- (str) Returns s with
display attributes
encoded in "@{attr}" form.
- decode_ansi(s)
- (str) Returns s with attribute control codes interpeted as
display attributes, and, if
%expand_tabs
is on, tabs are expanded to spaces according to
%tabsize.
Any attributes originally on s are not copied
to the result.
The attribute control codes recognzied include ANSI codes,
ISO 6429 16-color extension codes,
and xterm 256-color extension codes.
- encode_ansi(s)
- (str) Returns s with
display attributes
encoded in terminal control code form.
The control codes generated include ANSI codes,
ISO 6429 16-color extension codes,
and xterm 256-color extension codes.
- textencode(s)
- (str) Returns s converted to a form containing only
letters, digits, and underscores.
See textencode().
- textdecode(s)
- (str) Converts s, the result of
textencode(),
back to its original form.
See textencode().
Keyboard buffer functions
- kbdel(i)
- (int) Delete from the cursor to position i in the input
buffer. Returns the new position.
- kbgoto(i)
- (int) Move the cursor to position i in the input
buffer. Returns the new position (which may be different than
i if i would put the cursor outside the buffer).
- kbhead()
- (str) Return the current input up to the cursor.
- kblen()
- (int) Length of current input line.
- kbmatch()
- kbmatch(i)
- (int) Finds one of "()[]{}" under or to the right of the
position i (default: cursor position), and returns the
position of its match, or -1 if not found.
(See also: keybindings)
- kbpoint()
- (int) Return the current position of the cursor in input.
- kbtail()
- (str) Return the current input after the cursor.
- kbwordleft()
- kbwordleft(i)
- (int) Position of the beginning of the word left of i
within the input buffer. i defaults to the current cursor
position. (See also:
%wordpunct)
- kbwordright()
- kbwordright(i)
- (int) Position just past the end of the word right of i
within the input buffer. i defaults to the current cursor
position. (See also:
%wordpunct)
- keycode(s)
- (str) String generated by typing the key labeled s,
as defined in the termcap entry corresponding to the value of
%TERM.
See also:
keybindings.
Information functions
- time()
- (atime) Absolute system time in seconds, to the nearest
microsecond (typically measured since 1970-01-01 00:00:00 UTC).
See also:
cputime(),
mktime(),
idle(),
sidle(),
/time,
ftime().
- cputime()
- (real) CPU time used by tf, or -1 if not available.
The resolution depends on the operating system. See also:
/runtime,
time(),
/time.
- columns()
- (int) Number of columns on the screen.
See also: hooks (RESIZE),
lines(),
winlines(),
%COLUMNS.
- lines()
- (int) Number of lines on the screen.
To get the number of lines in the output window, use
winlines().
See also: hooks (RESIZE),
winlines(),
columns(),
%LINES.
- winlines()
- (int) Number of lines in the output window.
See also: hooks (RESIZE),
lines(),
columns().
- morepaused([s1])
- (int) Returns 1 if output of world s1 is paused
(by more or
(dokey pause).
If omitted, s1 defaults to the current world.
See also: moresize().
- morescroll(i)
- (int) If i is positive, this function scrolls
i lines of text from the window buffer into the window
from the bottom.
If i is negative, it reverse-scrolls
abs(i) lines of text from the window buffer into the
window from the top.
If abs(i) is larger than one screenful, the actual
scrolling is skipped, and only the end result is displayed.
Returns the number of lines actually scrolled.
- moresize([s1 [, s2]])
- (int) Returns a line count for world s2,
or the current world if s2 is omitted.
If s1 is omitted or blank,
the count is the number of lines below the
bottom of the output window
(i.e., queued at a more prompt).
If s1 contains "n", it counts only new lines that have never
been seen, not lines that had been displayed and then reverse
scrolled off.
If s1 contains "l", it counts only lines that match the
current /limit.
"n" and "l" may be combined.
If all lines that would be counted have the
"A" (noactivity) attribute,
the result will normally be 0. But if s1 contains "a",
lines with "A" attributes
are counted anyway.
In all cases, the count is the number of physical (after wrapping)
lines.
Note that a return value of 0 does not necessarily indicate that
output is not paused; it may be the case that output is paused and
there are just 0 lines below the bottom of the window, or that
all the lines have the "A"
attribute.
Use morepaused(),
to tell if output is paused.
See also:
morepaused(),
nactive().
- nactive()
- (int) Number of active worlds (ie, worlds with unseen text).
- nactive(s)
- (int) Number of unseen lines in world s.
Note: when
nactive()
(with or without arguments)
is called from a trigger, the
line that caused the trigger
is not counted by
nactive()
because it has not yet been fully processed (for example, a lower
priority
trigger might
gag the line).
nactive(s)
is equivalent to
moresize("n",
s)
.
See also: moresize().
- world_info(s1, s2)
- (str) Return the value of field s2 of world s1,
- world_info(s2)
- (str) Return the value of field s2 of the
current world.
- world_info()
- (str) Return the name of the
current world.
See worlds.
- fg_world()
- (str) Returns the name of the
world associated with the
foreground
socket.
- is_connected()
- (int) Returns 1 if the
current
socket is connected,
0 otherwise.
- is_connected(s)
- (int) Returns 1 if
world s is connected,
0 otherwise.
See also is_open().
- is_open()
- (int) Returns 1 if the
current
socket is open,
0 otherwise.
- is_open(s)
- (int) Returns 1 if
world s is open,
0 otherwise.
- idle()
- (dtime) Number of seconds (to the nearest microsecond)
since the last keypress.
- idle(s)
- (dtime) Number of seconds (to the nearest microsecond)
since the last text was received on the
socket connected to
world
s, or -1 on error.
- sidle()
- sidle(s)
- (dtime) Number of seconds (to the nearest microsecond)
since the last text was sent on the
current socket or the
socket connected to
world
s, or -1 on error.
- nlog()
- (int) Number of open log files.
- nmail()
- (int) Number of monitored mail files containing unread mail.
See mail.
- nread()
- (int) Returns a positive number if a
read
from the keyboard is in progress, 0 otherwise.
- getpid()
- (int) The operating system's process id for tf.
- gethostname()
- (str) Returns the host's name, or an empty string if the
host name is not available.
- systype()
- (str) System type: "unix" (includes MacOS X),
"os/2", or "cygwin32".
Other functions
- addworld(name, type, host, port, char, pass, file, use_proxy)
- Defines or redefines a
world.
See "addworld()".
- eval(s1 [, s2])
- (str) Evaluates s1 as a
macro body.
See: /eval.
- filename(s)
- (str) Performs filename expansion on s as described
under "filenames".
- ftime(s,n)
- ftime(s)
- ftime()
- (str) Formats a system time n (obtained from
time()) according to
format s, or prints an error message and returns an empty
string if n is out of range.
See: ftime().
- mktime(year [, month [, day [,
hour [, minute [, second [,
microsecond]]]]]])
- (atime) Returns the system time in seconds of the date in the
local time zone
represented by the arguments. Returns -1 if the arguments do not
represent a valid date.
Omitted month or day arguments default to 1;
other omitted arguments default to 0.
See:
%TZ,
ftime(),
/time,
- getopts(s1, s2)
- (int) Parse macro options according to format s1.
See "getopts()".
- test(s)
- Interprets the contents of the string s as an
expression and returns the result.
See also:
/test,
/expr.
- status_fields([i])
- Returns the list of fields of status row i,
or row 0 if i is omitted.
status area.
- substitute(s [,attrs [,inline]])
- (int) Replaces trigger text.
See "/substitute".
Examples:
Capitalize first letter of string s:
strcat(toupper(substr(s, 0, 1)), substr(s, 1))
Extract the number from a string dbref of the form "(#123PML)":
0 + substr(dbref, strchr(dbref, "#") + 1)
See: expressions