123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263openBaseincludeBiotk_pipes_unix.PipemoduleLine=Biocaml_base.LinemoduleLines=Biocaml_base.Lineslet(%%)fg=Fn.(flipcompose)fglet(>>=)=bindletlines()=letopenLines.Parserinloopstepinitial_stateletlines_to_strings()=letrecloop()=await()>>=function|None ->return()|Some(l:Line.t)->yield (l:>string)>>=fun()->yield"\n">>=fun()->loop()inloop()letbed_parser()=lines()$$map(Biocaml_base.Bed.item_of_line%%Result.ok_or_failwith)letbed_unparser()=mapBiocaml_base.Bed.line_of_item$$lines_to_strings()letgff3_parser()=lines()$$map(Gff.Item.parse)letgff_unparserversion=map(Biocaml_base.Gff.line_of_itemversion)$$lines_to_strings()lettable_parser()=lines()$$map(Line.split~on:'\t')lettable_unparser()=map(funfields->Line.of_string_unsafe(String.concat~sep:"\t"fields))$$lines_to_strings()letmacs_xls_parser=mapMacs.Xls.parseletmacs_xls_unparser=mapMacs.Xls.unparseletfasta_parser()=loop(funstatedata->matchBiocaml_base.Fasta.Parser.stepstatedatawith|Ok(state,items)->state,items|Error(`Fasta_parser_error(lno,msg))->Core.failwithf"Incorrect FASTA format (L%d): %s"lnomsg())(Biocaml_base.Fasta.Parser.initial_state())