package Ġde . fl ap do od le . sq lex tract . io Ċ Ċ import Ġde . fl ap do od le . sq lex tract . file types . Attributes Ċ import Ġde . fl ap do od le . sq lex tract . file types . Tom l Ċ import Ġde . fl ap do od le . sq lex tract . file types . Yaml Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Standard Open Option Ċ Ċ object ĠIO Ġ{ ĊĠĠĠ Ġfun Ġread ( source : ĠPath ): ĠAttributes . Node Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠString ( Files . read All Bytes ( source ), ĠChar sets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġsource . fileName . toString () ĊĠĠĠĠĠĠĠ Ġval Ġconfig As Tree Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileName . endsWith (". toml ") Ġ-> ĠTom l . as Tree ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileName . endsWith (". yaml ") Ġ-> ĠYaml . as Tree ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" unsupported Ġconfig Ġfile : Ġ$ source ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig As Tree ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġread ( source : ĠPath , Ġtransformation : Ġ( Attributes . Node ) Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransformation ( read ( source )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite ( target : ĠPath , Ġcontent : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFiles . write ( target , Ġcontent . toByteArray ( Charsets . UTF _ 8 ), ĠStandard Open Option . WRITE , ĠStandard Open Option . CREATE , ĠStandard Open Option . TRUNC ATE _ EXIST ING ) ĊĠĠĠ Ġ} Ċ }