/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 1 9 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . uch uh imo . kon f . source . properties Ċ Ċ import Ġcom . uch uh imo . kon f . Config Ċ import Ġcom . uch uh imo . kon f . source . Writer Ċ import Ġcom . uch uh imo . kon f . source . base . to Flat Map Ċ import Ġjava . io . Filter OutputStream Ċ import Ġjava . io . OutputStream Ċ import Ġjava . util . Properties Ċ Ċ /** Ċ Ġ* ĠWriter Ġfor Ġproperties Ġsource . Ċ Ġ*/ Ċ class ĠProperties Writer ( val Ġconfig : ĠConfig ) Ġ: ĠWriter Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġto Writer ( writer : Ġjava . io . Writer ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNo Comment Properties (). apply Ġ{ Ġput All ( config . to Flat Map ()) Ġ}. store ( writer , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto OutputStream ( output Stream : ĠOutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNo Comment Properties (). apply Ġ{ Ġput All ( config . to Flat Map ()) Ġ}. store ( output Stream , Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠNo Comment Properties Ġ: ĠProperties () Ġ{ ĊĠĠĠ Ġprivate Ġclass ĠStrip First Line Stream ( out : ĠOutputStream ) Ġ: ĠFilter OutputStream ( out ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġfirst Line Seen Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( b : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Line Seen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . write ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( b Ġ== Ġ'\ n '. toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Line Seen Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠStrip First Line Writer ( writer : Ġjava . io . Writer ) Ġ: Ġjava . io . Filter Writer ( writer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( c buf : ĠChar Array , Ġoff : ĠInt , Ġlen : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġc buf . indexOf First Ġ{ Ġit Ġ== Ġ'\ n ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . write ( c buf , Ġoffset Ġ+ Ġ 1 , Ġlen Ġ- Ġoffset Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstore ( out : ĠOutputStream , Ġcomments : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . store ( Strip First Line Stream ( out ), Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstore ( writer : Ġjava . io . Writer , Ġcomments : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . store ( Strip First Line Writer ( writer ), Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġwriter Ġfor Ġproperties Ġsource . Ċ Ġ*/ Ċ val ĠConfig . to Properties : ĠWriter Ġget () Ġ= ĠProperties Writer ( this ) Ċ