Skip to content

Commit 07dc736

Browse files
committed
remove documents excluded from output earlier
1 parent 3988537 commit 07dc736

File tree

2 files changed

+31
-11
lines changed

2 files changed

+31
-11
lines changed

io/src/main/scala/laika/io/internal/runtime/ParserRuntime.scala

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import laika.ast.Path.Root
2525
import laika.ast.*
2626
import laika.api.config.Config.IncludeMap
2727
import laika.api.config.{ ConfigBuilder, ConfigParser }
28-
import laika.config.LinkValidation
28+
import laika.config.{ LinkValidation, TargetFormats }
2929
import laika.io.api.TreeParser
3030
import laika.io.internal.config.IncludeHandler
3131
import laika.io.internal.config.IncludeHandler.RequestedInclude
@@ -122,17 +122,31 @@ private[io] object ParserRuntime {
122122
}.combineAll.toEither.leftMap(es => ParserErrors(es.toList.toSet))
123123

124124
def rewriteTree(root: DocumentTreeRoot): Either[InvalidDocuments, ParsedTree[F]] = {
125-
val parsedTree = ParsedTree(root)
125+
126+
def filterExcluded(tree: DocumentTree): DocumentTree = {
127+
val newContent = tree.content.flatMap {
128+
case tree: DocumentTree => Some(filterExcluded(tree))
129+
case doc: Document if doc.config.get[TargetFormats].exists(_ == TargetFormats.None) =>
130+
None
131+
case doc: Document => Some(doc)
132+
}
133+
tree.replaceContent(newContent)
134+
}
135+
136+
val parsedTree = ParsedTree(root)
126137
.addStaticDocuments(inputs.binaryInputs)
127138
.modifyRoot(_.addStaticDocuments(inputs.providedPaths))
128-
val finalTree = for {
139+
val finalTree = for {
129140
phase1 <- parsedTree.root.rewrite(
130141
op.config.rewriteRulesFor(parsedTree.root, RewritePhase.Build)
131142
)
132143
result <- phase1.rewrite(op.config.rewriteRulesFor(phase1, RewritePhase.Resolve))
133144
} yield result
145+
val filteredTree = finalTree.map { root =>
146+
root.modifyTree(filterExcluded)
147+
}
134148
InvalidDocuments
135-
.from(finalTree, op.config.messageFilters.failOn)
149+
.from(filteredTree, op.config.messageFilters.failOn)
136150
.map(tree => parsedTree.modifyRoot(_ => tree))
137151
}
138152

io/src/test/scala/laika/directive/std/IncludeDirectiveSpec.scala

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,36 +38,42 @@ class IncludeDirectiveSpec extends CatsEffectSuite with InputBuilder {
3838
.withTheme(Theme.empty)
3939
.build
4040

41+
private val excludeFromOutputHOCON =
42+
"""|{%
43+
|laika.targetFormats = []
44+
|%}
45+
|""".stripMargin
46+
4147
def inputs(docUnderTest: String): Seq[(Path, String)] = {
4248
Seq(
4349
Root / "dir1" / "doc-1.md" -> "# Ref",
4450
Root / "dir1" / "doc-2.md" -> "# Ref",
4551
Root / "dir2" / "doc-3.md" -> "# Ref",
4652
Root / "dir2" / "doc-4.md" -> docUnderTest,
4753
Root / "inc" / "inc-1.md" -> "aaa (${?_.key}) bbb",
48-
Root / "inc" / "inc-2.md" ->
54+
Root / "inc" / "inc-2.md" -> (excludeFromOutputHOCON +
4955
"""aaa (${?_.key}) bbb
5056
|
51-
|${?_.embeddedBody}
57+
|${_.embeddedBody}
5258
|
5359
|ccc
54-
""".stripMargin,
60+
""".stripMargin),
5561
Root / "inc" / "header.md" ->
5662
"""# Header
5763
|
5864
|aaa (${?_.key}) bbb
5965
|""".stripMargin,
60-
Root / "inc" / "header-embed.md" ->
66+
Root / "inc" / "header-embed.md" -> (excludeFromOutputHOCON +
6167
"""# Header
6268
|
6369
|aaa (${?_.key}) bbb
6470
|
65-
|${?_.embeddedBody}
71+
|${_.embeddedBody}
6672
|
6773
|ccc
68-
|""".stripMargin,
74+
|""".stripMargin),
6975
Root / "inc" / "inc-1.template.html" -> "aaa (${?_.key}) bbb",
70-
Root / "inc" / "inc-2.template.html" -> """aaa (${?_.key}) bbb <${?_.embeddedBody}> ccc"""
76+
Root / "inc" / "inc-2.template.html" -> """aaa (${?_.key}) bbb <${_.embeddedBody}> ccc"""
7177
)
7278
}
7379

0 commit comments

Comments
 (0)