package Ġdev . no hus . aut ok on fig . utils Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠMar cin ĠW is ni owski Ġ( No hus ) Ġon Ġ 0 6 / 0 1 / 2 0 2 0 . Ċ Ġ*/ Ċ Ċ class ĠCommandLine Parser Ġ{ ĊĊĠĠĠ Ġfun Ġparse ( args : ĠArray < String >): ĠMap < String , ĠString ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠString ?> () ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġargs . toList () ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ<= Ġarguments . last Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ arguments [ index ]. drop While Ġ{ Ġit Ġ== Ġ'-' Ġ}] Ġ= ĠgetValue ( arguments , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= ĠgetNext Index ( arguments , Ġindex ) Ġ?: Ġbreak ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetNext Index ( args : ĠList < String >, Ġfrom : ĠInt ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġargs . drop ( from Ġ+ Ġ 1 ). indexOf First Ġ{ Ġit . startsWith ("- ") Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( index Ġ!= Ġ- 1 ) Ġindex Ġ+ Ġfrom Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetValue ( args : ĠList < String >, Ġindex : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġargs . drop ( index Ġ+ Ġ 1 ). take While Ġ{ Ġ! it . startsWith ("- ") Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( values . isNotEmpty ()) Ġvalues [ 0 ] ĊĠĠĠĠĠĠĠ Ġelse Ġnull ĊĠĠĠ Ġ} Ċ } Ċ