======Functions====== EPIC functions are very similar to those of common procedural languages - they have arguments and they return a value. There are many different kinds of functions - ones that manipulate strings, ones that retrieve information from the client, ones that perform math operations et cetera. This page groups all functions present in the EPIC client based on their domain. For a more general guide to programming EPIC, see the [[programming|programming in EPIC]] guide. =====Extracting substrings from strings===== ^function^description^ |[[after]] |get the part after a certain character | |[[before]] |get the part before a certain characters | |[[chop]] |remove final character(s)| |[[left]] |get the first few characters| |[[leftpc]] |get the first few characters, but only count printable characters | |[[mid]] |get characters from the middle | |[[rest]] |remove leading character(s)| |[[right]] |get the final few characters| =====String operations===== ^function^description^ |[[ascii]] |convert a string into a word list of ascii numbers| |[[b64decode]] |recover string encoded in base64| |[[b64encode]] |convert string into base64| |[[center]] |center a string in given width | |[[chr]] |convert a word list of ascii numbers into a string| |[[count]] |count how many times a substring appears in a string | |[[cparse]] |add colors without using %%^%%C | |[[decode]] |recover string encoded in [[encode]]| |[[deuhc]] |remove leading '*!' or '*!*@' from a string | |[[encode]] |make a string suitable for being used as a variable name | |[[getopt]] |parse a command line for an alias requiring command-line switches | |[[index]] |locate a character in a string | |[[insert]] |inject a substring into a string | |[[isalpha]] |is the character a letter? | |[[isdigit]] |is the character a digit?| |[[isnumber]] |is the string a number? | |[[msar]] |replace multiple patterns in a string | |[[nohighlight]] |strip control-codes from a string | |[[numlines]] |calculate how many lines a string would occupy on the screen | |[[pad]] |fill a string with a character until it reaches certain length | |[[pass]] |leave only specified characters in a string | |[[printlen]] |length of a string without formatting characters | |[[repeat_function|repeat]] |repeat a string a number of times | |[[reverse]] |print a string backwards | |[[rindex]] |locate a character in a string starting from the right | |[[rsubstr]] |search for a substring beginning from the end of a string | |[[sar]] |replace a pattern in a string | |[[shiftbrace]] |remove the braced expression from the beginning of a string | |[[split]] |split a string into multiple words | |[[stripansicodes]] |strip ANSI codes (DUH!) | |[[stripansi]] |convert non-printable characters to printable ones | |[[stripcrap]] |remove various types of unwanted characters | |[[stripc]] |strip %%^%%C's from a string | |[[strip]] |strip given characters from a string | |[[strlen]] |length of a string | |[[strtol]] |convert a number to given base| |[[substr]] |search for a substring in a string | |[[tolower]] |convert a string to lowercase | |[[toupper]] |convert a string to uppercase | |[[tr]] |transpose characters | |[[uhc]] |finish an incomplete //nick!user@host// pattern | |[[urldecode]] |de-mangle $[[urlencode]]()d text | |[[urlencode]] |mangle a string to the form usual of URLs| =====Word operations===== ^function^description^ |[[afterw]] |words after a matching pattern | |[[beforew]] |words before a matching pattern | |[[chngw]] |change a word| |[[common]] |logical AND on words in two lists | |[[diff]] |logical XOR on words in two lists | |[[findw]] |find word's index in a word list | |[[fromw]] |rest of a word list beginning with some word| |[[indextoword]] |word basing on string index | |[[insertw]] |insert a word at given index | |[[leftw]] |amount of words starting at the beginning | |[[maxlen]] |length of a longest word in a word list | |[[midw]] |extract a range of words in a word list | |[[notw]] |exclude a word index from a word list | |[[numsort]] |sort a word list using a numerical compare function | |[[numwords]] |show an amount of words in a word list | |[[pop_function|pop]] |cut the last word off of a variable and return it | |[[prefix]] |common initial substring of given words | |[[push_function|push]] |append a word to a variable | |[[remws]] |remove words from a word list | |[[remw]] |remove a word from a word list | |[[restw]] |print the rest of a word list beginning at a word index | |[[revw]] |word list in reverse order | |[[rightw]] |amount of last words in a word list | |[[shift function|shift]] |trim the last word of a variable and return it | |[[sort]] |sort a word list | |[[splice]] |return a range of words from a word list| |[[tow]] |return words up to given word | |[[uniq]] |remove duplicates from a word list | |[[unshift_function|unshift]] |prepend a word to a variable | |[[unsplit]] |undo a $[[split]]() | |[[wordtoindex]] |return a word position of given index | |[[word]] |return a word from a word list based on its index| =====Math functions===== ^function^description^ |[[abs]] |absolute value of a number | |[[acosh]] |hyperbolic cosine of a number | |[[acos]] |arc cosine of a number | |[[asinh]] |inverse hyperbolic sine of a number | |[[asin]] |principal value in radians of the arc sine of a number | |[[atanh]] |inverse hyperbolic tangent of a number | |[[atan]] |principal value in radians of the arc tangent of a number | |[[ceil]] |smallest integer that is greater than or equal to a number | |[[cosh]] |hyperbolic cosine of a number | |[[cos]] |cosine of the angle of a number | |[[exp]] |value of //e// raised to a value of a number | |[[floor]] |largest integer that is less than or equal to a number | |[[jn]] |bessel function of the first kind | |[[log10]] |base-10 logarithm of a number | |[[log_function|log]] |natural logarithm of a number | |[[sinh]] |hyperbolic sine of a number | |[[sin]] |sine of the angle of given number's radians | |[[tanh]] |hyperbolic tangent of a number | |[[tan]] |tangent of the angle of given number's radians | |[[tobase]] |convert a number to given base | |[[yn]] |linearly independant bessel function of the second kind| =====Time info===== ^function^description^ |[[stime]] |human readable form of unix time | |[[strftime]] |format date and time | |[[tdiff]] |how much time has elapsed? | |[[tdiff2]] |shorter version of the above | |[[time_function|time]] |unix timestamp | |[[utime_function|utime]] |unix timestamp with microseconds| =====Pattern matching===== ^function^description^ |[[copattern]] |words in a var2 corresponding to matched words in var1 | |[[filter]] |remove words matching a pattern | |[[globi]] |case-insensitive filename globbing| |[[glob]] |filename globbing | |[[mask]] |bantype pattern for a mask | |[[match]] |match words with multiple patterns | |[[pattern]] |return words matched by a pattern | |[[regex]] |description of regexp functions | |[[rfilter]] |return patterns not matching a word | |[[rmatch]] |match a word against many patterns | |[[rpattern]] |patterns that match a word| =====Server operations===== ^function^description^ |[[cipher]] |retrieve the ssl cipher name from a SSL-enabled server| |[[isaway]] |check whether you're away| |[[isconnected]] |check whether a server is fully connected | |[[isencrypted]] |check whether a server is SSL-enabled| |[[myservers]] |list open server connections | |[[notify_function|notify]] |toggle the notify feature for a server | |[[serverctl]] |generic interface to serverlist | |[[serverwin]] |current window for a server | |[[servports]] |local and remote ports for a server connection | |[[usermode]] |your umode on a server | |[[version_function|version]] |server's version class| =====Channel info===== ^function^description^ |[[chanmode]] |channel mode for given channel | |[[channel_function|channel]] |list of users on channels with their chanmodes | |[[chanusers]] |synonym for $[[onchannel]]() | |[[chops]] |list of channel operators| |[[ischannel]] |is the string a valid channel name? | |[[ischanop]] |is the user a chanop? | |[[ischanvoice]] |is the user a voice?| |[[iscurchan]] |is the channel current in its window? | |[[ishalfop]] |is the user a halfop? | |[[key]] |fetch a key for a channel | |[[mychannels]] |channels you're on | |[[nochops]] |list of users without any chanmodes on a channel | |[[numonchannel]] |number of users on a channel | |[[onchannel]] |check whether a user is on a channel or print a list of all users on a channel | |[[userhost_function|userhost]] |retrieve user's host from inside an /[[on]] hook or from client's internal [[WHO]] cache| =====Display operations===== ^function^description^ |[[chanwin]] |return the window a channel belongs to or window's current channel | |[[curpos]] |position of the cursol on the input line | |[[currchans]] |current channels for refnums | |[[geom]] |return dimensions of the terminal | |[[getcap]] |return data from terminfo or termcap database| |[[lastlog_function|lastlog]] |list of scrollback lines matching a pattern | |[[levelwindow]] |return a window having given level for a server | |[[line]] |retrieve the actual line from a scrollback buffer | |[[notifywindows]] |list of hidden windows with background activity | |[[outputinfo]] |return a level and target for given message | |[[querywin]] |active query in given window| |[[status_function|status]] |return a status bar for a window | |[[winchan]] |alias for $[[chanwin]]() | |[[windowctl]] |generic interface to window list | |[[winquery]] |return the window for given query| =====Array operations===== ^function^description^ |[[delarray]] |delete an array completely | |[[delitem]] |delete an item from an array | |[[finditem]] |find an item in an array | |[[getarrays]] |display names of all arrays| |[[getitem]] |retrieve an item from an array | |[[getmatches]] |return items in an array matching a pattern | |[[gettmatch]] |returns an array item best matching the pattern | |[[igetmatches]] |retrieve all items of an array matching given pattern | |[[indextoitem]] |sorted array index basing on array index | |[[itemtoindex]] | array index basing on a sorted array index | |[[matchitem]] |match all array against a pattern | |[[numarrays]] |total number of created arrays | |[[numitems]] |number of items in given array | |[[rmatchitem]] |match an array item against multiple patterns | |[[setitem]] |add or modify an item in an array| =====File I/O===== ^function^description^ |[[close]] |close a file descriptor | |[[eof]] |check whether if we're at the end of a file | |[[fsize]] |return the size of a file | |[[ftime]] |return the time when a file was last modified | |[[open]] |open a file for reading or writing | |[[read]] |read a line or an arbitrary amount of data from a file | |[[writeb]] |write an amount of bytes into a file | |[[write]] |write a line to a file| =====Client operations===== ^function^description^ |[[aliasctl]] |generic interface to [[alias command|aliases]] | |[[bindctl]] |generic interface to [[bind|keybindings]] | |[[builtin_expando]] |return a value of a builtin expando | |[[cexist]] |check whether a builtin command exists | |[[dccctl]] |generic interface to [[DCC]] | |[[epic]] |check whether the client is a Genuine EPIC (tm) | |[[fnexist]] |check whether a builtin function exists | |[[getcommands]] |get a list of all commands | |[[getfunctions]] |get a list of all functions | |[[getsets]] |get a list of all /[[set]]s | |[[getset]] |get a value of a /[[set]] | |[[hookctl]] |generic interface to [[hook|hooks]]| |[[idle]] |returns how long ago you pressed a key | |[[ignorectl]] |generic interface to ignores | |[[info_function|info]] |information about how the client was compiled | |[[irclib]] |returns a path to the irc library the client is using | |[[isdisplaying]] |checks whether /[[echo]] will actually output a string | |[[logctl]] |generic interface to logs | |[[ssl]] |check whether the client was compiled with SSL support | |[[timerctl]] |generic interface to [[timer|timers]]| =====Network operations===== ^function^description^ |[[connect_function|connect]] |open a TCP connection to a remote host| |[[convert]] |convert a hostname to an IP address and vice versa | |[[iptolong]] |convert an IP address to a long | |[[iptoname]] |convert an IP address to its reverse DNS | |[[listen]] |listen on a local port | |[[longtoip]] |convert a long to an IP | |[[nametoip]] |convert a hostname to an IP address| =====System operations===== ^function^description^ |[[chmod]] |change file's permissions | |[[crypt]] |hash a password | |[[exec_function|exec]] |spawn a new process and read its output | |[[fexist]] |check whether a file exists | |[[getenv]] |return an environment variable of EPIC's process | |[[getgid]] |return EPIC's group ID | |[[getlogin]] |return the username of a user running EPIC | |[[getpgrp]] |return the process group ID of EPIC | |[[getuid]] |return the uid of a user running EPIC | |[[killpid]] |kill a process ID | |[[mkdir]] |create a new directory | |[[pid]] |return EPIC's pid | |[[ppid]] |return EPIC's parent process' PID | |[[realpath]] |return a real path (with relative paths, '..' and symlinks resolved) of given file | |[[rename]] |rename a file | |[[rmdir]] |remove a directory | |[[srand]] |seed the random number generator | |[[stat]] |get information about a file | |[[ttyname]] |get the terminal device currently used by EPIC | |[[twiddle]] |return a home directory for a user | |[[umask]] |set the umask | |[[uname]] |return various informations from system's uname | |[[unlink]] |remove a file| =====External scripting languages===== ^function^description^ |[[perlcall]] | |[[perl_function]] | |[[perlxcall]] | |[[ruby function]] | |[[tcl function]] | =====Miscellanea===== ^function^description^ |[[functioncall]] |check whether your alias is running as a command or as a function | |[[hash_32bit]] |hash a string into a 32bit integer | |[[jot]] |return an integer range | |[[loadinfo]] |return information from inside a /[[LOAD|loading]] script | |[[metric_time]] |current time in the metric system | |[[pipe_function|pipe]] |execute a function and read its output | |[[randread]] |return a random line from a file | |[[rand]] |return a random integer | |[[sedcrypt]] |encrypt a string using SED | |[[sha256]] |hash a string using SHA256 | |[[startupfile]] |name of the file loaded as a startup script | |[[trunc]] |truncate a floating-point number to given degree of decimal precision | |[[which_function|which]] |full path to a script located in [[set load path|LOAD_PATH]] | |[[xdebug_function|xdebug]] |debugging function| =====Unknown===== ^function^description^ |[[asciiq]] | |[[chrq]] | |[[encryptparm]] | |[[findws]] | |[[fix_arglist]] | |[[floodinfo]] | |[[getserial]] | |[[isfilevalid]] | |[[joinstr]] | |[[nopaste]] | |[[scan]] | |[[shiftbrace]] | |[[symbolctl]] | |[[usetitem]] | |[[xform]] | |[[mktime]] | |[[corfilter]] | |[[cofilter]] | |[[corpattern]] | |[[delitems]] | |[[finditems]] | |[[getrmatches]] | |[[ifindfirst]] | |[[ifinditems]] | |[[ifinditem]] | |[[igetitem]] | |[[igetrmatches]] | |[[listarray]] | |[[ferror]] | |[[frewind]] | |[[fseek]] | |[[fskip]] | |[[ftell]]| |[[ftruncate]] | |[[dbmctl]] |