package Ġrs . d us k . tools . definition . item . pipe . page Ċ Ċ import Ġrs . d us k . tools . Pipeline Ċ import Ġrs . d us k . tools . wiki . model . Wiki Ċ import Ġrs . d us k . tools . wiki . model . Wiki Page Ċ Ċ class ĠOff line Page Collector ( val Ġwiki : ĠWiki , Ġinfo boxes : ĠList < String >, Ġval Ġfunction : Ġ( Page Collector , ĠWiki Page ) Ġ-> ĠUnit ) Ġ: ĠPipeline . Modifier < Page Collector > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpage Names Ġ= Ġmutable Map Of < String , ĠWiki Page >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġwiki . pages . forEach Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġpage . revision . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo boxes . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( text . contains ( it , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend Name ( it , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġappend Name ( title : ĠString , Ġpage : ĠWiki Page ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġpage . get Template Map ( title ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ( map [" name "] Ġas ? ĠString )?. toLowerCase () ĊĠĠĠĠĠĠĠ Ġval Ġredirected Page Ġ= Ġif Ġ( page . redirect ed ) Ġpage . get Redirect ( wiki ) Ġ?: Ġpage Ġelse Ġpage ĊĠĠĠĠĠĠĠ Ġif ( name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Names . put If Absent ( name , Ġredirected Page ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpage Names . put If Absent ( page . title . toLowerCase (), Ġredirected Page ) ĊĠĠĠĠĠĠĠ Ġpage Names . put If Absent ( redirect ed Page . title . toLowerCase (), Ġredirected Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Page ( rs 3 : ĠWiki Page ?, Ġrs 2 : ĠWiki Page ?, Ġname : ĠString ): ĠWiki Page ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( rs 3 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Names [ rs 3 . title . toLowerCase ()] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( rs 2 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Names [ rs 2 . title . toLowerCase ()] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Names [ name . toLowerCase ()] ĊĠĠĠĠĠĠĠ Ġif Ġ( page Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpage ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwiki . get Exact Page OrNull ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmodify ( content : ĠPage Collector ): ĠPage Collector Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ(_, Ġname , Ġpage , Ġ_, Ġrs 3 , Ġ_) Ġ= Ġcontent ĊĠĠĠĠĠĠĠ Ġval Ġnew Page Ġ= Ġget Page ( rs 3 , Ġpage , Ġname ) ĊĠĠĠĠĠĠĠ Ġif Ġ( new Page Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( new Page . redirect ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġredirected Ġ= Ġnew Page . get Redirect ( wiki ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( redirect ed Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . invoke ( content , Ġredirected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontent . copy ( rs 2 Ġ= Ġredirected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . invoke ( content , Ġnew Page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent ĊĠĠĠ Ġ} Ċ }