*: update redefs of `to_json`
[nit.git] / src / model / model_json.nit
index cebc7be..eaa3feb 100644 (file)
@@ -51,8 +51,8 @@ redef class MEntity
 
        # Return `self` as a JsonObject.
        #
-       # By default, every reference to another MEntity is replaced by a pointer
-       # to the MEntity::json_id.
+       # By default, every reference to another MEntity is skipped.
+       # Use full_json for a full representation.
        fun json: JsonObject do
                var obj = new JsonObject
                obj["name"] = name
@@ -68,7 +68,20 @@ redef class MEntity
                return obj
        end
 
-       redef fun to_json do return json.to_json
+       redef fun serialize_to(v) do json.serialize_to(v)
+
+       # Return `self` as a JsonObject with references.
+       #
+       # By default, every reference to another MEntity is replaced by a pointer
+       # to the MEntity::json_id.
+       fun full_json: JsonObject do
+               var obj = json
+               obj["location"] = location
+               return obj
+       end
+
+       # Return `full_json` as a json string.
+       fun to_full_json: String do return full_json.to_json
 end
 
 redef class MDoc
@@ -82,7 +95,7 @@ redef class MDoc
                return obj
        end
 
-       redef fun to_json do return json.to_json
+       redef fun serialize_to(v) do json.serialize_to(v)
 end
 
 redef class Location
@@ -102,18 +115,18 @@ redef class Location
                return obj
        end
 
-       redef fun to_json do return json.to_json
+       redef fun serialize_to(v) do json.serialize_to(v)
 end
 
 redef class MVisibility
        super Jsonable
 
-       redef fun to_json do return to_s.to_json
+       redef fun serialize_to(v) do to_s.serialize_to(v)
 end
 
 redef class MPackage
 
-       redef fun json do
+       redef fun full_json do
                var obj = super
                if ini != null then
                        obj["ini"] = new JsonObject.from(ini.as(not null).to_map)
@@ -128,6 +141,11 @@ redef class MGroup
        redef fun json do
                var obj = super
                obj["is_root"] = is_root
+               return obj
+       end
+
+       redef fun full_json do
+               var obj = super
                obj["mpackage"] = to_mentity_ref(mpackage)
                obj["default_mmodule"] = to_mentity_ref(default_mmodule)
                obj["parent"] = to_mentity_ref(parent)
@@ -138,13 +156,15 @@ redef class MGroup
 end
 
 redef class MModule
-       redef fun json do
+       redef fun full_json do
                var obj = super
-               obj["location"] = location
                obj["mpackage"] = to_mentity_ref(mpackage)
                obj["mgroup"] = to_mentity_ref(mgroup)
                obj["intro_mclasses"] = to_mentity_refs(intro_mclasses)
                obj["mclassdefs"] = to_mentity_refs(mclassdefs)
+               obj["intro_mclassdefs"] = to_mentity_refs(collect_intro_mclassdefs(private_view))
+               obj["redef_mclassdefs"] = to_mentity_refs(collect_redef_mclassdefs(private_view))
+               obj["imports"] = to_mentity_refs(in_importation.direct_greaters)
                return obj
        end
 end
@@ -152,13 +172,20 @@ end
 redef class MClass
        redef fun json do
                var obj = super
-               var arr = new JsonArray
-               for mparameter in mparameters do arr.add mparameter
-               obj["mparameters"] = arr
+               obj["mparameters"] = new JsonArray.from(mparameters)
+               return obj
+       end
+
+       redef fun full_json do
+               var obj = super
                obj["intro"] = to_mentity_ref(intro)
                obj["intro_mmodule"] = to_mentity_ref(intro_mmodule)
                obj["mpackage"] = to_mentity_ref(intro_mmodule.mpackage)
                obj["mclassdefs"] = to_mentity_refs(mclassdefs)
+               obj["all_mproperties"] = to_mentity_refs(collect_accessible_mproperties(private_view))
+               obj["intro_mproperties"] = to_mentity_refs(collect_intro_mproperties(private_view))
+               obj["redef_mproperties"] = to_mentity_refs(collect_redef_mproperties(private_view))
+               obj["parents"] = to_mentity_refs(collect_parents(private_view))
                return obj
        end
 end
@@ -166,25 +193,33 @@ end
 redef class MClassDef
        redef fun json do
                var obj = super
-               obj["location"] = location
                obj["is_intro"] = is_intro
-               var arr = new JsonArray
-               for mparameter in mclass.mparameters do arr.add mparameter
-               obj["mparameters"] = arr
+               obj["mparameters"] = new JsonArray.from(mclass.mparameters)
+               return obj
+       end
+
+       redef fun full_json do
+               var obj = super
                obj["mmodule"] = to_mentity_ref(mmodule)
                obj["mclass"] = to_mentity_ref(mclass)
                obj["mpropdefs"] = to_mentity_refs(mpropdefs)
                obj["intro_mproperties"] = to_mentity_refs(intro_mproperties)
+               obj["intro"] = to_mentity_ref(mclass.intro)
+               obj["mpackage"] = to_mentity_ref(mmodule.mpackage)
+               obj["intro_mpropdefs"] = to_mentity_refs(collect_intro_mpropdefs(private_view))
+               obj["redef_mpropdefs"] = to_mentity_refs(collect_redef_mpropdefs(private_view))
                return obj
        end
 end
 
 redef class MProperty
-       redef fun json do
+       redef fun full_json do
                var obj = super
                obj["intro"] = to_mentity_ref(intro)
                obj["intro_mclassdef"] = to_mentity_ref(intro_mclassdef)
                obj["mpropdefs"] = to_mentity_refs(mpropdefs)
+               obj["intro_mclass"] = to_mentity_ref(intro_mclassdef.mclass)
+               obj["mpackage"] = to_mentity_ref(intro_mclassdef.mmodule.mpackage)
                return obj
        end
 end
@@ -218,10 +253,19 @@ end
 redef class MPropDef
        redef fun json do
                var obj = super
-               obj["location"] = location
                obj["is_intro"] = is_intro
+               return obj
+       end
+
+       redef fun full_json do
+               var obj = super
                obj["mclassdef"] = to_mentity_ref(mclassdef)
                obj["mproperty"] = to_mentity_ref(mproperty)
+               obj["intro"] = to_mentity_ref(mproperty.intro)
+               obj["intro_mclassdef"] = to_mentity_ref(mproperty.intro.mclassdef)
+               obj["mmodule"] = to_mentity_ref(mclassdef.mmodule)
+               obj["mgroup"] = to_mentity_ref(mclassdef.mmodule.mgroup)
+               obj["mpackage"] = to_mentity_ref(mclassdef.mmodule.mpackage)
                return obj
        end
 end