Skip to main content

parse_command

Discworld efun help

parse_command

int parse_command(string str, object 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.

Essentialy find_match is a better interface to this. PLease use find_match instead of this. Any of these constructs can be used with add_command. Please see add_command for more details.

str

Given command.

source

source is either an object or an array of objects.

array

array holding the accessible objects

object

object from which to recurse and create the list of accessible objects, normally ob = environment(this_player())

pattern

Parsepattern as list of words and formats:

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)

Example

Example string: " 'get' / 'take' %i "

Items as in %o and %i be can on many forms. Some examples: apple, two apples, twentyfirst apple apples, all apples, all green apples, all green ones

varN

This is the list of result variables as in sscanf. One variable is needed for each %_ The return types of different %_ are:

PS I give up on doing the formating at this point... (Pinkfish)

 %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
 
Example:
a=parse_command("take apple",environment(this_player()),
	 " 'get' / 'take' %i ",items);