package Ġorg . jetbrains . dok ka . base . transformers . pages . mer ger Ċ Ċ import Ġorg . jetbrains . dok ka . model . dfs Ċ import Ġorg . jetbrains . dok ka . pages .* Ċ import Ġorg . jetbrains . dok ka . utilities . D ok ka Logger Ċ Ċ class ĠSame MethodName Page Mer ger Strategy ( val Ġlogger : ĠD ok ka Logger ) Ġ: ĠPage Mer ger Strategy Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġtry Merge ( pages : ĠList < Page Node >, Ġpath : ĠList < String >): ĠList < Page Node > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmembers Ġ= Ġpages . filter Is Instance < Member Page Node >(). take If Ġ{ Ġit . isNotEmpty () Ġ} Ġ?: Ġreturn Ġpages ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġpages . first (). name . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pages . any Ġ{ Ġpage Ġ-> Ġpage . name Ġ!= Ġit Ġ}) Ġ{ Ġ// ĠIs Ġthis Ġeven Ġpossible ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Page Ġnames Ġfor Ġ$ it Ġdo Ġnot Ġmatch !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġd ri Ġ= Ġmembers . flatMap Ġ{ Ġit . d ri Ġ}. toSet () ĊĊĊĠĠĠĠĠĠĠ Ġval Ġmerged Ġ= ĠMember Page Node ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd ri Ġ= Ġd ri , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ= Ġmembers . flatMap Ġ{ Ġit . children Ġ}. distinct (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġsqu ash Div erg ent Instances ( members ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġembedded Resources Ġ= Ġmembers . flatMap Ġ{ Ġit . embedded Resources Ġ}. distinct (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument able Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( pages Ġ- Ġmembers ) Ġ+ ĠlistOf ( merged ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsqu ash Div erg ent Instances ( nodes : ĠList < Member Page Node >): ĠContent Node Ġ= ĊĠĠĠĠĠĠĠ Ġnodes . map Ġ{ Ġit . content Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce Ġ{ Ġacc , Ġnode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġacc . map Transform < Content Div erg ent Group , ĠContent Node > Ġ{ Ġg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . copy ( children Ġ= Ġ( g . children Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( node . dfs Ġ{ Ġit Ġis ĠContent Div erg ent Group Ġ&& Ġit . group ID Ġ== Ġg . group ID Ġ} Ġas ? ĠContent Div erg ent Group ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . children ?. single () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). filter NotNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ