@@ -2,7 +2,7 @@ package dotty.dokka
22
33import java .net .URL
44import scala .util .matching ._
5- import scala .util .Try
5+ import scala .util .{ Try , Success , Failure }
66
77case class ExternalDocLink (
88 originRegexes : List [Regex ],
@@ -18,25 +18,23 @@ enum DocumentationKind:
1818 case Scala3doc extends DocumentationKind
1919
2020object ExternalDocLink :
21- def parse (mapping : String )(using CompilerContext ): Option [ExternalDocLink ] =
22- def fail (msg : String ) =
23- report.warning(s " Unable to parocess external mapping $mapping. $msg" )
24- None
21+ def parse (mapping : String ): Either [String , ExternalDocLink ] =
22+ def fail (msg : String ) = Left (s " Unable to process external mapping $mapping. $msg" )
2523
26- def tryParse [T ](descr : String )(op : => T ): Option [ T ] = try Some (op) catch
27- case e : RuntimeException =>
28- report.warn (s " Unable to parse $descr" , e )
29- None
24+ def tryParse [T ](descr : String )(op : => T ): Either [ String , T ] = Try (op) match {
25+ case Success (v) => Right (v)
26+ case Failure (e) => fail (s " Unable to parse $descr. Exception $e occured " )
27+ }
3028
3129 def parsePackageList (elements : List [String ]) = elements match
32- case List (urlStr) => tryParse(" packageList" )(Option (URL (urlStr)))
33- case Nil => Some (None )
30+ case List (urlStr) => tryParse(" packageList" )(Some (URL (urlStr)))
31+ case Nil => Right (None )
3432 case other => fail(s " Provided multiple package lists: $other" )
3533
3634 def doctoolByName (name : String ) = name match
37- case " javadoc" => Some (DocumentationKind .Javadoc )
38- case " scaladoc" => Some (DocumentationKind .Scaladoc )
39- case " scala3doc" => Some (DocumentationKind .Scala3doc )
35+ case " javadoc" => Right (DocumentationKind .Javadoc )
36+ case " scaladoc" => Right (DocumentationKind .Scaladoc )
37+ case " scala3doc" => Right (DocumentationKind .Scala3doc )
4038 case other => fail(s " Unknown doctool: $other" )
4139
4240
@@ -48,10 +46,10 @@ object ExternalDocLink:
4846 doctool <- doctoolByName(docToolStr)
4947 packageList <- parsePackageList(rest)
5048 } yield ExternalDocLink (
51- List (regex),
52- url,
53- doctool,
54- packageList
55- )
49+ List (regex),
50+ url,
51+ doctool,
52+ packageList
53+ )
5654 case _ =>
5755 fail(" Accepted format: `regexStr::docToolStr::urlStr[::rest]`" )
0 commit comments