Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Checks whether argument conforms specified option specification.
- #
- # Arguments:
- # - args - array containing arguments (all indecies must be zero-based sequentially continue over entire array)
- # - i - index to start scanning arguments from (must point to item with option name before opening curly brace)
- # - possibleValue - possible argument value (argument value can be bundled with it in arg)
- # - outExists - array for marking option as defined
- # - outType - array with -t|--type values
- # - outAlias - array with -a|--alias values
- # - outIsAssignable - array with -ia|--is-assignable values
- # - outAllowBundle - array with -ab|--allow-bundle values
- # - outAssignmentChar - array with -ac|--assignment-char values
- function __checkArgumentConformsSpecification(args, i, possibleValue, outExists, outType, outAlias, outIsAssignable, outAllowBundle, outAssignmentChar) {
- arg = args[i]
- optionExists = utils::false()
- bundledAssignmentUsed = utils::false()
- if (arg in outExists)
- optionExists = utils::true()
- for (option in outAlias) {
- alias = outAlias[option]
- split(alias, aliasList, ",")
- if (utils::containsValue(aliasList, arg)) {
- optionExists = utils::true()
- break
- }
- }
- if (utils::containsMatchingKey(outExists, "^" arg)) {
- optionExists = utils::true()
- bundledAssignmentUsed = utils::true()
- }
- for (option in outAlias) {
- alias = outAlias[option]
- split(alias, aliasList, ",")
- if (utils::containsMatchingValue(aliasList, "^" arg)) {
- optionExists = utils::true()
- bundledAssignmentUsed = utils::true()
- break
- }
- }
- if (!optionExists)
- return errors::USER_UNKNOWN_OPTION_ERROR arg
- if (!outIsAssignable[arg] && bundledAssignmentUsed)
- return errors::USER_BUNDLED_ASSIGNMENT_NOT_SUPPORTED_ERROR arg
- if (!bundledAssignmentUsed && !possibleValue)
- return errors::USER_NO_VALUE_PROVIDED_ERROR arg
- if (!bundledAssignmentUsed)
- value = possibleValue
- else {
- if (outAssignmentChar[arg]) {
- j = index(outAssignmentChar[arg], arg) + 1
- value = substr(arg, j)
- if (!value)
- return utils::false()
- }
- sub("^" arg, "", value)
- }
- switch (outType[arg]) {
- case "integer":
- return utils::isInteger(value)
- case "float":
- return utils::isFloat(value)
- case "bool":
- return utils::isBool(value)
- case "string":
- return utils::true()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement