USING: arrays io io.files kernel math parser strings system tools.test words namespaces make io.encodings.utf8 io.encodings.binary sequences splitting hashtables assocs peg peg.ebnf peg.search ; IN: indexes : db-path ( -- path ) "resource:work/indexes/db" ; : load-db ( -- contents ) db-path utf8 file-contents ; : index-lines ( -- lines ) load-db string-lines [ empty? not ] filter ; : indices ( -- inds ) index-lines [ 6 head ] map ; : names ( -- names ) index-lines [ 7 tail ] map ; : i-n# ( -- hash ) indices names zip >hashtable ; ! second part : src-path ( -- path ) "resource:work/indexes/kolo" ; : load-src ( -- path ) src-path utf8 file-contents ; : replaced ( -- ) load-src [EBNF Result = ([0-9][0-9][0-9][0-9][0-9][0-9] => [[ i-n# value-at ]] | (!([0-9][0-9][0-9][0-9][0-9][0-9][0-9]) .)+)* EBNF] replace ;