package Ġsu . le ven etc . auto query Ċ Ċ import Ġsu . le ven etc . auto query . nodes . Node ĊĊ Ċ fun Ġget Full Comp letable Index ( value : ĠString , Ġvariants : ĠList < String >, Ġignore : ĠList < String > Ġ= Ġempty List ()): ĠInt Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġvariants . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ignore . contains ( variants [ i ])) Ġcontinue ĊĠĠĠĠĠĠĠ Ġif Ġ( variants [ i ] Ġ== Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ- 1 Ċ } Ċ Ċ fun Ġget Short est Comp letable ( value : ĠStringBuilder , Ġvariants : ĠList < String >, Ġignore : ĠList < String > Ġ= Ġempty List ()): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġget Short est Comp letable ( value . toString (), Ġvariants , Ġignore ) Ċ } Ċ Ċ fun Ġget Short est Comp letable ( value : ĠString , Ġvariants : ĠList < String >, Ġignore : ĠList < String > Ġ= Ġempty List ()): ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠ Ġvar Ġshortest Ġ= ĠInteger . MAX _ VALUE ĊĠĠĠ Ġfor Ġ( target Ġin Ġvariants ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ignore . contains ( target )) Ġcontinue ĊĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġcount Comp letable ( target , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( length Ġ!= Ġ 0 Ġ&& Ġlength Ġ< Ġshortest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortest Ġ= Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġtarget ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ fun Ġcount Comp letable ( target : ĠString , Ġvalue : ĠString ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( value . isEmpty ()) Ġreturn Ġ 0 ĊĠĠĠ Ġif Ġ( target . isEmpty ()) Ġreturn Ġ 0 ĊĠĠĠ Ġif Ġ( value . length Ġ> Ġtarget . length ) Ġreturn Ġ 0 ĊĊĠĠĠ Ġvar Ġresult Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġvalue . length ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnewValue Char Ġ= Ġtarget [ i ] ĊĠĠĠĠĠĠĠ Ġval Ġvalue Char Ġ= Ġvalue [ i ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( value Char Ġ== ĠnewValue Char ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ++ ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ fun Ġselect To Query ( nodes : ĠList < Node >, ĠcurrentIndex : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder () ĊĠĠĠ Ġval Ġnon Empty Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnodes . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ>= ĠcurrentIndex Ġ+ Ġ 1 ) Ġbreak ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġnodes [ i ] ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġnode . to Query () ĊĠĠĠĠĠĠĠ Ġif Ġ(! name . isEmpty ()) Ġnon Empty . add ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnon Empty . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult . append ( non Empty [ i ]) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġnon Empty . size Ġ- Ġ 1 ) Ġresult . add Char (" Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult . toString () Ċ }