Files
divkit/client/ios/DivKit/Extensions/ArrayExtensions.swift
T
mrcov 577b0187b1 Visualize more div modeling errors
Visualize more div modeling errors

Добавил ошибки/ворнинги при создании блока в дебажное вью. Не стал добавлять в дифф включение дебага в плейграунде. Ворнинги при создании дивной модели, кажется, не получится добавить, не сломав текущее API
2022-11-03 17:00:55 +03:00

32 lines
918 B
Swift

import CommonCore
import LayoutKit
extension Array where Element == Div {
func makeBlocks<T>(
context: DivBlockModelingContext,
overridenWidth: DivOverridenSize? = nil,
overridenHeight: DivOverridenSize? = nil,
mappedBy modificator: (Div, Block) throws -> T
) throws -> [T] {
try iterativeFlatMap { div, index in
let itemContext = modified(context) {
$0.parentPath += index
$0.overridenWidth = overridenWidth
$0.overridenHeight = overridenHeight
}
let block: Block
do {
block = try div.value.makeBlock(context: itemContext)
} catch {
context.addError(level: .error, message: "Failed to create block: \(error)")
return nil
}
return try modificator(div, block)
}
}
func makeBlocks(context: DivBlockModelingContext) throws -> [Block] {
try makeBlocks(context: context, mappedBy: { $1 })
}
}