/usr/share/ircII/script/functions is in ircii 20060725-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | # Some misc functions.. for 2.2 and beyond.
# by: Ian Frechette (frechett@spot.colorado.edu)
# Wed Aug 18 00:26:53 MDT 1993
@ RCS.functions = [$$Header: /home/cvs/ircii/script/functions,v 1.3 2001/08/12 15:44:17 mrg Exp $$]
# ircII scripting note. @ var = <expression> is used a lot. One case
# where it is not feasible to use the @ var = othervar or @ var = funct()
# format is when the $(stuff) construct is needed. In that case you
# must surround it with []. e.g. @ blah = [$($0)] will assign
# to 'blah' the contents of the variable named in arg 0.
#
# reverse a string fed to it. The first argument is the width of the
# field in which to right justify the reversed text
# $reverse(65 one two three) returns..
# eerht owt eno
# if 0 is given as the width it's reversed and output left justified
alias reverse {
^assign -rev.result
@ rev.ind = 0
@ rev.str = [$1-]
while (mid($rev.ind 1 $rev.str)!=[])
{
@ rev.result = mid($rev.ind 1 $rev.str) ## rev.result
@ rev.ind = rev.ind + 1
}
# This right justifies to a field with of $0.
# strip out the format() function if you don't want it formatted.
@ function_return = format($0 $rev.result)
}
# These have been updated to handle multiple words.
# format and lformat differ from $[-num]var and $[num]var in that
# They don't chop off the string if it is too long.
alias format {
@ IRCII.word = [$1-]
if (@IRCII.word < [$0])
{ @ function_return = [$([-$0]IRCII.word)] }
{ @ function_return = IRCII.word }
}
alias lformat {
@ IRCII.word = [$1-]
if (@IRCII.word < [$0])
{ @ function_return = [$([$0]IRCII.word)] }
{ @ function_return = IRCII.word }
}
# Center text within a given width. center(width text)
# "$center(10 one)" returns " one"
# this might not make sense at first, but it saves alot of cursor travel
# not writing all the spaces on the right side.
alias center {
@ IRCII.word = [$1-]
@ IRCII.wordl = @IRCII.word
@ IRCII.width = [$0]
if (IRCII.wordl > IRCII.width)
{ @ function_return = ircII.word }
{ @ function_return = [$([${(IRCII.width - ircII.wordl)/2}])] ## IRCII.word }
}
# This is the huge beastly CPU expensive search and replace funnction
# written entirely in ircII script language.
# $sandr(search pat/replace pat/words)
# the search and replace patterns can contain spaces or any other chars
# with the exeption of '/'.
alias sandr {
@ sr.src = left($index(/ $*) $*)
@ sr.rep = mid(${index(/ $*) +1} ${rindex(/ $*) - index(/ $*) +1} $*)
@ sr.word = mid(${rindex(/ $*) + 1} 512 $*)
@ sr.srcl = @sr.src
@ sr.wordl = @sr.word
@ sr.cnt1 = 0
@ sr.cnt2 = 0
@ sr.lmark = 0
@ sr.gotit = 0
^assign -sr.fstring
while (sr.cnt1 < sr.wordl)
{
@ sr.scnt1 = sr.cnt1
while ((mid($sr.cnt1 1 $sr.word) == mid($sr.cnt2 1 $sr.src)) && (sr.cnt2 < sr.srcl))
{
if (sr.cnt2 == sr.srcl - 1)
{
@ sr.gotit = 1
}
@ sr.cnt1 = sr.cnt1 + 1
@ sr.cnt2 = sr.cnt2 + 1
}
@ sr.cnt2 = 0
if (sr.gotit)
{
@ sr.fstring = sr.fstring ## mid($sr.lmark ${sr.scnt1 - sr.lmark} $sr.word) ## sr.rep
@ sr.gotit = 0
@ sr.lmark = sr.cnt1
}
{
@ sr.cnt1 = sr.cnt1 +1
}
}
@ sr.fstring = sr.fstring ## mid($sr.lmark 512 $sr.word)
@ function_return = sr.fstring
}
# The perfect complement to the $word() function.
# $notword(index words) returns words minus the indexed word.
# the special handling of nw.sep is to deal with the cases when
# the index points to the first or last word.
alias notword {
if ([$0] > 0)
{
if (([$0] > 1) && ([$0] < rmatch($~ $1-)))
{ @ nw.sep = [ ] }
{ @ nw.sep = [] }
@ function_return = [$(1-${[$0]-1})] ## nw.sep ## [$(${[$0]+1}-)]
}
{
@ function_return = [$1-]
}
^assign -nw.sep
}
# If you want to look an array.. Type /show <arrayname>
# Lists keys and contents
^alias show {
if ( [$($0)] )
{
echo $0 $($0)
}
foreach $0 ii
{
show $0.$ii
}
^assign -ii
}
# push an item onto the head of a list
# this only takes the name of the list instead of the variable itself.
# examples.
# /push list Item
# or if (push(list Item)) { echo push sucessful } { echo push failed }
# echo $list returns 'Item'
alias push {
if (![$1])
{ @function_return = 0 }
{ eval @ $0 = [$1- $($0)];@function_return = 1}
}
# pop an item off a list. Specified with $pop(listname)
# note there is no $ in front of listname.
# examples.
# /eval echo $pop(list) returns 'Item' and the list is shortened
# push List2 $pop(List1) moves first item from List1 to List2
alias pop {
@function_return = word(0 $($0))
eval @ $0 = notword(1 $($0))
}
# pluck a word from a list.
# eg. $blah == "one two three four five"
# $pluck(blah three) returns "one two four five"
alias pluck {
@ function_return = notword($match($1 $($0)) $($0))
}
alias remove {
@ rem.tmp = [$($0)]
while (rmatch($1 ${rem.tmp = pluck(rem.tmp $1)})) {#}
@ function_return = rem.tmp
}
# This alias sorts flat lists case insenstive
# IT can be easily changed to sort case sensitive by removing the
# $toupper() call.
# operation.. $sort(list or words here) will return a string with
# the list of words sorted in ascending order.
# to sort in reverse order
alias sort {
@ sort.tmp = [$*]
while (sort.word = pop(sort.tmp)) {
eval @ sort.str.$encode($toupper($sort.word)) = sort.word
}
@ sort.sep = []
foreach sort.str ii {
# sort ascending
@ sort.tmp = sort.tmp ## sort.sep ## sort.str[$ii]
# sort decending
# push sort.tmp sort.str[$ii]
^assign -sort.str[$ii]
@ sort.sep = [ ]
}
@ function_return = sort.tmp
^assign -sort.sep
^assign -sort.tmp
}
|