Site Tools


fe
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


fe [2007/07/10 21:12] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +======Synopsis:======
 +__fe__ (<list>) <variable> [<variable> ...] { <actions> } \\
 +__fe__ <source_variable> <variable> [<variable> ...] { <actions> }
 +
 +======Description:======
 +Form 1:
 +
 +__FE__ is one of several loop types available in ircII-EPIC.  This loop
 +takes a list of items, and for each one, it performs the specified
 +action.
 +
 +It may act on more than one item at a time.  The list may be a plain
 +text list, a variable, a function, or any combination.  As with aliases
 +and other control structures, the braces surrounding the action may
 +appear anywhere.  List items are whitespace-delimited.  Extended words
 +(those with spaces in them) are honored when they are surrounded in
 +double quotes (").
 +
 +For instance, __FE__ might be used to loop through a list of nicknames
 +that the user wishes to invite to a channel (or kick from it!).
 +
 +Any looping mechanism can run through a list one by one.  The real
 +power of __FE__ is its ability to act on multiple list items at once.
 +One could perform an action on 3 at a time, for instance, such as
 +setting a +o channel mode on other users.  Other loops, such as [[FOR]],
 +can do this as well, but __FE__ offers a more elegant solution.
 +
 +Form 2:
 +
 +The second form of [[fe]] allows you to rewrite a control variable that 
 +contains a word list.  The initial value of the control variable is used 
 +as the word list (as in the first form) and after each iteration of the 
 +loop, all of the loop variables are appended together to build up a new 
 +value for the variable.  The control variable is assigned a new value after
 +the conclusion of the final iteration of the loop.
 +
 +This form might have been named __MAP__ after perls map function but the
 +[[MAP command|MAP]] is already used for something else.
 +It is functionally equivalent to this snippet of code:
 +
 +      fe ($targetvar) foo {
 +         ...
 +         push tempvar $foo
 +      }
 +      @ targetvar = tempvar
 +      @ tempvar = []
 +
 +[[BREAK]]ing out of a loop will cause the original list to be truncated
 +_after_ the current set of variables have been written. That is, the
 +break occurs after the push in the above code.
 +
 +======Examples:======
 +A simple mode +o script to cluster mode changes 3 at a time:
 +      fe ( $friends ) xx yy zz {
 +         if ( zz ) {
 +            mode #blah +ooo $xx $yy $zz
 +         } {
 +            if ( yy ) {
 +               mode #blah +oo $xx $yy
 +            } {
 +               mode +o $xx
 +            }
 +         }
 +      }
 +
 +A script to check for upper-case letters in a line of input:
 +      @ caps = 0
 +      fec ( $* ) xx {
 +         if ( ascii($xx) >= 65 || ascii($xx) <= 90 ) {
 +            @ caps++
 +         }
 +      }
 +      echo *** Found $caps upper-case letters
 +
 +A script to square all numbers (words) in the $list variable:
 +      fe list foo {
 +         @ foo = foo * foo
 +      }
 +
 +======Aliases:======
 +[[FEC]] works the same as __FE__, except it loops through each character in the
 +list, not each word.  Whitespace is only valid if it is between two
 +other non-whitespace characters.  Whitespace that follows the opening
 +parenthesis, and that leads up to the closing one, is ignored.
 +
 +======Other Notes:======
 +The loop doesn't necessarily have to have an action inside the curly braces.
 +It doesn't make much sense to omit it, though. Since 01/22/97, FE and FEC use
 +[[local]] variables instead of global.
 +
  
fe.txt · Last modified: 2007/07/10 21:12 by 127.0.0.1