Forum OpenACS Q&A: Re: proc like ns_getcsv for char delimited files?

Collapse
Posted by Torben Brosten on

Thanks Alfred! I should check out the tcllib.

Thanks, Tom! Upvar was one of those strange reserved words, now is a friend =)

proc ec_gets_char_delimited_line {fileId varName {delimiter "\t"} } {
    upvar $varName split_line
    if {[eof $fileId]} {
        set return_val -1
        set split_line [list]
    } else {
        gets $fileId line
        set split_line [split $line $delimiter]
        set return_val [llength $split_line]
    }
    return $return_val
}

translating to ad_proc..

ad_proc ec_gets_char_delimited_line {
    fileId
    varName
    {delimiter "\t"}
} {
    Reads and parses a line of data from a character delimited file 
    similar to ns_getscsv. Defaults to delimit tabs
} {
    upvar $varName split_line
    if {[eof $fileId]} {
        set return_val -1
        set split_line [list]
    } else {
        gets $fileId line
        set split_line [split $line $delimiter]
        set return_val [llength $split_line]
    }
    return $return_val
}