Your IP : 216.73.216.48
#$EPIC: aliasctl,v 1.6 2003/12/05 22:05:03 brian Exp $
Synopsis:
$aliasctl(<domain> <operation> <operand> [<rval>])
$aliasctl(<domain> GETPACKAGE <lval>)
$aliasctl(<domain> GET <lval>)
$aliasctl(<domain> SETPACKAGE <lval> <package-name>)
$aliasctl(<domain> SET <lval> <rval>)
$aliasctl(<domain> MATCH <word>)
$aliasctl(<domain> PMATCH <pattern>)
$aliasctl(<domain> EXISTS <lval>)
Technical:
* This function is a low-level interface to the alias/assign symbol tables.
--- General Syntax errors:
* If the <domain>, <operation>, or <operand> argument is omitted, the
empty string is returned.
* If the <package-name> argument is omitted for the SETPACKAGE operation,
the empty string is returned.
* If the <rval> argument is omitted for the SET operation, the empty
string is returned.
--- About Domains:
* The <domain> argument selects the type of alias you wish to operate
on, and must be one of the following three strings:
"ASSIGN" for /assign (``global variable'') aliases
"ALIAS" for /alias (``command/function'') aliases
"LOCAL" for /local (``local variable'') aliases.
* If an invalid <domain> is chosen, the empty string is returned.
--- General definitions
* <lval> is the "name" of an alias, such as "foo" in:
/alias foo echo this is a test!
* <rval> is the "value" of an alias, such as "echo this is a test!" in:
/alias foo echo this is a test!
* <package-name> is the "package" that was in force when the alias
was loaded; This was set by the /package command at load-time.
--- About Operations:
* The <operation> argument specifies the action you want to take and
must be one of the following 7 strings:
"GETPACKAGE" to get an lval's /package value.
"GET" to get an lval's rval.
"SETPACKAGE" to set an lval's /package value.
"SET" to set an lval's rval.
"MATCH" to get the names of all aliases that
begin with <word>
"PMATCH" to get the names of all aliases that
are matched by <pattern>.
"EXISTS" to determine if an alias exists or not.
* If an invalid <operation> is chosen, the empty string is returned.
--- Special explanations:
* The "GET" operation is the only way to get the "body" of an alias.
For assigns, it is identical to $::<lval>.
* The "SET" operation is essentially the same as:
/alias <lval> <rval>
/assign <lval> <rval>
* The "MATCH" operation looks for aliases that begin with the given
string but do NOT "find" any aliases that include any dots after
the string that you specify. This is roughly equivalent to how
the /foreach command works. If you need pattern matching, then
use the PMATCH operation instead.
* The "PMATCH" operation returns a word list of all the aliases that are
matched by the pattern. Obviously the "*" pattern returns the name
of every alias.
* The "EXISTS" operation returns 1 if the alias exists, 0 if it does not.
Practical:
Getting and setting assigns, and setting aliases is provided only for
completeness. You really shouldn't use $aliasctl() to obfuscate those
operations.
This is the only way to get the "body" of an alias. This is the only way
to get a list of aliases/assigns that begin with a given string. This is
the only way to get a list of aliases/assigns that "match" a given pattern.
This is the CHEAPEST way to test to see if an alias exists before you try
to run it.
You can tell whether a built in command has been overridden by an alias
by doing something like:
$aliasctl(alias exists join)
which would return 1 if a "join" alias exists, and 0 if it does not.
Examples:
$aliasctl(alias get join) returns current value of alias "join"
$aliasctl(alias set join //channel) just like "/alias join //channel"
$aliasctl(assign match foo) returns names of all vars that start
with "foo" but do not contain any
more dots after that, such as
"foobar" but not "foo.bar" nor
"foobar.baz"
$aliasctl(alias match foo.) returns names of all aliases that
start with "foo." but do not contain
any more dots after that, such as
"foo.bar" but not "foo.bar.baz"
$aliasctl(alias pmatch foo*) returns all aliases that match the
pattern 'foo*' such as 'foobar',
'foo.bar', 'foobar.baz' and
'foo.bar.baz'
Notes:
Currently, the "MATCH" and "PMATCH" operations do not work with the
"LOCAL" domain. This may change in the future.
See Also:
assign(5); alias(5); edit(8)