withOption
The withOption functions change the behavior of a block pattern.
withOption(pattern: PatternBlocks<T>, option: UnmatchedConfigOption) : PatternBlocks<T>
withOption(pattern, option) returns a new pattern that is identical to pattern, but which uses the specified
option for handling unmatched configuration blocks. For example, to specify that pattern should only match if there
is no unmatched config lines, use withOption(pattern, UnmatchedConfigOption.FORBID).
Note that block patterns constructed using block pattern literal syntax or via the blockPattern function use
UnmatchedConfigOption.ALLOW option. In other words, by default, block patterns match their subpatterns against
configuration lines, allowing for extra lines to be present in the configuration.
withOption(pattern: PatternBlocks<T>, option: LineMatchingOption) : PatternBlocks<T>
withOption(pattern, option) can be used to obtain a new pattern that is identical to pattern, but which uses the
specified option when matching individual pattern lines to config lines. For example, to specify that each line of
pattern should only match a config line if it completely matches the line (not just a prefix of the line), use
withOption(pattern, LineMatchingOption.COMPLETE).
Note that block patterns constructed using block pattern literal syntax or via the blockPattern function use
LineMatchingOption.PREFIX option. In other words, by default, block pattern lines match against lines of configuration
as long as the pattern line matches a prefix of the configuration line.
A line in a block pattern literal that ends with {eof} will only match configuration lines where every part of the
configuration line is matched up with elements in the block pattern line. If the block pattern line does not end with
{eof} then the block pattern line can match configuration lines which have a prefix that matches the block pattern
line. In other words, pattern1 and pattern2, defined below are equivalent:
pattern1 = ```
interface {string} {eof}
switchport access vlan {number} {eof}
```;
pattern2 = withOption(```
interface {string}
switchport access vlan {number}
```, LineMatchingOption.COMPLETE);