contentsconceptssyntaxlibrariessampleserrorsindex
Full text search
Changing and adding to the currently active rule groups
Prerequisite Concepts      

Using the group declaration, you are able to bundle rules into groups which you can then switch on and off with the using group command. More than one group can be made active by joining the group names with the keyword and in the using group command.

There may be some situations in which you want to add a group to the currently active groups without explicitly naming each of these groups. This can be accomplished by using the #group keyword instead of naming all of the already active groups. For example, suppose the rule groups "foo" and "bar" are both active, and you want to add group "baz" to the list of currently active groups. The following process rule names all three groups in a using group command, making them all active:

  process
     using group foo and bar and baz
     submit "foo.txt"

Alternately, however, you can use the #group keyword instead of naming groups "foo" and "bar":

  process
     using group #group and baz
     submit "foo.txt"

Groups can also be changed by using a next group is command. The difference between using group and next group is is that the group or groups named in the using group are active for the duration of a single action, whereas those named in a next group is are active indefinitely.

The next group is command allows you to change which groups are active in the middle of a rule. For example, the following program will remove ignore-marked sections. Since ignore-marked sections can be nested to an arbitrary depth, you can't write a single pattern to match a whole marked section. This program uses next group is commands to switch between groups as required:

  process
    repeat over #command-line-names
      using group document
        submit file #command-line-names
    again

  global counter ignore-level
  group document
    find ul "<![ignore["
      set ignore-level to 1
      next group is ignore

  group ignore
    find [any except "]<"]+
      ; discard (optimization -- grabs as much as possible in one pattern)

    find "]]>"
      decrement ignore-level
      next group is document when ignore-level = 0

    find ul "<![ignore["
      increment ignore-level

    find any
      ; discard

It is important to understand that changing the active rule groups in one domain will not change the active groups in any other domain.

Prerequisite Concepts
     Groups
 
   
----

Top [CONTENTS] [CONCEPTS] [SYNTAX] [LIBRARIES] [SAMPLES] [ERRORS] [INDEX]

Generated: April 21, 1999 at 2:00:46 pm
If you have any comments about this section of the documentation, send email to [email protected]

Copyright © OmniMark Technologies Corporation, 1988-1999.