package Ġde . daniel sch ol z . k arg parser Ċ Ċ import Ġde . daniel sch ol z . k arg parser . Arg Parser . Argument Ċ Ċ class ĠAction Param < T >( override Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġdescription : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġsub Arg Parser : ĠArg Parser < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcallback Before Sub Parameter Parsing : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcallback : ĠArg Parser < T >. () Ġ-> ĠUnit ) Ġ: ĠI Action Param Ġ{ ĊĊĠĠ Ġprivate Ġvar Ġconfig : ĠArg Parser Config Ġ= ĠArg Parser . default Config ĊĊĠĠ Ġoverride Ġfun Ġinit ( arg Parser : ĠArg Parser <* >, Ġconfig : ĠArg Parser Config ) Ġ{ ĊĠĠĠĠĠ Ġthis . config Ġ= Ġconfig ĊĠĠĠĠĠ Ġsub Arg Parser . init ( arg Parser , Ġconfig ) ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġmatches ( arg : ĠString , Ġidx : ĠInt , Ġall Arguments : ĠList < Argument >): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġreturn Ġarg . equals ( calc Name (), Ġconfig . ignore Case ) ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġassign ( arg : ĠString , Ġidx : ĠInt , Ġall Arguments : ĠList < Argument >) Ġ{ ĊĠĠĠĠĠ Ġcallback Before Sub Parameter Parsing () ĊĠĠĠĠĠ Ġsub Arg Parser . parse Args ( all Arguments ) ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġcheck Required () Ġ{ ĊĠĠĠĠĠ Ġsub Arg Parser . check Required () ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġdef err Exec (): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġexec () Ġ{ ĊĠĠĠĠĠ Ġsub Arg Parser . exec () ĊĠĠĠĠĠ Ġsub Arg Parser . callback () ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠ Ġsub Arg Parser . reset () ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġprint out ( args : ĠArray < String >? ): ĠString Ġ{ ĊĠĠĠĠĠ Ġ// Ġif Ġargs Ġare Ġgiven , Ġdo Ġonly Ġprint out Ġif Ġthis Ġaction Ġname Ġis Ġwithin Ġargs Ġotherwise Ġreturn Ġempty ĠString ĊĠĠĠĠĠ Ġif Ġ(! args . isNull OrEmpty () Ġ&& Ġ! args . any Ġ{ Ġit . equals ( calc Name (), Ġconfig . ignore Case ) Ġ}) Ġreturn Ġ"" ĊĊĠĠĠĠĠ Ġval Ġprint out Ġ= Ġsub Arg Parser . print out ( args ) ĊĊĠĠĠĠĠ Ġreturn Ġcalc Name () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( description Ġ!= Ġnull ) Ġ"${ Arg Parser . description Marker }$ description " Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( print out . isEmpty ()) Ġ"" Ġelse Ġ"\ n $ print out ") ĊĠĠ Ġ} ĊĊĠĠ Ġprivate Ġfun Ġcalc Name () Ġ= Ġif Ġ( config . no Prefix For Action Params ) Ġname Ġelse Ġ"${ config . prefix Str }$ name " Ċ Ċ }