blob: aedcaffb8363e57ac58396b2d62ca8f10fc7c4c6 (
plain) (
tree)
|
|
package cbt
import java.nio.file.Files._
object replaceSections{
def apply(
subject: String,
sections: Seq[(String, String)],
generatedSectionBeginMarker: String => String = name => s"AUTO GENERATED SECTION BEGIN: $name ",
generatedSectionEndMarker: String => String = name => s"AUTO GENERATED SECTION END: $name "
): String = {
assert(
generatedSectionBeginMarker("foo").endsWith(" "),
"generatedSectionStartMarker needs to end with a space character"
)
assert(
generatedSectionEndMarker("foo").endsWith(" "),
"generatedSectionEndMarker needs to end with a space character"
)
sections.headOption.map{
case (name, replacement) =>
replaceSections(
s"(?s)(\n[^\n]*AUTO GENERATED SECTION BEGIN: $name [^\n]*\n).*(\n[^\n]*AUTO GENERATED SECTION END: $name [^\n]*\n)"
.r.replaceAllIn( subject, m => m.group(1) ++ replacement ++ m.group(2) ),
sections.tail
)
}.getOrElse(subject)
}
}
|