Skip to content

Commit d6d200f

Browse files
committed
deps(scaladoc): update flexmark from 0.42.12 to 0.64.0
This pr updates the flexmark dependencies used in Scaladoc from 0.42.12, which is from 2019, up to the latest release of 0.64.0. This is mainly done to tackle a bunch of CVEs that are attatched to the old versions of flexmark.
1 parent e21ab05 commit d6d200f

13 files changed

+43
-31
lines changed

project/Dependencies.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,15 @@ object Dependencies {
1010
val `jackson-dataformat-yaml` =
1111
"com.fasterxml.jackson.dataformat" % "jackson-dataformat-yaml" % jacksonVersion
1212

13-
private val flexmarkVersion = "0.42.12"
13+
private val flexmarkVersion = "0.64.0"
1414

1515
val flexmarkDeps = Seq(
1616
"com.vladsch.flexmark" % "flexmark" % flexmarkVersion,
17-
"com.vladsch.flexmark" % "flexmark-html-parser" % flexmarkVersion,
17+
"com.vladsch.flexmark" % "flexmark-util-html" % flexmarkVersion,
1818
"com.vladsch.flexmark" % "flexmark-ext-anchorlink" % flexmarkVersion,
1919
"com.vladsch.flexmark" % "flexmark-ext-autolink" % flexmarkVersion,
2020
"com.vladsch.flexmark" % "flexmark-ext-emoji" % flexmarkVersion,
2121
"com.vladsch.flexmark" % "flexmark-ext-gfm-strikethrough" % flexmarkVersion,
22-
"com.vladsch.flexmark" % "flexmark-ext-gfm-tables" % flexmarkVersion,
2322
"com.vladsch.flexmark" % "flexmark-ext-gfm-tasklist" % flexmarkVersion,
2423
"com.vladsch.flexmark" % "flexmark-ext-wikilink" % flexmarkVersion,
2524
"com.vladsch.flexmark" % "flexmark-ext-yaml-front-matter" % flexmarkVersion,

scaladoc/src/dotty/tools/scaladoc/parsers/WikiCodeBlockParser.scala

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@ import com.vladsch.flexmark.parser.core._
66
import com.vladsch.flexmark.parser.block._
77
import com.vladsch.flexmark.util.ast.Block
88
import com.vladsch.flexmark.util.ast.BlockContent
9-
import com.vladsch.flexmark.util.options.DataHolder
9+
import com.vladsch.flexmark.util.data.DataHolder
1010
import com.vladsch.flexmark.util.sequence.BasedSequence
1111
import com.vladsch.flexmark.util.sequence.SegmentedSequence
1212

1313
import java.{util => ju}
1414
import ju.regex.Matcher
1515
import ju.regex.Pattern
16+
import scala.jdk.CollectionConverters._
1617

1718

1819
/** Copied from FencedCodeBlockParser. */
@@ -21,8 +22,11 @@ object WikiCodeBlockParser {
2122
private val CLOSING_FENCE = Pattern.compile("^(\\}{3})(?=[ \t]*$)$")
2223

2324
class Factory extends CustomBlockParserFactory {
25+
override def apply(options: DataHolder): BlockParserFactory =
26+
new WikiCodeBlockParser.BlockFactory(options)
27+
2428
override def getAfterDependents =
25-
new ju.HashSet[Class[_ <: CustomBlockParserFactory]](ju.Arrays.asList(
29+
new ju.HashSet[Class[?]](ju.Arrays.asList(
2630
classOf[BlockQuoteParser.Factory],
2731
classOf[HeadingParser.Factory],
2832
//FencedCodeBlockParser.Factory.class,
@@ -33,7 +37,7 @@ object WikiCodeBlockParser {
3337
))
3438

3539
override def getBeforeDependents =
36-
new ju.HashSet[Class[_ <: CustomBlockParserFactory]](ju.Arrays.asList(
40+
new ju.HashSet[Class[?]](ju.Arrays.asList(
3741
//BlockQuoteParser.Factory.class,
3842
//HeadingParser.Factory.class,
3943
//FencedCodeBlockParser.Factory.class,
@@ -44,9 +48,6 @@ object WikiCodeBlockParser {
4448
))
4549

4650
override def affectsGlobalScope = false
47-
48-
override def create(options: DataHolder) =
49-
new WikiCodeBlockParser.BlockFactory(options)
5051
}
5152

5253
private[WikiCodeBlockParser] class BlockFactory (val options: DataHolder)
@@ -83,7 +84,7 @@ class WikiCodeBlockParser(
8384

8485
final private val block = new FencedCodeBlock()
8586
private var content = new BlockContent
86-
private val codeContentBlock = options.get(Parser.FENCED_CODE_CONTENT_BLOCK)
87+
private val codeContentBlock = Parser.FENCED_CODE_CONTENT_BLOCK.get(options)
8788

8889
def getBlock: Block = block
8990
def getFenceIndent: Int = fenceIndent
@@ -141,7 +142,7 @@ class WikiCodeBlockParser(
141142
codeBlock.setCharsFromContent
142143
block.appendChild(codeBlock)
143144
} else {
144-
val codeBlock = new Text(SegmentedSequence.of(segments))
145+
val codeBlock = new Text(SegmentedSequence.create(segments.asScala.toSeq:_*))
145146
block.appendChild(codeBlock)
146147
}
147148
}

scaladoc/src/dotty/tools/scaladoc/site/FlexmarkSectionWrapper.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ package site
44
import com.vladsch.flexmark.util.{ast => mdu, sequence}
55
import com.vladsch.flexmark.{ast => mda}
66
import com.vladsch.flexmark.formatter.Formatter
7-
import com.vladsch.flexmark.util.options.MutableDataSet
87
import scala.jdk.CollectionConverters._
98

109
import dotty.tools.scaladoc.tasty.comments.markdown.Section

scaladoc/src/dotty/tools/scaladoc/site/common.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ import com.vladsch.flexmark.ext.gfm.tasklist.TaskListExtension
1212
import com.vladsch.flexmark.ext.tables.TablesExtension
1313
import com.vladsch.flexmark.ext.yaml.front.matter.{AbstractYamlFrontMatterVisitor, YamlFrontMatterExtension}
1414
import com.vladsch.flexmark.parser.{Parser, ParserEmulationProfile}
15-
import com.vladsch.flexmark.util.options.{DataHolder, MutableDataSet}
1615
import com.vladsch.flexmark.ext.wikilink.WikiLinkExtension
1716
import com.vladsch.flexmark.formatter.Formatter
1817
import com.vladsch.flexmark.html.HtmlRenderer
1918

2019
import scala.jdk.CollectionConverters._
20+
import com.vladsch.flexmark.util.data.DataHolder
21+
import com.vladsch.flexmark.util.data.MutableDataSet
2122

2223
val docsRootDRI: DRI = DRI(location = "_docs/index", symbolUUID = staticFileSymbolUUID)
2324
val apiPageDRI: DRI = DRI(location = "api/index")

scaladoc/src/dotty/tools/scaladoc/site/templates.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import com.vladsch.flexmark.ext.gfm.tasklist.TaskListExtension
1111
import com.vladsch.flexmark.ext.tables.TablesExtension
1212
import com.vladsch.flexmark.ext.yaml.front.matter.{AbstractYamlFrontMatterVisitor, YamlFrontMatterExtension}
1313
import com.vladsch.flexmark.parser.{Parser, ParserEmulationProfile}
14-
import com.vladsch.flexmark.util.options.{DataHolder, MutableDataSet}
1514
import com.vladsch.flexmark.html.HtmlRenderer
1615
import com.vladsch.flexmark.formatter.Formatter
1716
import liqp.Template

scaladoc/src/dotty/tools/scaladoc/snippets/FlexmarkSnippetProcessor.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ package snippets
44
import com.vladsch.flexmark.util.{ast => mdu, sequence}
55
import com.vladsch.flexmark.{ast => mda}
66
import com.vladsch.flexmark.formatter.Formatter
7-
import com.vladsch.flexmark.util.options.MutableDataSet
87
import scala.jdk.CollectionConverters._
98

109
import dotty.tools.scaladoc.tasty.comments.markdown.ExtendedFencedCodeBlock

scaladoc/src/dotty/tools/scaladoc/tasty/comments/Comments.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import scala.util.Try
77
import com.vladsch.flexmark.util.{ast => mdu, sequence}
88
import com.vladsch.flexmark.{ast => mda}
99
import com.vladsch.flexmark.formatter.Formatter
10-
import com.vladsch.flexmark.util.options.MutableDataSet
1110
import com.vladsch.flexmark.util.sequence.BasedSequence
1211

1312
import scala.quoted._

scaladoc/src/dotty/tools/scaladoc/tasty/comments/MarkdownParser.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,19 @@ import com.vladsch.flexmark.formatter.Formatter
99
import com.vladsch.flexmark.parser.Parser
1010
import com.vladsch.flexmark.util.sequence.CharSubSequence
1111
import com.vladsch.flexmark.parser.ParserEmulationProfile
12-
import com.vladsch.flexmark.ext.gfm.tables.TablesExtension
1312
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension
1413
import com.vladsch.flexmark.ext.gfm.tasklist.TaskListExtension
1514
import com.vladsch.flexmark.ext.emoji.EmojiExtension
1615
import com.vladsch.flexmark.ext.autolink.AutolinkExtension
1716
import com.vladsch.flexmark.ext.anchorlink.AnchorLinkExtension
1817
import com.vladsch.flexmark.ext.yaml.front.matter.YamlFrontMatterExtension
1918
import com.vladsch.flexmark.ext.wikilink.WikiLinkExtension
20-
import com.vladsch.flexmark.util.options.{ DataHolder, MutableDataSet }
21-
import com.vladsch.flexmark.util.builder.Extension
2219

2320
import scala.jdk.CollectionConverters._
21+
import com.vladsch.flexmark.util.misc.Extension
22+
import com.vladsch.flexmark.ext.tables.TablesExtension
23+
import com.vladsch.flexmark.util.data.MutableDataSet
24+
import com.vladsch.flexmark.util.data.DataHolder
2425

2526
object MarkdownParser {
2627

scaladoc/src/dotty/tools/scaladoc/tasty/comments/markdown/DocFlexmarkExtension.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ import com.vladsch.flexmark._
1515

1616
import dotty.tools.scaladoc.snippets._
1717
import scala.jdk.CollectionConverters._
18+
import com.vladsch.flexmark.util.data.MutableDataHolder
19+
import com.vladsch.flexmark.util.data.DataHolder
20+
import com.vladsch.flexmark.html.renderer.NodeRenderingHandler.CustomNodeRenderer
1821

1922
class DocLinkNode(
2023
val target: DocLink,
@@ -40,7 +43,7 @@ class DocFlexmarkParser(resolveLink: String => DocLink) extends Parser.ParserExt
4043
class Factory extends LinkRefProcessorFactory:
4144
override def getBracketNestingLevel(options: DataHolder) = 1
4245
override def getWantExclamationPrefix(options: DataHolder) = false
43-
override def create(doc: Document): LinkRefProcessor =
46+
override def apply(doc: Document): LinkRefProcessor =
4447
new WikiLinkLinkRefProcessor(doc):
4548
override def createNode(nodeChars: BasedSequence): Node =
4649
val chars = nodeChars.toString.substring(2, nodeChars.length - 2)
@@ -75,7 +78,7 @@ case class DocFlexmarkRenderer(renderLink: (DocLink, String) => String)
7578
)
7679

7780
object Factory extends NodeRendererFactory:
78-
override def create(options: DataHolder): NodeRenderer = Render
81+
override def apply(options: DataHolder): NodeRenderer = Render
7982

8083
def extend(htmlRendererBuilder: HtmlRenderer.Builder, tpe: String): Unit =
8184
htmlRendererBuilder.nodeRendererFactory(Factory)

scaladoc/src/dotty/tools/scaladoc/tasty/comments/markdown/SectionRenderingExtension.scala

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,23 @@ package tasty.comments.markdown
33

44
import com.vladsch.flexmark.html.*
55
import com.vladsch.flexmark.html.renderer.*
6+
import com.vladsch.flexmark.html.renderer.NodeRenderingHandler.CustomNodeRenderer
67
import com.vladsch.flexmark.parser.*
78
import com.vladsch.flexmark.ext.wikilink.*
89
import com.vladsch.flexmark.ext.wikilink.internal.WikiLinkLinkRefProcessor
910
import com.vladsch.flexmark.util.ast.*
1011
import com.vladsch.flexmark.util.options.*
1112
import com.vladsch.flexmark.util.sequence.BasedSequence
12-
import com.vladsch.flexmark.util.html.{AttributeImpl, Attributes}
1313
import com.vladsch.flexmark.*
1414
import com.vladsch.flexmark.ast.FencedCodeBlock
1515

1616
import scala.collection.mutable
17+
import com.vladsch.flexmark.util.data.MutableDataHolder
18+
import com.vladsch.flexmark.util.html.Attributes
19+
import com.vladsch.flexmark.util.html.AttributeImpl
20+
import com.vladsch.flexmark.util.data.DataHolder
21+
import com.vladsch.flexmark.util.html.Attribute
22+
import com.vladsch.flexmark.util.html.MutableAttributes
1723

1824

1925
object SectionRenderingExtension extends HtmlRenderer.HtmlRendererExtension:
@@ -30,18 +36,19 @@ object SectionRenderingExtension extends HtmlRenderer.HtmlRendererExtension:
3036
repeatedIds.update((c, header.getText), repeatedIds((c, header.getText)) + 1)
3137
val id = idGenerator.getId(header.getText.append(ifSuffixStr))
3238
val anchor = AnchorLink(s"#$id")
33-
val attributes = Attributes()
3439
val headerClass: String = header.getLevel match
3540
case 1 => "h500"
3641
case 2 => "h500"
3742
case 3 => "h400"
3843
case 4 => "h300"
3944
case _ => "h50"
40-
attributes.addValue(AttributeImpl.of("class", headerClass))
45+
//val a: Attribute = AttributeImpl.of("class", headerClass)
46+
val attributes = MutableAttributes()
47+
attributes.addValue("class", headerClass)
4148
val embeddedAttributes = EmbeddedAttributeProvider.EmbeddedNodeAttributes(header, attributes)
4249
header.prependChild(embeddedAttributes)
4350
header.prependChild(anchor)
44-
html.attr(AttributeImpl.of("id", id)).withAttr.tag("section", false, false, () => {
51+
html.attr("id", id).withAttr.tag("section", false, false, () => {
4552
c.render(header)
4653
body.foreach(c.render)
4754
})
@@ -59,7 +66,8 @@ object SectionRenderingExtension extends HtmlRenderer.HtmlRendererExtension:
5966
)
6067

6168
object Factory extends NodeRendererFactory:
62-
override def create(options: DataHolder): NodeRenderer = Render
69+
override def apply(options: DataHolder): NodeRenderer = Render
70+
6371

6472
def extend(htmlRendererBuilder: HtmlRenderer.Builder, tpe: String): Unit =
6573
htmlRendererBuilder.nodeRendererFactory(Factory)

scaladoc/src/dotty/tools/scaladoc/tasty/comments/markdown/SnippetRenderingExtension.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ import com.vladsch.flexmark.util.options._
1313
import com.vladsch.flexmark.util.sequence.BasedSequence
1414
import com.vladsch.flexmark._
1515
import com.vladsch.flexmark.ast.FencedCodeBlock
16+
import com.vladsch.flexmark.util.data.MutableDataHolder
17+
import com.vladsch.flexmark.html.renderer.NodeRenderingHandler.CustomNodeRenderer
18+
import com.vladsch.flexmark.util.data.DataHolder
1619

1720
/**
1821
* SnippetRenderingExtension is responsible for running an analysis for scala codeblocks in the static documentation/scaladoc comments.
@@ -39,7 +42,7 @@ object SnippetRenderingExtension extends HtmlRenderer.HtmlRendererExtension:
3942
)
4043

4144
object Factory extends NodeRendererFactory:
42-
override def create(options: DataHolder): NodeRenderer = Render
45+
override def apply(options: DataHolder): NodeRenderer = Render
4346

4447
def extend(htmlRendererBuilder: HtmlRenderer.Builder, tpe: String): Unit =
4548
htmlRendererBuilder.nodeRendererFactory(Factory)

scaladoc/test/dotty/tools/scaladoc/site/TemplateFileTests.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ class TemplateFileTests:
202202
content -> "md"
203203
)
204204
)
205+
205206
@Test
206207
def markdown(): Unit =
207208
testTemplate(
@@ -222,10 +223,10 @@ class TemplateFileTests:
222223
ext = "md"
223224
) { t =>
224225
assertEquals(
225-
"""<section id="hello-there">
226-
|<h1 class="h500"><a href="#hello-there" class="anchor"></a>Hello there!</h1>
226+
"""<section id="hello-there2">
227+
|<h1 class="h500"><a href="#hello-there2" class="anchor"></a>Hello there2!</h1>
227228
|</section>""".stripMargin,
228-
t.resolveInner(RenderingContext(Map("msg" -> "there"))).code.trim())
229+
t.resolveInner(RenderingContext(Map("msg" -> "there2"))).code.trim())
229230
}
230231

231232
@Test

scaladoc/test/dotty/tools/scaladoc/snippets/SnippetsE2eTest.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import dotty.tools.dotc.reporting.{ Diagnostic, StoreReporter }
1313
import com.vladsch.flexmark.util.{ast => mdu, sequence}
1414
import com.vladsch.flexmark.{ast => mda}
1515
import com.vladsch.flexmark.formatter.Formatter
16-
import com.vladsch.flexmark.util.options.MutableDataSet
1716
import scala.jdk.CollectionConverters._
1817

1918
import dotty.tools.scaladoc.tasty.comments.markdown.ExtendedFencedCodeBlock

0 commit comments

Comments
 (0)