Skip to content

Commit

Permalink
suggest-changes
Browse files Browse the repository at this point in the history
  • Loading branch information
golden-skipper03 committed Oct 16, 2024
1 parent 0a3c8e4 commit caf41e3
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ object ProtosearchScaladocPlugin extends AutoPlugin {
}
.flatMap(Stream.emits)

val buildIndex = scaladocInfos.compile.toList.map(ScaladocIndexer.indexBldr.fromList)
val buildIndex = scaladocInfos.compile.toList.map(ScaladocIndexer.indexBuilder.fromList)

val projName = name.value
val targetDir = target.value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import scala.meta._
import scala.meta.contrib._
import scala.meta.contrib.DocToken._
import scala.meta.tokens.Token.Comment
import scala.util.matching.Regex

case class ScaladocInfo(
name: String,
Expand All @@ -37,8 +36,6 @@ object ParseScaladoc {
def parseAndExtractInfo(source: String): List[ScaladocInfo] = {
val parsed: Source = source.parse[Source].get

val urlRegex: Regex = """https?://[^\s]+""".r

// Extract comments and their positions
val comments = parsed.tokens.collect {
case comment: Comment if comment.syntax.startsWith("/**") =>
Expand All @@ -47,7 +44,7 @@ object ParseScaladoc {

val functions = parsed.collect {
case defn @ Defn.Def.After_4_7_3(_, name, paramss, retType, _) =>
val (commentTokens, rawComment): (List[DocToken], String) = comments
val (commentTokens, _): (List[DocToken], String) = comments
.filter { case (start, _) => start < defn.pos.start }
.toList
.sortBy(-_._1)
Expand Down Expand Up @@ -75,17 +72,25 @@ object ParseScaladoc {
s"$name: $desc"
}

val params = paramss.flatMap { case Member.ParamClauseGroup(_, params) =>
val allParams = paramss.flatMap { case Member.ParamClauseGroup(_, params) =>
params.flatMap { case clause: Member.ParamClause =>
clause.values.collect {
case param: Term.Param
if param.default.isEmpty && !param.mods.exists(_.is[Mod.Implicit]) =>
val commentDescription: String = paramsComm
.find(_.startsWith(param.name.value))
.getOrElse(param.name.value)
val declaredType: String = param.decltpe.map(_.toString).getOrElse("Unknown Type")
clause.values.collect { case param: Term.Param =>
val commentDescription: String = paramsComm
.find(_.startsWith(param.name.value))
.getOrElse(param.name.value)
val declaredType: String = param.decltpe.map(_.toString).getOrElse("Unknown Type")

val isOptional = param.default.isDefined

val isImplicit = param.mods.exists(_.is[Mod.Implicit])

if (isOptional) {
s"$commentDescription: $declaredType (Optional)"
} else if (isImplicit) {
s"$commentDescription: $declaredType (Implicit)"
} else {
s"$commentDescription: $declaredType"
}
}
}
}
Expand Down Expand Up @@ -117,31 +122,7 @@ object ParseScaladoc {
mod.toString
}

val allParams = paramss.flatMap { case Member.ParamClauseGroup(_, params) =>
params.flatMap { case clause: Member.ParamClause =>
clause.values.collect { case param: Term.Param =>
val commentDescription: String = paramsComm
.find(_.startsWith(param.name.value))
.getOrElse(param.name.value)
val declaredType: String = param.decltpe.map(_.toString).getOrElse("Unknown Type")

val isOptional = param.default.isDefined

val isImplicit = param.mods.exists(_.is[Mod.Implicit])

if (isOptional) {
s"$commentDescription: $declaredType (Optional)"
} else if (isImplicit) {
s"$commentDescription: $declaredType (Implicit)"
} else {
s"$commentDescription: $declaredType"
}
}
}
}

val combinedParams = typeParams ++ allParams

val returnType = retType match {
case Some(tpe) => tpe.syntax
case None => "Unit"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,10 @@ package pink.cozydev.protosearch.scaladoc

import pink.cozydev.protosearch.{Field, IndexBuilder}
import pink.cozydev.protosearch.analysis.Analyzer
import pink.cozydev.protosearch.MultiIndex

object ScaladocIndexer {
val analyzer = Analyzer.default.withLowerCasing
val indexBldr = IndexBuilder.of[ScaladocInfo](
val indexBuilder = IndexBuilder.of[ScaladocInfo](
(Field("functionName", analyzer, stored = true, indexed = true, positions = true), _.name),
(
Field("description", analyzer, stored = true, indexed = true, positions = true),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ final case class IndexBuilder[A] private (

def searchScaladoc(source: String, queries: List[String]): List[ScaladocInfo] = {
val scaladocInfoList = ParseScaladoc.parseAndExtractInfo(source)
val index = ScaladocIndexer.indexBldr.fromList(scaladocInfoList)
val index = ScaladocIndexer.indexBuilder.fromList(scaladocInfoList)
def search(q: String): List[ScaladocInfo] = {
val searchResults = index.search(q)
searchResults.fold(_ => Nil, hits => hits.map(h => scaladocInfoList.toList(h.id)))
Expand All @@ -139,7 +139,11 @@ final case class IndexBuilder[A] private (
"sum",
"This function sums two integers.",
List("""@deprecated("Use add instead", "1.0")"""),
List("T: The type parameter", "a: The first parameter: Int", "b: The second parameter: Int (Optional)"),
List(
"T: The type parameter",
"a: The first parameter: Int",
"b: The second parameter: Int (Optional)",
),
"Int",
17,
18,
Expand Down Expand Up @@ -199,7 +203,11 @@ final case class IndexBuilder[A] private (
"sum",
"This function sums two integers.",
List("""@deprecated("Use add instead", "1.0")"""),
List("T: The type parameter", "a: The first parameter: Int", "b: The second parameter: Int (Optional)"),
List(
"T: The type parameter",
"a: The first parameter: Int",
"b: The second parameter: Int (Optional)",
),
"Int",
8,
9,
Expand Down

0 comments on commit caf41e3

Please sign in to comment.