Position Independent Source Code

esv-parser
Login
: parse-ref ( strref -- Book/Chapter/Verse ) 
    " " str-split :v
    $v vec-popback 
    /* The vector and it's rear element \*/
        ":" str-split splat :verse :chapter
        /* Contains the rest of the elements which make up the book name \*/
        " " str-join :book
<dict> $book "$$$" "" str-replace <<-book $chapter <<-chapter $verse <<-verse ;

: load-esv ( -- esv ) "ESV.txt" open-file-reader :r

<vector> :verses <vector> :refs
[ $r .EOF not ] $r .EOF not [ $r .read-line :line $line "$$$" str-contains [ $refs $line parse-ref $verses len 1 - <<-idx vec-append :refs ] $r .read-line :line $line "$$$" str-contains [ $refs $line parse-ref $verses len 1 - <<-idx vec-append :refs [ $verses $line vec-append :verses ] $verses $line vec-append :verses if ] while ;

load-esv