A
          / \      _              Play Now                         Nemesis on 
          | |     | |  _______   _        _   _______    _______   _    _______
          | |\    | | |   ____| |  \    /  | |   ____|  /   ____| | |  /   ____|
 /-------/-------------------------------------------------------------------,
O= Home <=XX|  About  News  Pics  Adventurers  Wizards  Download  Connect     >
 \-------\-------------------------------------------------------------------'
          | |   \   | |  |____  | |      | | |  |____   ___ \  \  | |  ___ \  \
          | |     \_| |_______| |_|      |_| |_______| |_______/  |_| |_______/
          \ /
           V  

Documentation Area

Document Path: /doc/lib/simplify_string


Simul efun: simplify_string - simplify a string for better parsing

Synopsis:
	string simplify_string(string arg)

Description:
	This simulated efun changes a string so that the only characters
	to appear in the result are a-z, 0-9 and ' ' (space).

	This is done by first lower_case()ing the argument and then dividing
	it into "words", that means parts of it that do only consist of a-z
	and 0-9. Between two words and at the beginning and the end of the
	string a space ( ) will be added.

	Now you can simply parse the result with match():
	The pattern can only consist of the characters mentioned above (and
	the asterisk * as a special matching character). Use patterns like
	this:
		"* <string part> *"
	You can of course match for lots of different patterns.

Return value: the simplified string (as described above)

Example:
	catch_tell(str) {
		string who;
		if (sscanf(str, "%s says: %s\n", who, str) != 2 &&
		    sscanf(str, "%s asks: %s\n", who, str) != 2) return;
		str = simplify_string(str);
		if (match("* froot loops *", str) || match("* froot loop *")) {
			if (match("* please *")) give_loops();
			else say(query_name()+
			  " asks: Couldn't you be a bit more polite?\n");
		}
	}
	Note: It would be better to delay the reaction via heart_beat() or
	call_out(), but that is another thing!

See also:


This page was generated in LPC

Imprint / Impressum