| int parse_command(string str, mixed source, string pattern, var1, var2 ...); |
| |
| Parses commands given in "str" against the pattern in "pattern" and |
| returns 1 if it matches. "source" is either an object or an array of objects. |
| This is essentially a 'hotted' sscanf and it has a similar syntax, although |
| parse_command works on word basis where sscanf works on character basis. |
| |
| .ip str |
| Given command |
| .ip source |
| Either an array holding the accessible objects, or |
| an object from which to recurse and create |
| the list of accessible objects, normally |
| ob = environment(this_player()) . |
| |
| .ip pattern |
| Parse pattern as list of words and formats: |
| .nf |
| Syntax: |
| 'word' obligatory text (One word) |
| [word] optional text (One word) |
| / Alternative marker |
| %o Single item, object |
| %l Single living object |
| %s Any text (multiple words) |
| %w Any word |
| %p Preposition |
| %i Any items |
| %d Number 0- or tx(0-99) |
| .fi |
| Example string: " 'get' / 'take' %i " . |
| Items as in %o and %i can on many forms, some examples: |
| .nf |
| apple, two apples, twentyfirst apple |
| apples, all apples, all green apples, all green ones |
| .fi |
| |
| .ip varN |
| This is the list of result variables as in sscanf. |
| One variable is needed for each %_. |
| The return types of different %_ is: |
| .nf |
| %o Returns an object |
| %l Returns an object |
| %s Returns a string of words |
| %w Returns a string of one word |
| %p Can on entry hold a list of word in array |
| or an empty variable |
| Returns: |
| if empty variable: a string |
| if array: array[0]=matched word |
| %i Returns a special array on the form: |
| [0] = (int) given numeric prefix |
| =0: all or a pluralform given |
| >0: numeral given: two, three, four... |
| <0: order given: second, third ... |
| [1..n] (object) Objectpointers |
| A list of the POSSIBLE objects that can match |
| the given %i. No choosing of third or such. |
| %d Returns a number |
| .fi |
| .lp |
| Example: |
| |
| a=parse_command("take apple",environment(this_player()), |
| " 'get' / 'take' %i ",items); |
| |
| HISTORY |
| LDMud 3.3.258 and LP "03.02.1@150" removed the compat-mode |
| parse_command(). |
| |
| 29.10.2006 Zesstra |