dot_separated v When parsing split the input string using '.' separator and apply v.parse. Merge by concatenate two values, and print by joining v.print generated strings using a '.' separator. Don't strip whitespaces.
val with_optional_parentheses : 'at->'bt->('a * 'b option)t
with_optional_parentheses v_main v_opt Combine two values. The input string "abcd (defg)" is split between the part not between parentheses and the one between. v_main is applied to the first one and v_opt to the latter. If no parentheses is found, only apply v_main.
val choices : (unit -> string)->(string * 'a) list->'at
choices nm lst Value that must be in a list of predefined choices. Find the right association in lst, comparison is case insensitive. If something failed output a message using nm as the name of the value represented.