Basically, implement regional flag from Ducktape.
It would be similar to implementation for current scoped flags (or local flags from Ducktape) which are implemented like
|
def withSourceFlag[T]( |
|
selectorFrom: From => T |
|
): TransformerSourceFlagsDsl.OfTransformerDefinition[From, To, Overrides, Flags, ? <: Path] = |
|
macro TransformerDefinitionMacros.withSourceFlagImpl[From, To, Overrides, Flags] |
|
final class Source[SourcePath <: Path, SourceFlags <: TransformerFlags, Flags <: TransformerFlags] |
|
extends TransformerFlags |
|
final class Target[TargetPath <: Path, TargetFlags <: TransformerFlags, Flags <: TransformerFlags] |
|
extends TransformerFlags |
|
def prepareForRecursiveCall(fromPath: Path, toPath: Path)(implicit |
|
ctx: TransformationContext[?, ?] |
|
): TransformerFlags = { |
|
val (immediate, nested) = scopedUpdates.view |
|
.flatMap { case (path, update) => path.drop(fromPath, toPath).map(_ -> update) } |
|
.partition(_._1.path == Path.Root) |
|
immediate.map(_._2).foldLeft(this)((f, u) => u(f)).copy(scopedUpdates = nested.toList) |
|
} |
(separate macro, returning a separate type, handled in Configuration).
Basically, implement
regionalflag from Ducktape.It would be similar to implementation for current scoped flags (or
localflags from Ducktape) which are implemented likechimney/chimney/src/main/scala-2/io/scalaland/chimney/dsl/TransformerDefinition.scala
Lines 394 to 397 in a55f1df
chimney/chimney/src/main/scala/io/scalaland/chimney/internal/runtime/TransformerFlags.scala
Lines 17 to 20 in a55f1df
chimney/chimney/src/main/scala/io/scalaland/chimney/internal/compiletime/derivation/transformer/Configurations.scala
Lines 134 to 141 in a55f1df
(separate macro, returning a separate type, handled in
Configuration).