diff options
Diffstat (limited to 'core/namespace/Parsers/ArgumentParser.php')
-rw-r--r-- | core/namespace/Parsers/ArgumentParser.php | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/core/namespace/Parsers/ArgumentParser.php b/core/namespace/Parsers/ArgumentParser.php new file mode 100644 index 0000000..ab32fe1 --- /dev/null +++ b/core/namespace/Parsers/ArgumentParser.php @@ -0,0 +1,30 @@ +<?php +namespace Parsers; + +class ArgumentParser implements ParserInterface { + + #=========================================================================== + # Parse arguments (*without* duplicates) + #=========================================================================== + public function parse(string $text): array { + foreach(explode('|', $text) as $delimiter) { + $part = explode('=', $delimiter); + + $argumentK = $part[0] ?? NULL; + $argumentV = $part[1] ?? TRUE; + + if(preg_match('#^[[:word:]]+$#', $argumentK)) { + $arguments[strtoupper($argumentK)] = $argumentV; + } + } + + return $arguments ?? []; + } + + #=========================================================================== + # Transform arguments (not implemented) + #=========================================================================== + public function transform(string $text): string { + return ''; + } +} |