in fapi-client/src/main/scala/com/gu/facia/api/FAPI.scala [243:263]
def applyDefaultBoostLevelsAndGroups[T](groupsConfig: Option[GroupsConfig], collectionType: String, contents: List[T], getBoostLevel: T => BoostLevel, setBoostLevel: (T, BoostLevel) => T, setGroup: (T, String) => T): List[T] = {
val contentsWithDefaultBoosts = for {
gc <- groupsConfig
boostsConfig <- boostsConfigFor(collectionType, gc.config)
} yield {
val (result, _) = boostsConfig.foldLeft((List.empty[T], contents)) { case ((processed, unprocessed), groupConfig) =>
val (currentGroupContents, remaining) = unprocessed.splitAt(groupConfig.maxItems)
val currentGroupContentsWithBoostsAndGroupNumber = currentGroupContents.map(content => {
val contentWithGroupNumber = setGroup(content, groupConfig.group)
if (groupConfig.allowedBoosts.contains(getBoostLevel(contentWithGroupNumber)))
contentWithGroupNumber
else
setBoostLevel(contentWithGroupNumber, groupConfig.default)
})
(processed ++ currentGroupContentsWithBoostsAndGroupNumber, remaining)
}
result
}
contentsWithDefaultBoosts.getOrElse(contents)
}