@@ -43,7 +43,7 @@ case class WebBasedSourceLink(prefix: String, revision: String, subPath: String)
4343 s " $prefix/ $action/ $finalRevision$subPath/ ${pathToString(path)}$linePart"
4444
4545class SourceLinkParser (revision : Option [String ]) extends ArgParser [SourceLink ]:
46- val KnownProvider = raw " (\w+):\/\/([^\/#]+)\/([^\/#]+)(\/[^\/ #]+)?(#.+)? " .r
46+ val KnownProvider = raw " (\w+):\/\/([^\/#]+)\/([^\/#]+)(\/[^#]+)?(#.+)? " .r
4747 val BrokenKnownProvider = raw " (\w+):\/\/.+ " .r
4848 val ScalaDocPatten = raw " €\{(TPL_NAME|TPL_OWNER|FILE_PATH|FILE_EXT|FILE_LINE|FILE_PATH_EXT)\} " .r
4949 val SupportedScalaDocPatternReplacements = Map (
@@ -63,6 +63,12 @@ class SourceLinkParser(revision: Option[String]) extends ArgParser[SourceLink]:
6363
6464 def parse (string : String ): Either [String , SourceLink ] =
6565 val res = string match
66+ case scaladocSetting if ScalaDocPatten .findFirstIn(scaladocSetting).nonEmpty =>
67+ val all = ScalaDocPatten .findAllIn(scaladocSetting)
68+ val (supported, unsupported) = all.partition(SupportedScalaDocPatternReplacements .contains)
69+ if unsupported.nonEmpty then Left (s " Unsupported patterns from scaladoc format are used: ${unsupported.mkString(" " )}" )
70+ else Right (TemplateSourceLink (supported.foldLeft(string)((template, pattern) =>
71+ template.replace(pattern, SupportedScalaDocPatternReplacements (pattern)))))
6672 case KnownProvider (name, organization, repo, rawRevision, rawSubPath) =>
6773 val subPath = Option (rawSubPath).fold(" " )(" /" + _.drop(1 ))
6874 val pathRev = Option (rawRevision).map(_.drop(1 )).orElse(revision)
@@ -81,12 +87,6 @@ class SourceLinkParser(revision: Option[String]) extends ArgParser[SourceLink]:
8187 Left (s " ' $other' is not a known provider, please provide full source path template. " )
8288 case BrokenKnownProvider (" gitlab" | " github" ) =>
8389 Left (s " Does not match known provider syntax: `<name>://organization/repository` " )
84- case scaladocSetting if ScalaDocPatten .findFirstIn(scaladocSetting).nonEmpty =>
85- val all = ScalaDocPatten .findAllIn(scaladocSetting)
86- val (supported, unsupported) = all.partition(SupportedScalaDocPatternReplacements .contains)
87- if unsupported.nonEmpty then Left (s " Unsupported patterns from scaladoc format are used: ${unsupported.mkString(" " )}" )
88- else Right (TemplateSourceLink (supported.foldLeft(string)((template, pattern) =>
89- template.replace(pattern, SupportedScalaDocPatternReplacements (pattern)))))
9090 case other =>
9191 Left (" Does not match any implemented source link syntax" )
9292 res match {
0 commit comments