Go to the first, previous, next, last section, table of contents.


queryForFloat

Function: queryForFloat { what min was max -> result }
file: 10-C-utils.t
package: muf
status: alpha

This function prompts the user for a float value via @$s.queryOutput and then reads it via @$s.queryInput. It loops until it obtains a value greater than or equal to min and less than or equal to max and then returns that value.

It is currently implemented as:

: queryForFloat { $ $ $ $ -> $ }   -> max -> was -> min -> what
    was min >= if
        [ "The '%s' was %g.\n" what was
        | ]print @$s.queryOutput writeStream
    fi
    do{
        [ "Please enter new float value for '%s':\n" what
        | ]print @$s.queryOutput writeStream

        @$s.queryInput readStreamLine pop trimString -> string
        string "%f" unprint[ |pop -> result ]pop

        result min < if
            [ "Sorry, the '%s' must be at least %g.\n" what min
            | ]print @$s.queryOutput writeStream
            continue    
        fi

        result max > if
            [ "Sorry, the '%s' must be at most %g.\n" what max
            | ]print @$s.queryOutput writeStream
            continue    
        fi

        result return
    }
;
'queryForFloat export


Go to the first, previous, next, last section, table of contents.