Initial import of the ircii-pana-1.1-final source tree.
git-svn-id: svn://svn.code.sf.net/p/bitchx/code/tags/ircii-pana-1.1-final@1 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
126
bitchx-docs/7_Docs/Special_Vars
Normal file
126
bitchx-docs/7_Docs/Special_Vars
Normal file
@@ -0,0 +1,126 @@
|
||||
Special Variables and Expandos
|
||||
|
||||
In addition to normal variables created with ASSIGN, and the builtin SET
|
||||
variables, BitchX also supports a number of reserved, dynamic variables,
|
||||
sometimes referred to as expandos. They are special in that the client is
|
||||
constantly updating their values automatically. There are also numerous
|
||||
variable modifiers available.
|
||||
|
||||
Modifier Description
|
||||
$variable A normal variable, expanding to the first match of:
|
||||
| 1) a variable created with ASSIGN or @
|
||||
| 2) an internal SET variable
|
||||
| 3) an environment variable
|
||||
| 4) an empty string
|
||||
$[num]variable Expands to the variables value, with 'num' width. If
|
||||
| the number is negative, the value is right-aligned.
|
||||
| The value is truncated or padded to meet the width.
|
||||
$#variable Expands to the number of words in $variable. If $variable
|
||||
| is omitted, it assumes $*
|
||||
$@variable Expands to the number of characters in $variable. if
|
||||
| $variable is omitted, it assumes $*
|
||||
$($subvariable) This is somewhat similar to a pointer, in that the
|
||||
| value of $subvar is taken as the name of the
|
||||
| variable to expand to. Nesting is allowed.
|
||||
${expression} Expands to the return value of the expression. In
|
||||
| addition, ${} permits the value to be embedded in
|
||||
| another string unambiguously.
|
||||
$!history! Expands to a matching entry in the client's command
|
||||
| history, wildcards allowed.
|
||||
$"some text" Uses 'text' as an input prompt, and returns whatever
|
||||
| is typed next. This usage is deprecated, use the
|
||||
| INPUT command instead.
|
||||
|
||||
Whenever an alias is called, these expandos are set to the arguments passed
|
||||
to it. If none of these expandos are used in the alias, or the $() form
|
||||
shown above, any arguments passed will automatically be appended to the last
|
||||
command in the alias.
|
||||
|
||||
Expando Description
|
||||
$* expands to all arguments passed to an alias
|
||||
$n expands to argument 'n' passed to an alias (counting from zero)
|
||||
$n-m expands to arguments 'n' through 'm' passed to an alias
|
||||
$n- expands to all arguments from 'n' on passed to an alias
|
||||
$-m expands to all arguments up to 'm' passed to an alias
|
||||
$~ expands to the last argument passed to an alias
|
||||
|
||||
These variables are set and updated dynamically by the client. The case of
|
||||
$A .. $Z is important. Also note that $A .. $Z can be overridden by ASSIGN,
|
||||
so it is usually good practice to make variable names 2 or more characters
|
||||
long.
|
||||
|
||||
Variable Description
|
||||
$, last person who sent you a MSG
|
||||
$. last person to whom you sent a MSG
|
||||
$: last person to join a channel you are on
|
||||
$; last person to send a public message to a channel you are on
|
||||
$` your current uptime
|
||||
$A text of your AWAY message, if any
|
||||
$B body of last MSG you sent
|
||||
$C current channel
|
||||
$D last person that NOTIFY detected a signon for
|
||||
$E idle time
|
||||
$F time client was started, $time() format
|
||||
$G the current value of set SHOW_NUMERICS_STR
|
||||
$H current server numeric being processed
|
||||
$I channel you were last INVITEd to
|
||||
$J client version text string
|
||||
$K current value of CMDCHARS
|
||||
$L current contents of the input line
|
||||
$M modes of current channel, if any
|
||||
$N current nickname
|
||||
$O value of STATUS_OPER if you are an irc operator
|
||||
$P if you are a channel operator in $C, expands to a '@'
|
||||
$Q nickname of whomever you are QUERYing
|
||||
$R version of current server
|
||||
$S current server name
|
||||
$T target of current input (channel or QUERY nickname)
|
||||
$U value of cutbuffer
|
||||
$V client release date (numeric version string)
|
||||
$W current working directory
|
||||
$X your /userhost $N address (user@host)
|
||||
$Y value of REALNAME
|
||||
$Z time of day (hh:mm)
|
||||
$a the full version string
|
||||
$b a smaller version string
|
||||
$h current running hook name
|
||||
$n current network name if available ie. efnet, dalnet
|
||||
$s the server port your on.
|
||||
$t the currently running alias name
|
||||
$u your away time
|
||||
$v is tcl supported or not
|
||||
$$ a literal '$'
|
||||
|
||||
For example, assume you have the following alias:
|
||||
|
||||
alias blah { msg $D Hi there! }
|
||||
|
||||
If /blah is passed any arguments, they will automatically be appended to the
|
||||
MSG text. For example:
|
||||
|
||||
/blah oops /* command as entered */
|
||||
"Hi there! oops" /* text sent to $D */
|
||||
|
||||
One of the more confusing expandos to look at is the $() form. It evaluates
|
||||
the variable or function inside the parenthesis, and whatever is returned is
|
||||
used as the name of the variable to expand. For example:
|
||||
|
||||
assign foo blah /* inside variable */
|
||||
assign blah 10 /* real variable */
|
||||
/eval echo $($foo) /* $foo expands to "blah" */
|
||||
"10" /* $blah expands to "10" */
|
||||
|
||||
Another useful form is ${}. In general, variables can be embedded inside
|
||||
strings without problems, assuming the surrounding text could not be
|
||||
misinterpreted as part of the variable name. This form guarantees that
|
||||
surrounding text will not affect the expression's return value.
|
||||
|
||||
/eval echo foo$Nfoo /* breaks, looks for $nfoo */
|
||||
/eval echo foo${N}foo /* ${N} returns current nickname */
|
||||
fooYourNickfoo /* returned by above command */
|
||||
/eval echo ${[foo]}bar /* expression parser may be used */
|
||||
foobar /* returned by above command */
|
||||
|
||||
See Also:
|
||||
Expressions(7); Programming(7); assign(5); input(5)
|
||||
|
||||
Reference in New Issue
Block a user