@@ -10,6 +10,8 @@ import org.jetbrains.dokka.pages.RootPageNode
10
10
import org .jetbrains .dokka .plugability .DokkaContext
11
11
12
12
import scala .collection .JavaConverters ._
13
+ import java .nio .file .Paths
14
+ import java .nio .file .Path
13
15
14
16
class StaticSiteLocationProviderFactory (private val ctx : DokkaContext ) extends LocationProviderFactory :
15
17
override def getLocationProvider (pageNode : RootPageNode ): LocationProvider =
@@ -24,11 +26,23 @@ class StaticSiteLocationProvider(ctx: DokkaContext, pageNode: RootPageNode)
24
26
val rawFilePath = context.root.toPath.relativize(page.template.file.toPath)
25
27
val pageName = page.template.file.getName
26
28
val dotIndex = pageName.lastIndexOf('.' )
27
- val newPath =
28
- if (dotIndex < 0 ) rawFilePath.resolve(" index" )
29
- else rawFilePath.resolveSibling(pageName.substring(0 , dotIndex))
30
29
31
- newPath.iterator.asScala.map(_.toString).toList.asJava
30
+ if (isBlogPostPath(rawFilePath)) {
31
+ val regex = raw " (\d*)-(\d*)-(\d*)-(.*)\..* " .r
32
+ val blogPostPath = pageName.toString match {
33
+ case regex(year, month, day, name) =>
34
+ rawFilePath.getParent.resolveSibling(Paths .get(year, month, day, name))
35
+ case _ =>
36
+ println(s " Blog file at path: $rawFilePath doesn't match desired format. " )
37
+ rawFilePath.resolveSibling(pageName.substring(0 , dotIndex))
38
+ }
39
+ blogPostPath.iterator.asScala.map(_.toString).toList.asJava
40
+ } else {
41
+ val newPath =
42
+ if (dotIndex < 0 ) rawFilePath.resolve(" index" )
43
+ else rawFilePath.resolveSibling(pageName.substring(0 , dotIndex))
44
+ newPath.iterator.asScala.map(_.toString).toList.asJava
45
+ }
32
46
}
33
47
34
48
case page : ContentPage if page.getDri.contains(docsDRI) =>
@@ -43,6 +57,8 @@ class StaticSiteLocationProvider(ctx: DokkaContext, pageNode: RootPageNode)
43
57
case _ =>
44
58
jpath
45
59
60
+ private def isBlogPostPath (path : Path ): Boolean = path.startsWith(Paths .get(" blog" ," _posts" ))
61
+
46
62
override val getPathsIndex : JMap [PageNode , JList [String ]] =
47
63
super .getPathsIndex.asScala.mapValuesInPlace(updatePageEntry).asJava
48
64
0 commit comments