# optionSplit¶

optionSplit is a very tricky function. It’s primarily used in the menu objects where you define properties of a whole bunch of items at once. Here the value of properties would be parsed through this function and depending on your setup you could e.g. let the last menu- item appear with another color than the others.

## Syntax¶

The syntax is like this:

|*| splits the value in parts *first, middle* and *last*.

|| splits each of the parts *first, middle* and *last* in subparts.

## The four rules¶

The following four rules are used by optionSplit:

- The priority is
*last, first, middle*. - If the
*middle*-value is empty (“”), the last part of the first- value is repeated. - If the
*first*- and*middle*value are empty, the first part of the last-value is repeated before the last value. - The
*middle*value is repeated.

Example:

```
first1 || first2 |*| middle1 || middle2 || middle3 |*| last1 || last2
```

## Examples:¶

This is very complex and you might think that this has gone too far. But it’s actually useful.

Now consider a menu with five items:

Introduction

Who are we?

Business

Contact

Links

… and a configuration like this:

```
temp.topmenu.1.NO {
backColor = red
....
}
```

If you look in this reference (see later) at the linkWrap property of
the GMENU object, you’ll discover that all properties of *.NO* are
parsed through *optionSplit*. This means that before the individual
menu items are generated, the properties are split by this function.
Now lets look at some examples:

### Subparts ||¶

## Example:¶

All items take on the same value. Only the *first* -part is defined
and thus it’s repeated to all elements

```
TS: backColor = red
```

Introduction (red)

Who are we? (red)

Business (red)

Contact (red)

Links (red)

## Example:¶

Here the *first-* part is split into subparts. The third subpart is
repeated because the menu has five items.

```
TS: backColor = red || yellow || green
```

Introduction(red)first, subpart 1Who are we? (yellow) first, subpart 2

Business (green) first, subpart 3

Contact (green) first, subpart 3 (repeated)

Links (green) first, subpart 3 (repeated)

### Parts |*|¶

## Example:¶

Now a *middle*-value is also defined (”*white*”). This means that
after the first two menu-items the *middle*-value is used.

```
TS: backColor = red || yellow |*| white
```

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business(white) middleContact (white) middle

Links (white) middle

## Example:¶

Now a *last*-value is also defined (”*blue || olive”*). This
means that after the first two menu-items the *middle*-value is used.

```
TS: backColor = red || yellow |*| white |*| blue || olive
```

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business(white) middleContact (blue) last, subpart 1

Links (olive) last, subpart 2

… and if we expand the menu a bit (*middle*-value is repeated!)

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business(white) middle…. (white) middle

…. (white) middle

…. (white) middle

…. (white) middle

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

… and if we contract the menu to only four items (the *middle*
-value is discarded as it’s priority is the least)

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

… and if we contract the menu to only 3 items (the last subpart of
the *first*-value is discarded as it’s priority is less than the
*last*-value)

Introduction (red) first, subpart 1

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

### “1: The priority is *last, first, middle*”¶

Now the last two examples showed that the *last*-value has the
highest priority, then the *first*-value and then the *middle*
-value.

### “2: If the *middle*-value is empty, the last part of the first-value is repeated”¶

## Example:¶

The *middle*-value is left out now. Then subpart 2 of the first
value is repeated. *Please observe that no space must exist between
the two |*||*|!*

```
TS: backColor = red || yellow |*||*| blue || olive
```

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business(yellow) first, subpart 2 (repeated)Contact (blue) last, subpart 1

Links (olive) last, subpart 2

### “3: If the *first* - and *middle* value are empty, the first part of the last-value is repeated before the last value”¶

## Example:¶

The *middle*-value and *first*-value are left out now. Then the
subpart 1 of the last value is repeated. *Please observe that no
space must exist between the two |*||*|!*

```
TS: backColor = |*||*| blue || olive
```

Introduction (blue) last, subpart 1 (repeated)

Who are we? (blue) last, subpart 1 (repeated)

Business(blue) last, subpart 1 (repeated)Contact (blue) last, subpart 1

Links (olive) last, subpart 2

### “4: The *middle* value is repeated”¶

## Example:¶

```
TS: backColor = red |*| yellow || green |*|
```

Introduction(red) firstWho are we? (yellow) middle, subpart 1

Business(green) middle, subpart 2…. (yellow) middle, subpart 1

…. (green) middle, subpart 2

…. (yellow) middle, subpart 1

…. (green) middle, subpart 2

Contact(yellow) middle, subpart 1

Links(green) middle, subpart 2

## Overview with abstract examples¶

The following table gives you a condensed overview of how the optionSplit rules work together:

optionSplit | Resulting items | Rule |
---|---|---|

a | a a a a | |

a || b || c | a b c c c … | |

a || b |*| c | a b c c c … | |

a || b |*| c |*| d || e | a b c c … c c d e | Rule 1 |

a || b |*| c |*| d || e | a b d e | Rule 1 |

a || b |*| c |*| d || e | a d e | Rule 1 |

a || b |*||*| c || d | a b … b c d | Rule 2 |

|*||*| a || b | a a … a b | Rule 3 |

a |*| b || c |*| | a b c b c b c … b c | Rule 4 |