@@ -90,7 +90,7 @@ class StaticSiteContext(
90
90
val indexFiles = from.listFiles { file => file.getName == " index.md" || file.getName == " index.html" }
91
91
indexes match
92
92
case Nil => emptyTemplate(from, from.getName)
93
- case Seq (loadedTemplate) => loadedTemplate.templateFile.copy(file = from)
93
+ case Seq (loadedTemplate) => loadedTemplate.templateFile
94
94
case _ =>
95
95
// TODO (https://github.com/lampepfl/scaladoc/issues/238): provide proper error handling
96
96
val msg = s " ERROR: Multiple index pages for $from found in ${indexes.map(_.file)}"
@@ -145,9 +145,9 @@ class StaticSiteContext(
145
145
case t : TemplateName .YamlDefined => t
146
146
case _ : TemplateName .FilenameDefined => TemplateName .SidebarDefined (title)
147
147
case t : TemplateName .SidebarDefined => t // should never reach this path
148
- LoadedTemplate (template.copy(settings = template.settings + (" title" -> newTitle.name), file = file, title = newTitle), children, file)
148
+ LoadedTemplate (template.copy(settings = template.settings + (" title" -> newTitle.name), title = newTitle), children, file)
149
149
case None =>
150
- LoadedTemplate (template.copy(settings = template.settings, file = file ), children, file)
150
+ LoadedTemplate (template.copy(settings = template.settings), children, file)
151
151
152
152
case Sidebar .Category (optionTitle, optionIndexPath, nested) =>
153
153
optionIndexPath match
@@ -157,7 +157,7 @@ class StaticSiteContext(
157
157
val title = optionTitle match
158
158
case Some (t) => t
159
159
case None => " index"
160
- val fakeFile = new File ( new File ( root, " docs" ) , title)
160
+ val fakeFile = Paths .get( root.toString , " docs" , title, " index.html " ).toFile
161
161
LoadedTemplate (
162
162
args.defaultTemplate.fold(emptyTemplate(fakeFile, title))(layouts(_).copy(title = TemplateName .FilenameDefined (title))),
163
163
nested.map(loadSidebarContent),
@@ -169,22 +169,25 @@ class StaticSiteContext(
169
169
dir(" docs" ).flatMap(_.listFiles()).flatMap(loadTemplate(_, isBlog = false ))
170
170
++ dir(" blog" ).flatMap(loadTemplate(_, isBlog = true ))
171
171
172
- def driForLink (template : TemplateFile , link : String ): Seq [DRI ] =
172
+ def driForLink (loadedTemplateFile : File , link : String ): Seq [DRI ] =
173
173
val pathsDri : Option [Seq [DRI ]] = Try {
174
174
val baseFile =
175
- if link.startsWith(" /" ) then root.toPath.resolve(link.drop(1 ))
176
- else template.file.toPath.getParent().resolve(link).normalize()
175
+ if
176
+ link.startsWith(" /" ) then root.toPath.resolve(link.drop(1 ))
177
+ else
178
+ val path = loadedTemplateFile.toPath
179
+ (if Files .isDirectory(path) then path else path.getParent).resolve(link).normalize
177
180
178
181
val fileName = baseFile.getFileName.toString
179
182
val baseFileName = if fileName.endsWith(" .md" )
180
183
then fileName.stripSuffix(" .md" )
181
184
else fileName.stripSuffix(" .html" )
182
-
183
- Seq (
185
+ (Seq (
184
186
Some (baseFile.resolveSibling(baseFileName + " .html" )),
185
- Some (baseFile.resolveSibling(baseFileName + " .md" )),
187
+ Some (baseFile.resolveSibling(baseFileName + " .md" ))
188
+ ).flatten.filter(Files .exists(_)) ++ Seq (
186
189
Option .when(baseFileName == " index" )(baseFile.getParent)
187
- ).flatten.filter( Files .exists(_) ).map(driFor)
190
+ ).flatten).map(driFor)
188
191
}.toOption.filter(_.nonEmpty)
189
192
pathsDri.getOrElse(memberLinkResolver(link).toList)
190
193
0 commit comments