package Ġcom . alg ol ia . search . dsl . ranking Ċ Ċ import Ġcom . alg ol ia . search . dsl . DSL Ċ import Ġcom . alg ol ia . search . dsl . DSL Parameters Ċ import Ġcom . alg ol ia . search . model . Attribute Ċ import Ġcom . alg ol ia . search . model . settings . Ranking Criterion Ċ Ċ /** Ċ Ġ* ĠDSL Ġfor Ġbuilding Ġa Ġ[ List ] Ġof Ġ[ Ranking Criterion ]. Ċ Ġ*/ Ċ @ Suppress (" PropertyName ") Ċ @ DSL Parameters Ċ public Ġclass ĠDSL Ranking ( ĊĠĠĠ Ġprivate Ġval Ġranking Criteria : ĠMutable List < Ranking Criterion > Ġ= Ġmutable ListOf () Ċ ) Ġ{ ĊĊĠĠĠ Ġpublic Ġenum Ġclass ĠModifier Ġ{ ĊĠĠĠĠĠĠĠ ĠAsc , ĊĠĠĠĠĠĠĠ ĠDesc ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval ĠAsc : ĠModifier Ġ= ĠModifier . Asc ĊĠĠĠ Ġpublic Ġval ĠDesc : ĠModifier Ġ= ĠModifier . Desc ĊĠĠĠ Ġpublic Ġval ĠTy po : ĠRank ing Criterion . Ty po Ġ= ĠRank ing Criterion . Ty po ĊĠĠĠ Ġpublic Ġval ĠGeo : ĠRank ing Criterion . Geo Ġ= ĠRank ing Criterion . Geo ĊĠĠĠ Ġpublic Ġval ĠWord s : ĠRank ing Criterion . Words Ġ= ĠRank ing Criterion . Words ĊĠĠĠ Ġpublic Ġval ĠFilters : ĠRank ing Criterion . Filters Ġ= ĠRank ing Criterion . Filters ĊĠĠĠ Ġpublic Ġval ĠPro x imity : ĠRank ing Criterion . Prox imity Ġ= ĠRank ing Criterion . Prox imity ĊĠĠĠ Ġpublic Ġval ĠAttribute : ĠRank ing Criterion . Attribute Ġ= ĠRank ing Criterion . Attribute ĊĠĠĠ Ġpublic Ġval ĠExact : ĠRank ing Criterion . Exact Ġ= ĠRank ing Criterion . Exact ĊĠĠĠ Ġpublic Ġval ĠCustom : ĠRank ing Criterion . Custom Ġ= ĠRank ing Criterion . Custom ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġ[ this ] Ġto Ġ[ ranking Criteria ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun ĠRank ing Criterion . unary Plus () Ġ{ ĊĠĠĠĠĠĠĠ Ġranking Criteria Ġ+= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConvenience Ġmethod . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun ĠModifier . invoke ( attribute : ĠString ): ĠRank ing Criterion Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinvoke ( Attribute ( attribute )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġ[ Ranking Criterion ] Ġwith Ġ[ this ] Ġ[ Modifier ] Ġto Ġbe Ġapplied Ġon Ġ[ attribute ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun ĠModifier . invoke ( attribute : ĠAttribute ): ĠRank ing Criterion Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . Asc Ġ-> ĠRank ing Criterion . Asc ( attribute ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . Desc Ġ-> ĠRank ing Criterion . Desc ( attribute ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ: ĠDSL < DSL Ranking , ĠList < Ranking Criterion >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġinvoke ( block : ĠDSL Ranking . () Ġ-> ĠUnit ): ĠList < Ranking Criterion > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDSL Ranking (). apply ( block ). ranking Criteria ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ