@ file : Jvm Name (" I fo Reader ") Ċ Ċ package Ġorg . zer ox lab . m om od ict . reader Ċ Ċ import Ġorg . zer ox lab . m om od ict . archive . Info Ċ import Ġjava . io . InputStream Ċ import Ġjava . util . regex . Pattern Ċ Ċ fun Ġis San ity ( info : ĠInfo ): ĠBoolean Ġ{ ĊĠĠĠ Ġ// ĠTodo : Ġreally ĠInfo Ġfile Ġsanity Ġcheck ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ fun Ġread I fo ( inputStream : ĠInputStream ): ĠInfo Ġ{ ĊĠĠĠ Ġval Ġinfo Ġ= ĠInfo () ĊĠĠĠ ĠinputStream . buffered Reader (). use Lines Ġ{ Ġlines Ġ-> Ġlines . forEach Ġ{ Ġparse Line ( it , Ġinfo ) Ġ} Ġ} ĊĠĠĠ Ġreturn Ġinfo Ċ } Ċ Ċ private Ġfun Ġparse Line ( line : ĠString , Ġinfo : ĠInfo ) Ġ{ ĊĠĠĠ Ġval Ġpattern Ġ= ĠPattern . compile (" (. +) =( .* )") ĊĠĠĠ Ġval Ġm Ġ= Ġpattern . matcher ( line ) ĊĠĠĠ Ġif Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġm . group ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġm . group ( 2 ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" author " Ġ-> Ġinfo . author Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" book name " Ġ-> Ġinfo . book Name Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" version " Ġ-> Ġinfo . version Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" website " Ġ-> Ġinfo . web Site Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" email " Ġ-> Ġinfo . email Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" description " Ġ-> Ġinfo . description Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" same type sequence " Ġ-> Ġinfo . same Type Sequence Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" date " Ġ-> Ġinfo . date Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" word count " Ġ-> Ġinfo . word Count Ġ= ĠInteger . parseInt ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sync word count " Ġ-> Ġinfo . sync Word Count Ġ= ĠInteger . parseInt ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" idx filesize " Ġ-> Ġinfo . idx FileSize Ġ= ĠInteger . parseInt ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" idx offsets " Ġ-> Ġinfo . idx Offset Bits Ġ= ĠInteger . parseInt ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ