blob: aedcaffb8363e57ac58396b2d62ca8f10fc7c4c6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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)
}
}
|