aboutsummaryrefslogtreecommitdiff
path: root/stage2/plugins/GeneratedSections.scala
diff options
context:
space:
mode:
Diffstat (limited to 'stage2/plugins/GeneratedSections.scala')
-rw-r--r--stage2/plugins/GeneratedSections.scala52
1 files changed, 23 insertions, 29 deletions
diff --git a/stage2/plugins/GeneratedSections.scala b/stage2/plugins/GeneratedSections.scala
index dc065cf..aedcaff 100644
--- a/stage2/plugins/GeneratedSections.scala
+++ b/stage2/plugins/GeneratedSections.scala
@@ -1,33 +1,27 @@
package cbt
import java.nio.file.Files._
-trait GeneratedSections extends BaseBuild{
- def generatedSectionStartMarker( name: String ) = s"AUTO GENERATED SECTION BEGIN: $name "
- def generatedSectionEndMarker( name: String ) = s"AUTO GENERATED SECTION END: $name "
- assert(
- generatedSectionStartMarker("foo").endsWith(" "),
- "generatedSectionStartMarker needs to end with a space character"
- )
- assert(
- generatedSectionEndMarker("foo").endsWith(" "),
- "generatedSectionEndMarker needs to end with a space character"
- )
-
- def replacements: Seq[(String, String)]
-
- def generate = {
- def replaceSections(subject: String, sections: Seq[(String, String)]): String = {
- 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)
- }
-
- val updated = lib.transformFiles( sourceFiles, replaceSections( _, replacements ) )
-
- logger.log("generated-sections","Updated:" + updated.map(_ ++ "\n").mkString)
+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)
}
}