⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expansions

📁 EPIC IRC客户端。来源于IRCII客户端但做了很多性能和功能的优化。
💻
字号:
$EPIC: expansions,v 1.1 2003/05/29 23:09:03 jnelson Exp $		$-expansion and Quoting HellWhenever you give epic a string of text, epic will usually run it through the "expander" before it uses it.  The expander has four main jobs:	1) Substitute $-expandos with whatever they evaluate to	2) Remove any \c sequences (c is any character) (**** SEE BELOW ****)	3) Find the start of the "next" command in a command set.	4) Determine if a numeric expando is used in the text.The following places use the expander:* alias.c		prepare_alias_call	* To expand "default" values in argument list, eg		/alias oof (var1 default "$ooga") {...}* commands.c		parse_line		(**** SEE BELOW ****)	* To extract and expand the first command from a block of commands	  prior to execution; to determine if the command uses a numeric	  expando and to append $* if it does not, eg		/alias oof {echo $ooga;echo hi}		/alias booya msg* expr.c		next_unit	(SETUP_IMPLIED)	* To expand the variable name on the left hand side of an 	  implied assignment, eg		@ $ooga += 3* expr.c		next_unit	([...] handling)	* To expand the inside of [...] operator in an expression which 	  starts with $ but is not a numeric expando, eg		@ var = [$ooga]* expr.c		next_unit	([...] handling)	* To expand the inside of [...] operator that contains a $ or \	  character, eg		@ var = [one two $ooga my shoe]		@ var = [one two \three four]* expr.c		next_unit	(pre/post in/decrement operator)	* To expand the variable name operand of the pre or post increment	  or decrement operators, eg		@ $ooga++		@ --$ooga* expr.c		next_unit	(= operator handling)	* To expand the variable name on the left hand side of a straight	  assignment, eg		@ $ooga = 3* expr.c		alias_special_char	* To expand the inside of the width qualifier following a $, eg		$[$ooga]var1* expr.c		alias_special_char	* To expand the inside of $(...) (``indirect'') expando, eg		$($ooga)* expr2.c		get_raw_token		(NEW MATH PARSER)	* To convert an operand that is available as an "LVAL" when it is	  needed to be used in a "RAW" context, eg		@ var1 = $ooga* expr2.c		get_token_expanded	(NEW MATH PARSER)	* To convert an operand that is available as a "RAW" value when it	  is needed to be used in an "EXPANDED" context, eg		@ var1 = [$ooga]* functions.c		call_function	* To expand the argument list contained within parenthesis to a 	  function being called, eg		@ func($ooga)* functions.c		function_cparse		($cparse())	* To expand the resulting string after the cparse substitutions, 	  for BitchX compatability, eg		/echo $cparse("one two" buckle my $1 shoes $ooga)* hook.c		do_hook	* To expand the inside of a flexible hook before pattern matching, eg		/on msg '$ooga *' {...}* if.c			fe	* To expand the word list argument to the /FE command, eg		/fe ($ooga) {...}* if.c			for_fe_cmd	* To expand the word list argument to the /FOR I IN (...) command, eg		/for i in ($ooga) {...}* if.c			switchcmd	* To expand the control string argument to the /SWITCH command, eg		/switch ($ooga) {....}* if.c			switcmd	* To expand the matching string argument to the /SWITCH command, eg		/switch ($*) {($ooga) {...}}* if.c			repeatcmd	* To expand the number-iterations argument to the /REPEAT command, eg		/repeat $ooga ....* input.c		update_input	* To expand the value of /set input_prompt prior to display, eg		/set input_prompt ${ooga}>* ircaux.c		remove_brackets	* To expand the inside of a variable array qualifier, eg		$var1[$ooga]* log.c			add_to_log	* To rewrite text sent to a log before writing it, eg		/set log_rewrite $ooga $1-		/log new rewrite "$ooga $1-"* numbers.c		banner	* To expand /set banner prior to display when /set banner_expand on, eg		/set banner $ooga		/set banner_expand on* output.c		vsay	* To expand /set banner prior to display when /set banner_expand on, eg		/set banner $ooga		/set banner_expand on* queue.c		queuecmd	* To expand the command bodies at registration time if -expand_now	  is used, eg		/queue -expand_now {$ooga}* screen.c		add_to_window	* To rewrite text sent to a window before displaying it, eg		/set output_rewrite $ooga $1-* status.c		make_status	* To expand the status bar after substitution but before displaying 	  it when /set status_does_expandos on, eg		/set status_user1 $ooga		/set status_does_expandos on==============================================================================The "dequoter" is the function that removes \'s from a text string.  It is theplace that most commonly causes ``quoting hell''.  Each time a function is passed through the "dequoter", another level of \'s are removed.The "dequoter" is malloc_strcat_ues_c, and it is called by the following:* expr.c		expand_alias	* To copy portions of the original string that are not part of 	  a $-expando, contained withing parenthesis, or braces, * window.c		window_channel	* To convert \" to " from the argument to /window channel so you	  may join channels with quotes in them, eg		/window channel "#one\"two"		/window channel #foobar "key\"withquote"==============================================================================The "Evaluator" is the function that runs a block of commands that you give it.It is the basis of the /eval command and every command you run in the languagegoes through it at least once.  The evaluator may pass the commands throughexpand_alias, which means support for {}s, semicolons between commands, and$-expansion.  The evaluator may just treat the entire thing as one big commandhowever.  The caller sets a flag to decide thisThe "evaluator" is parse_line, and it is called by the following:* alias.c		parse_line_alias_special	* To run a command alias's block of commands.	* Full expansion handling 	* $* is passed in from above* commands.c		do_defered_commands	* To run commands that were /DEFERed previously	* Full expansion handling 	* $* is saved from when /DEFER was registered* commands.c		xevalcmd	* To run a command through the evaluator a second time, possibly	  in a different window or server context.	* Full expansion handling (could result in double expansion)	* $* is passed in from above* commands.c		evalcmd	* To run a command through the evaluator a second time	* Full expansion handling (could result in double expansion)	* $* is passed in from above* commands.c		loader_std	* To run one command from within a /LOADed script	* Full expansion if /SET INPUT_ALIASES is ON (usually not though)	* Full expansion if  /LOAD -ARGS filename ... was used	* $* is [] if /LOAD -ARGS is not used.* commands.c		loader_pf	* To run an entire pre-formatted block of commands within a script	* Full expansion handling	* $* is [] if /LOAD -ARGS is not used.* commands.c		redirect	* To run commands to watch for data sent to server	* Full expansion handling (could result in double expansion)	* $* is passed in from above.* commands.c		sendlinecmd	* To run commands unconditionally as if from the command line	* Full expansion if /SET INPUT_ALIASES is ON (usually not though)	* $* is [] in all cases.* commands.c		waitcmd		(/WAIT FOR ....)	* To run commands to watch for data sent to server in 	* Full expansion handling (could result in double expansion)	* $* is passed in from above* commands.c		send_text	* To run the "AWAY" command or alias when sending a message from 	  the input line and when away and when /SET AUTO_UNMARK_AWAY is on.	* Full expansion handling (nothing to expand, however)	* $* is [] in all cases* commands.c		eval_inputlist	* To run commands passed to /INPUT "prompt" <commands>	* Full expansion handling (could result in double expansion)	* $* is saved from when the /input prompt was registered* commands.c		parse_line	* To run the insides of {...} blocks passed to parse_line.	* Full expansion ({...} are protected; no double expansion)	* $* is passed in from above.* exec.c		handle_fieldesc	* To run the commands of /exec -line, -error, -linepart, -errorpart,	  or /exec -end.	* Full expansion (syntax forces use of {}s, so no double expansion)	* $* is provided on the fly.* exec.c		cleanup_dead_processes	* To run the commands of /wait %proc -cmd {...}	* Full expansion (could result in double expansion)	* $* is provided on the fly.* expr.c		next_unit	* To run the inside of the {...} operator as a function.	* Full expansion ({} is protected; no double expansion)	* $* is passed in from above.* hook.c		do_hook	* To run the hook command body	* Full expansion (could result in double expansion)	* $* is provided on the fly.* if.c			ifcmd	* To run commands in an /IF decision block	* Full expansion (syntax usually requires {}, so no double expansion)	* $* is passed in from above* if.c			docmd	* To run commands in a /DO {...} (...) loop block	* Full expansion (syntax requires {}, so no double expansion)	* $* is passed in from above* if.c			docmd	* To run commands in a /DO .... command block	* Full expansion (double expansion if {}s are not used)	* $* is passed in from above* if.c			whilecmd	* To run commands in a /WHILE (...) loop block	* Full expansion (double expansion if {}s are not used)	* $* is passed in from above* if.c			foreach	* To run commands in a /FOREACH head var {...} loop block	* Full expansion (syntax requires {}, so no double expansion)	* $* is passed in from above* if.c			fe	* To run commands in a /FE loop block	* Full expansion (syntax requires {}, so no double expansion)	* $* is passed in from above* if.c			for_next_cmd	* To run commands in a /FOR var FROM start TO end {...} loop block	* Full expansion (syntax requires {}, so no double expansion)	* $* is passed in from above* if.c			for_fe_cmd	* To run commands in a /FOR var IN (list) {...} loop block	* Full expansion (syntax requires {}, so no double expansion)	* $* is passed in from above* if.c			forcmd	* To run commands in a /FOR (...,<expr>,...) {...} loop block	* To run prelim and loop iteration commands in above.	* Full expansion (syntax requires a {}, so no double expansion)	* $* is passed in from above* if.c			switchmd	* To run commands in a /SWITCH body	* Full expansion (syntax requires {} so no double expansion)	* $* is passed in from above* if.c			repeatcmd	* To run commands to /REPEAT	* Full expansion (Double expansion if {} is not used)	* $* is passed in from above* input.c		send_line	(key binding) 	* To run the command in the input prompt	* Full expansion depends on /SET INPUT_ALIASES (normally off)	* $* is [] in all cases* input.c		parse_text	(key binding)	* Runs the command argument to the binding, eg		/bind ^X parse_command CMD ooga booga	* Full expansion (double expansion if {} is not used argument cmds)	* $* is [] in all cases* keys.c		key_exec	* Runs an alias that is associated with a key binding	* Full expansion (double expansion if {} was not used to create bind)	* $* is [] in all cases.* perl.c		XS_cmd	* Runs a command passed in from perl as if it were executed at	  the input prompt with /SET INPUT_ALIASES OFF	* No expansion (naturally)	* $* is irrelevant.* perl.c		XS_eval	* Runs a command passed in from perl as if it were executed at	  the input prompt with /SET INPUT_ALIASES ON	* Full expansion	* $* is [] in every case* queue.c		run_queue	* Runs a queued command when the queue itself is run	* Full expansion (may have previously been expanded!)	* $* is saved from when the command was put into the queue.* screen.c		do_screens	* Runs a command from standard input when in "dumb mode"	* Expansion depends on /SET INPUT_ALIASES (usually off)	* $* is [] in every case* server.c		check_server_wait	* Runs a command registered with /WAIT -cmd ...	* Full expansion (double expansion if {} is not used)	* $* is [] in every case* tcl.c			Tcl_epicCmd	* Runs a command passed in from the tcl commands "cmd" or "eval"	  as in the perl case.	* Expansion depends on the command (see perl case)	* $* is [] in every case* timer.c		ExecuteTimers	* Runs commands scheduled for later execution with /TIMER time ...	* Full expansion (double expansion if {} is not used)	* $* is saved from when the command was scheduled* who.c			whoreply	* Runs commands from /WHO -LINE {....}	* Full expansion (syntax requires {}, so no double expansion)	* $* is provided on the fly.* who.c			whoend	* Runs commands from /WHO -END {....}	* Full expansion (syntax requires {}, so no double expansion)	* $* is provided on the fly.* who.c			fake_who_end	* Runs commands from /WHO -END {....}	* Full expansion (syntax requires {}, so no double expansion)	* $* is provided on the fly.* who.c			userhost_cmd_returned	* Runs commands from /USERHOST <nicks> -CMD ....	* Full expansion (double expansion if {} is not used)	* $* is provided on the fly.#end of file

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -