Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
is_alphabetic
, which checks that a character is withina-z
orA-Z
is_numeric
, which checks that a character is within0-9
is_valid_name
, which checks if a string:is_alphabetic
is_alphabetic
, oris_numeric
if its length is > 1-
or_
is_valid_abbrev
, which checks if a string is empty or is one character and itis_alphabetic
oris_numeric
With that, added checks for validity of names of arguments and programs with
is_valid_name
and argument abbreviations withis_valid_abbrev
. The check for empty argument name is separate to have a clearer message. Didn't think the same was necessary for programs.Something "unrelated" that I've done is centralize the validations on
Arg
in thevalidate_arg
function, so the factory functions construct anArg
, callvalidate_arg
with it, and then return it.Also added some unit tests to check that
is_valid_name
andis_valid_abbrev
are somewhat correct. This is sorta provisional, since these functions require automated generation of input.