package Ġcom . github . ni uh f 0 4 5 2 . ex ile . yaml Ċ Ċ import Ġcom . char les k orn . k aml .* Ċ import Ġcom . github . ni uh f 0 4 5 2 . ex ile . config . source . File Parser Ċ import Ġjava . io . InputStream Ċ Ċ class ĠYaml File Parser Ġ: ĠFile Parser Ġ{ ĊĠĠĠ Ġoverride Ġval Ġext Names : ĠList < String > Ġ= ĠlistOf (" yaml ", Ġ" yml ") ĊĊĠĠĠ Ġoverride Ġfun Ġparse ( input : ĠInputStream ): ĠIterable < Pair < String , ĠString >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠYaml Parser ( input . read All Bytes (). toString ( Charsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠYaml Node Reader ( parser ) ĊĠĠĠĠĠĠĠ Ġval Ġroot Node Ġ= Ġreader . read () ĊĠĠĠĠĠĠĠ Ġparser . ensure EndOf Stream Reached () ĊĠĠĠĠĠĠĠ Ġwhen Ġ( root Node ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠYaml List , Ġis ĠYaml Map Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" The Ġroot Ġof ĠYAML Ġshould Ġbe Ġlist Ġor Ġmap ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= Ġmutable ListOf < Pair < String , ĠString >>() ĊĠĠĠĠĠĠĠ Ġparse ( out , Ġ"", Ġroot Node ) ĊĠĠĠĠĠĠĠ Ġreturn Ġout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse ( out : ĠMutable List < Pair < String , ĠString >>, Ġpath : ĠString , Ġnode : ĠYaml Node ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( node ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠYaml Scalar Ġ-> Ġout . add ( path Ġto Ġnode . content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠYaml Null Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠYaml List Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . items . forEach Indexed Ġ{ Ġi , Ġn Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġif Ġ( path . isEmpty ()) Ġi . toString () Ġelse Ġ"$ path .$ i " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse ( out , Ġp , Ġn ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠYaml Map Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . entries . forEach Ġ{ Ġ( k , Ġv ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Ġ! is ĠYaml Scalar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Unsupported Ġkey Ġtype : Ġ$ k ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġif Ġ( path . isEmpty ()) Ġk . content Ġelse Ġ"$ path .${ k . content }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse ( out , Ġp , Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }