Check that a module name is prefixed with a custom prefix: 1) It must be a valid FORTRAN name subset (<=63 chars, begin with letter, only alphanumeric allowed) 2) It must begin with the prefix 3) If longer, package name must be followed by default separator (“_”) plus at least one char
Basic check: check that both names are individually valid
FPM package enforcing: check that the module name begins with the custom prefix
Query string lengths 2) It must begin with the package name. 3) It can be equal to the package name, or, if longer, must be followed by the 4) Package name must not end with an underscore
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(string_t), | intent(in) | :: | module_name | |||
type(string_t), | intent(in) | :: | custom_prefix |
logical function has_valid_custom_prefix(module_name,custom_prefix) result(valid) type(string_t), intent(in) :: module_name type(string_t), intent(in) :: custom_prefix !> custom_module separator: single underscore character(*), parameter :: SEP = "_" logical :: is_same,has_separator,same_beginning integer :: lpkg,lmod,lsep !> Basic check: check that both names are individually valid valid = is_fortran_name(module_name%s) .and. & is_valid_module_prefix(custom_prefix) !> FPM package enforcing: check that the module name begins with the custom prefix if (valid) then !> Query string lengths lpkg = len_trim(custom_prefix) lmod = len_trim(module_name) lsep = len_trim(SEP) same_beginning = str_begins_with_str(module_name%s,custom_prefix%s,case_sensitive=.false.) is_same = lpkg==lmod .and. same_beginning if (lmod>=lpkg+lsep) then has_separator = str_begins_with_str(module_name%s(lpkg+1:lpkg+lsep),SEP) else has_separator = .false. endif !> 2) It must begin with the package name. !> 3) It can be equal to the package name, or, if longer, must be followed by the ! default separator plus at least one character !> 4) Package name must not end with an underscore valid = same_beginning .and. (is_same .or. (lmod>lpkg+lsep .and. has_separator)) end if end function has_valid_custom_prefix