Skip to content

Commit 87ecca2

Browse files
committed
Add a SortMembers phase to sort the members instead of doing it when serializing to json
1 parent c4ec1b6 commit 87ecca2

File tree

3 files changed

+39
-6
lines changed

3 files changed

+39
-6
lines changed

dottydoc/jvm/src/dotty/tools/dottydoc/DottyDoc.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ class DottyDocCompiler extends Compiler {
3030
List(new DocImplicitsPhase),
3131
List(new DocASTPhase),
3232
List(DocMiniTransformations(new LinkReturnTypes,
33-
new LinkParamListTypes)),
33+
new LinkParamListTypes,
34+
new SortMembers)),
3435
List(new PrintPhase)
3536
)
3637

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package dotty.tools
2+
package dottydoc
3+
package core
4+
5+
import dotc.core.Contexts.Context
6+
7+
import transform.DocMiniPhase
8+
import model._
9+
import model.internal._
10+
11+
/** This DocMiniPhase sorts the members of all classes, traits, objects and packages */
12+
class SortMembers extends DocMiniPhase {
13+
override def transformPackage(implicit ctx: Context) = { case p: PackageImpl =>
14+
p.copy(members = p.members.sortBy(_.name))
15+
}
16+
17+
override def transformClass(implicit ctx: Context) = { case c: ClassImpl =>
18+
c.copy(members = c.members.sortBy(_.name))
19+
}
20+
21+
override def transformCaseClass(implicit ctx: Context) = { case cc: CaseClassImpl =>
22+
cc.copy(members = cc.members.sortBy(_.name))
23+
}
24+
25+
override def transformTrait(implicit ctx: Context) = { case t: TraitImpl =>
26+
t.copy(members = t.members.sortBy(_.name))
27+
}
28+
29+
override def transformObject(implicit ctx: Context) = { case o: ObjectImpl =>
30+
o.copy(members = o.members.sortBy(_.name))
31+
}
32+
}

dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,15 @@ object json {
6666

6767
private def entToJson(ent: Entity): String = ent match {
6868
case ent: Package =>
69-
s"""{"name":${ent.name.json},"members":${ent.members.sortBy(_.name).map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"package"}"""
69+
s"""{"name":${ent.name.json},"members":${ent.members.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"package"}"""
7070
case ent: Class =>
71-
s"""{"name":${ent.name.json},"members":${ent.members.sortBy(_.name).map(_.json).mkString("[",",","]")},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"typeParams":${ent.typeParams.map(_.json).mkString("[",",","]")},"superTypes":${ent.superTypes.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"class"}"""
71+
s"""{"name":${ent.name.json},"members":${ent.members.map(_.json).mkString("[",",","]")},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"typeParams":${ent.typeParams.map(_.json).mkString("[",",","]")},"superTypes":${ent.superTypes.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"class"}"""
7272
case ent: CaseClass =>
73-
s"""{"name":${ent.name.json},"members":${ent.members.sortBy(_.name).map(_.json).mkString("[",",","]")},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"typeParams":${ent.typeParams.map(_.json).mkString("[",",","]")},"superTypes":${ent.superTypes.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"case class"}"""
73+
s"""{"name":${ent.name.json},"members":${ent.members.map(_.json).mkString("[",",","]")},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"typeParams":${ent.typeParams.map(_.json).mkString("[",",","]")},"superTypes":${ent.superTypes.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"case class"}"""
7474
case ent: Trait =>
75-
s"""{"name":${ent.name.json},"members":${ent.members.sortBy(_.name).map(_.json).mkString("[",",","]")},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"typeParams":${ent.typeParams.map(_.json).mkString("[",",","]")},"superTypes":${ent.superTypes.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"trait"}"""
75+
s"""{"name":${ent.name.json},"members":${ent.members.map(_.json).mkString("[",",","]")},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"typeParams":${ent.typeParams.map(_.json).mkString("[",",","]")},"superTypes":${ent.superTypes.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"trait"}"""
7676
case ent: Object =>
77-
s"""{"name":${ent.name.json},"members":${ent.members.sortBy(_.name).map(_.json).mkString("[",",","]")},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"superTypes":${ent.superTypes.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"object"}"""
77+
s"""{"name":${ent.name.json},"members":${ent.members.map(_.json).mkString("[",",","]")},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"superTypes":${ent.superTypes.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"object"}"""
7878
case ent: Def =>
7979
s"""{"name":${ent.name.json},"modifiers":${ent.modifiers.map(_.json).mkString("[",",","]")},"path":${ent.path.map(_.json).mkString("[",",","]")},"returnValue":${ent.returnValue.json},"typeParams":${ent.typeParams.map(_.json).mkString("[",",","]")},"paramLists":${ent.paramLists.map(_.json).mkString("[",",","]")},${ent.comment.map(_.json).fold("")(cmt => s""""comment":$cmt,""")}"kind":"def"}"""
8080
case ent: Val =>

0 commit comments

Comments
 (0)