fortplot_string_utils.f90 Source File


Source Code

module fortplot_string_utils
    !! Core string utilities with minimal dependencies
    implicit none
    private
    public :: to_lowercase, parse_boolean_env

contains

    function to_lowercase(input) result(output)
        !! Convert string to lowercase (ASCII A-Z)
        character(len=*), intent(in) :: input
        character(len=len(input)) :: output
        integer :: i, c
        do i = 1, len(input)
            c = iachar(input(i:i))
            if (c >= 65 .and. c <= 90) then
                output(i:i) = achar(c + 32)
            else
                output(i:i) = input(i:i)
            end if
        end do
    end function to_lowercase

    logical function parse_boolean_env(env_value) result(val)
        !! Case-insensitive parse for common boolean-ish strings.
        character(len=*), intent(in) :: env_value
        character(len=len_trim(env_value)) :: lower
        val = .false.
        if (len_trim(env_value) == 0) return
        lower = to_lowercase(trim(env_value))
        select case (lower)
        case ('1', 'true', 'yes', 'on', 't', 'y')
            val = .true.
        case ('0', 'false', 'no', 'off', 'f', 'n')
            val = .false.
        end select
    end function parse_boolean_env

end module fortplot_string_utils