regExpOption function
Tests whether the argument
has the longName
or the shortName
and a regular expression.
Returns the RegExp or null.
Throws OptionException on error.
longName
: the long name to inspect, e.g. 'log-file'
shortName
: the short name to inspect, e.g. 'l'
argument
: argument to inspect, e.g. '--exclude-file=.*.log'
Implementation
RegExp? regExpOption(String longName, String? shortName, String argument) {
RegExp? rc;
String? pattern;
if (argument == '--$longName' || argument == '--$longName=') {
throw OptionException('missing =<reg-expr> in $argument');
} else if (argument.startsWith('--$longName=')) {
pattern = argument.substring(longName.length + 3);
} else if (shortName != null && argument.startsWith('-$shortName')) {
pattern = argument.substring(2);
}
if (pattern != null) {
var caseSensitive = true;
if (pattern.endsWith('||i')) {
caseSensitive = false;
pattern = pattern.substring(0, pattern.length - 3);
}
try {
rc = RegExp(pattern, caseSensitive: caseSensitive);
} on Exception catch (exc) {
throw OptionException(
'syntax error (reg. expression) in $argument: $exc');
}
}
return rc;
}