elemental function is_number(self, allow_spaces)
!< Return true if the string contains a number (real or integer).
!<
!<```fortran
!< type(string) :: astring
!< logical :: test_passed(7)
!< astring = ' -1212112 '
!< test_passed(1) = astring%is_number().eqv..true.
!< astring = ' -121.2112 '
!< test_passed(2) = astring%is_number().eqv..true.
!< astring = ' -1212112'
!< test_passed(3) = astring%is_number(allow_spaces=.false.).eqv..false.
!< astring = '-12121.12 '
!< test_passed(4) = astring%is_number(allow_spaces=.false.).eqv..false.
!< astring = '+2e20'
!< test_passed(5) = astring%is_number().eqv..true.
!< astring = ' -2.4E13 '
!< test_passed(6) = astring%is_number().eqv..true.
!< astring = ' -2 E13 '
!< test_passed(7) = astring%is_number().eqv..false.
!< print '(L1)', all(test_passed)
!<```
!=> T <<<
class(string), intent(in) :: self !< The string.
logical, intent(in), optional :: allow_spaces !< Allow leading-trailing spaces.
logical :: is_number !< Result of the test.
is_number = (self%is_integer(allow_spaces=allow_spaces).or.self%is_real(allow_spaces=allow_spaces))
endfunction is_number