Logic Variables

The default variable resolver also provides the following logic variables for performing simple logical operations:

- {@link oaj.svl.vars.IfVar} - `$IF{arg,then[,else]}`
- {@link oaj.svl.vars.SwitchVar} - `$SW{arg,pattern1:then1[,pattern2:then2...]}`
- {@link oaj.svl.vars.CoalesceVar} - `$CO{arg1[,arg2...]}`
- {@link oaj.svl.vars.PatternMatchVar} - `$PM{arg,pattern}`
- {@link oaj.svl.vars.NotEmptyVar} - `$NE{arg}`
- {@link oaj.svl.vars.UpperCaseVar} - `$UC{arg}`
- {@link oaj.svl.vars.LowerCaseVar} - `$LC{arg}`

The `$IF` variable can be used for simple if/else logic:

# Value set to 'foo' if myBooleanProperty is true key1 = $IF{ $S{myBooleanProperty}, foo } # Value set to 'foo' if myBooleanProperty is true, 'bar' if false. key2 = $IF{ $S{myBooleanProperty}, foo, bar } # Value set to key1 value if myBooleanProperty is true, key2 value if false. key3 = $IF{ $S{myBooleanProperty}, $C{key1}, $C{key2} }

The `$SW` variable can be used for switch blocks based on pattern matching:

# Shell command depends on the OS shellCommand = $SW{ $LC{$S{os.name}}, *win*: bat, linux: bash, *: sh }

The `$CO` variable can be used for coalescing of values (finding the first non-null/empty match):

# Debug flag can be enabled by system property or environment variable. debug = $CO{ $S{debug}, $E{DEBUG}, false }

The `$PM` variable can be used for calculating boolean values:

# Debug flag can be enabled by system property or environment variable. isWindows = $PM{ $LC{$S{os.name}}, *win* }