@import java.util.Locale @import de.smederee.html.ToDoTextCssMapping._ @import de.smederee.hub._ @(baseUri: Uri, lang: LanguageCode = LanguageCode("en") )(actionBaseUri: Uri, csrf: Option[CsrfToken] = None, goBackUri: Option[Uri] = None, linkToTicketService: Option[Uri] = None, title: Option[String] = None, user: Option[Account] )(fileContent: List[String], listing: IndexedSeq[(os.RelPath, os.StatInfo)], repositoryBaseUri: Uri, vcsRepository: VcsRepository, vcsRepositoryBranches: List[(Username, VcsRepositoryName)], ) @main(baseUri, lang)()(csrf, title, user) { @defining(lang.toLocale) { implicit locale =>

~@vcsRepository.owner.name/@vcsRepository.name

@showRepositoryMenu(baseUri, linkToTicketService)(repositoryBaseUri.addSegment("files").some, vcsRepositoryBranches.size, repositoryBaseUri, user, vcsRepository)
@{actionBaseUri.path.segments.map(_.decoded()).mkString("/").replaceFirst("/files", "")}
@if(fileContent.isEmpty) { @for(link <- goBackUri) { } @for(entry <- listing) { }
Name Size Modified
@icon(baseUri)("chevron-up") ..
@if(entry._2.isDir) { @icon(baseUri)("folder") } else { @icon(baseUri)("file") } @{entry._1} @{entry._2.size} @{entry._2.mtime}
} else { @for(link <- goBackUri) { @icon(baseUri)("chevron-up") .. } @if(actionBaseUri.path.toString.toLowerCase(java.util.Locale.ROOT).endsWith(".md")) {
@for(content <- fileContent) { @Html(content) }
} else { @for(tuple <- fileContent.zipWithIndex) { @defining(tuple._1) { content => @defining(tuple._2) { lineNumber => @defining(isToDoItem.findFirstMatchIn(content)) { matchedItem => @if(matchedItem.nonEmpty) { @for(todoItem <- matchedItem) { @defining(todoCssClasses(Option(todoItem.group(4)).getOrElse(todoItem.group(2)).toLowerCase(Locale.ROOT))) { cssClass => } } } else { } } } } }
@lineNumber @content
} }
} }