PercentOR (%OR) and CaretOR (^OR) Super-separators

   When you process a document in which options blocks are nested within another, or in which variables are nested within Options blocks (either or both), you will notice a pause during document processing. The more items that are nested, the longer the pause.

   So why the pause? Pathagoras is counting and parsing and measuring and segregating the various clauses to determine what is a parent (and over-arching options block) and what is a child (i.e., a nested options clause).  Pathagoras is determining what, and how many, choices it will be presenting to you on the first selection screen. To be more precise, Pathagoras is determining which slashes matter. Is it a slash that separates top-level ('parent') choices or are they part of nested components. Pathagoras wants to make sure that only the proper and relevant choices are presented for each screen

   By way of example and further explanation, consider the following snippet:

 

<<*Options*!MealType!Appetizer/Entree/Dessert*I want to start the meal off with a <<*Options(radio)*Greek salad/bowl of tomato bisque/cheese assortment>>./For the main course, let me have <<*Options(radio)*fried chicken/New York strip steak/vegetable moussaka>>./And let's finish up with <<*Options*Baked Alaska/Raspberry sorbet/apple pie>>. {And coffee, please.}>>

 

The exaggerated slashes above are the 'real' dividers for the !FoodType! group.
The smaller slashes (seen in the nested variables) need to be ignored temporarily.

You can copy and paste the above into a Word document and press <Alt-G> to play with it.

(For the observant reader, I intentionally did not 'radio' the dessert choices.)

 

   In examining the above, keep in mind that every slash is a potential separator. Without Pathagoras having a way to distinguish the child-level slashes from parent-level slashes, you would be presented 10 options at the beginning when you were only expecting 3.

   To accomplish this Herculean task, Pathagoras temporarily (and very quickly) converts the slashes in all nested elements to other characters.

   The process of converting in, and then converting back out, those slashes is very fast for an individual element (less than 1/10 of a second according to our tests).  However, when there are many (say 30+) such elements, it will begin to add a noticeable amount of processing time to your project. When there are hundreds of nested elements, several seconds can be consumed. (Not a long time in any event, but over the course of many projects, it can add up.)

  The solution for 'many nests' and 'long documents' -- %OR and ^OR

  "Well, to prevent all of that 'switching,' can't you just have a separator that designates the choices at the 'parent' level?" Great question, and the answer is 'Yes.' Beginning with Pathagoras 2018 (when our users had become uber sophisticated and went 'crazy' -- in a good sense -- with branching and nesting), we added two features that we call 'super-separators.' They are, in order of priority:

  '%OR' (percentOR)

 and

 '^OR' (caretOR).

    Use super-separators as you would a regular slash separator, but do so only at  top levels. Typically, you would use them cases where a simple perusal of the document tells you that 'slash conversions' of child elements would be a waste of time.

  Hierarchy

%OR is the top-most separator and ^OR the second topmost. Pathagoras looks first to see if the document contains %OR and then (whether they are processed or if there were none) looks for ^OR. (If you have trouble remembering the hierarchy, just note that the % (above the 5 on your keypad) comes before the ^ ('capital 6) on your keyboard.). You can use a ^OR without first using a %OR.

  Limitations:

The %OR and ^OR super-separators must be on their own lines, or at the end of a paragraph. (So it cannot be used mid-sentence. Pathagoras is looking for ^OR<Enter>)

No nesting of the same super separator within the parent is allowed.

Multiple super-separator sets can be used within a single document so long as they are independent from each other. (That is, you cannot nest %OR sets within the scope of an existing %OR range. You CAN nest a ^OR within a %OR since ^OR is lower in hierarchy than %OR.) You cannot nest a %OR within a ^OR.

The experienced user will also recognize that '/OR'  can also be used as a super-separator. If Pathagoras sees a /OR in an options block, it will not convert nested / within its scope. Plus, /ORs do not have to be on a separate line. %OR and ^OR were written for large swaths of text, /OR for much shorter document elements. A bit of experimentation could be useful to determine the best use of each in your particular documents.