aboutsummaryrefslogtreecommitdiff
path: root/dottydoc
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-07-20 18:27:18 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-08-19 15:37:32 +0200
commit87ecca23c65564a6e182e52dbfe1d2f2c262b596 (patch)
treec8dc9461943c51c4bbb91625a677c0e78485229a /dottydoc
parentc4ec1b6e1178d9508e5ca9cb8b0b18e7c21f7711 (diff)
downloaddotty-87ecca23c65564a6e182e52dbfe1d2f2c262b596.tar.gz
dotty-87ecca23c65564a6e182e52dbfe1d2f2c262b596.tar.bz2
dotty-87ecca23c65564a6e182e52dbfe1d2f2c262b596.zip
Add a SortMembers phase to sort the members instead of doing it when serializing to json
Diffstat (limited to 'dottydoc')
-rw-r--r--dottydoc/jvm/src/dotty/tools/dottydoc/DottyDoc.scala3
-rw-r--r--dottydoc/jvm/src/dotty/tools/dottydoc/core/SortMembersPhase.scala32
-rw-r--r--dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala10
3 files changed, 39 insertions, 6 deletions
diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/DottyDoc.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/DottyDoc.scala
index 8fd51aeea..b5cdcf645 100644
--- a/dottydoc/jvm/src/dotty/tools/dottydoc/DottyDoc.scala
+++ b/dottydoc/jvm/src/dotty/tools/dottydoc/DottyDoc.scala
@@ -30,7 +30,8 @@ class DottyDocCompiler extends Compiler {
List(new DocImplicitsPhase),
List(new DocASTPhase),
List(DocMiniTransformations(new LinkReturnTypes,
- new LinkParamListTypes)),
+ new LinkParamListTypes,
+ new SortMembers)),
List(new PrintPhase)
)
diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/core/SortMembersPhase.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/core/SortMembersPhase.scala
new file mode 100644
index 000000000..c8de532bb
--- /dev/null
+++ b/dottydoc/jvm/src/dotty/tools/dottydoc/core/SortMembersPhase.scala
@@ -0,0 +1,32 @@
+package dotty.tools
+package dottydoc
+package core
+
+import dotc.core.Contexts.Context
+
+import transform.DocMiniPhase
+import model._
+import model.internal._
+
+/** This DocMiniPhase sorts the members of all classes, traits, objects and packages */
+class SortMembers extends DocMiniPhase {
+ override def transformPackage(implicit ctx: Context) = { case p: PackageImpl =>
+ p.copy(members = p.members.sortBy(_.name))
+ }
+
+ override def transformClass(implicit ctx: Context) = { case c: ClassImpl =>
+ c.copy(members = c.members.sortBy(_.name))
+ }
+
+ override def transformCaseClass(implicit ctx: Context) = { case cc: CaseClassImpl =>
+ cc.copy(members = cc.members.sortBy(_.name))
+ }
+
+ override def transformTrait(implicit ctx: Context) = { case t: TraitImpl =>
+ t.copy(members = t.members.sortBy(_.name))
+ }
+
+ override def transformObject(implicit ctx: Context) = { case o: ObjectImpl =>
+ o.copy(members = o.members.sortBy(_.name))
+ }
+}
diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala
index fe23fc976..ea9658b5d 100644
--- a/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala
+++ b/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala
@@ -66,15 +66,15 @@ object json {
private def entToJson(ent: Entity): String = ent match {
case ent: Package =>
- 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"}"""
+ 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"}"""
case ent: Class =>
- 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"}"""
+ 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"}"""
case ent: CaseClass =>
- 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"}"""
+ 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"}"""
case ent: Trait =>
- 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"}"""
+ 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"}"""
case ent: Object =>
- 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"}"""
+ 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"}"""
case ent: Def =>
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"}"""
case ent: Val =>