@@ -43,7 +43,7 @@ case class WebBasedSourceLink(prefix: String, revision: String, subPath: String)
43
43
s " $prefix/ $action/ $finalRevision$subPath/ ${pathToString(path)}$linePart"
44
44
45
45
class SourceLinkParser (revision : Option [String ]) extends ArgParser [SourceLink ]:
46
- val KnownProvider = raw " (\w+):\/\/([^\/#]+)\/([^\/#]+)(\/[^\/ #]+)?(#.+)? " .r
46
+ val KnownProvider = raw " (\w+):\/\/([^\/#]+)\/([^\/#]+)(\/[^#]+)?(#.+)? " .r
47
47
val BrokenKnownProvider = raw " (\w+):\/\/.+ " .r
48
48
val ScalaDocPatten = raw " €\{(TPL_NAME|TPL_OWNER|FILE_PATH|FILE_EXT|FILE_LINE|FILE_PATH_EXT)\} " .r
49
49
val SupportedScalaDocPatternReplacements = Map (
@@ -63,6 +63,12 @@ class SourceLinkParser(revision: Option[String]) extends ArgParser[SourceLink]:
63
63
64
64
def parse (string : String ): Either [String , SourceLink ] =
65
65
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)))))
66
72
case KnownProvider (name, organization, repo, rawRevision, rawSubPath) =>
67
73
val subPath = Option (rawSubPath).fold(" " )(" /" + _.drop(1 ))
68
74
val pathRev = Option (rawRevision).map(_.drop(1 )).orElse(revision)
@@ -81,12 +87,6 @@ class SourceLinkParser(revision: Option[String]) extends ArgParser[SourceLink]:
81
87
Left (s " ' $other' is not a known provider, please provide full source path template. " )
82
88
case BrokenKnownProvider (" gitlab" | " github" ) =>
83
89
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)))))
90
90
case other =>
91
91
Left (" Does not match any implemented source link syntax" )
92
92
res match {
0 commit comments