ab8506c5100f101785452b5047259ec4f17ef436Daniel CalegariDescription : pretty printing for CSMOF
ab8506c5100f101785452b5047259ec4f17ef436Daniel CalegariCopyright : (c) Daniel Calegari Universidad de la Republica, Uruguay 2013
ab8506c5100f101785452b5047259ec4f17ef436Daniel CalegariLicense : GPLv2 or higher, see LICENSE.txt
ab8506c5100f101785452b5047259ec4f17ef436Daniel CalegariMaintainer : dcalegar@fing.edu.uy
ab8506c5100f101785452b5047259ec4f17ef436Daniel CalegariStability : provisional
ab8506c5100f101785452b5047259ec4f17ef436Daniel CalegariPortability : portable
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty Metamodel where
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder pretty (Metamodel nam ele mode) =
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder text "metamodel" <+> text nam <+> lbrace
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder $++$ space <+> space <+> foldr (($++$) . pretty) empty ele
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari $++$ foldr (($+$) . pretty) empty mode
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show Metamodel where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty NamedElement where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (NamedElement _ _ nes) = pretty nes
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show NamedElement where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty TypeOrTypedElement where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (TType typ) = pretty typ
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (TTypedElement _) = empty -- Do not show properties at top level but inside classes
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show TypeOrTypedElement where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty Type where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (Type _ sub) = pretty sub
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show Type where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty DataTypeOrClass where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (DDataType dat) = pretty dat
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (DClass cla) = pretty cla
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show DataTypeOrClass where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
1a38107941725211e7c3f051f7a8f5e12199f03acmaederinstance Pretty Datatype where
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder pretty (Datatype sup) =
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder text "datatype" <+> text (namedElementName (typeSuper sup))
1a38107941725211e7c3f051f7a8f5e12199f03acmaederinstance Show Datatype where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty Class where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (Class sup isa supC own) =
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder text (if isa then "abstract class" else "class")
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari <+> text (namedElementName (typeSuper sup))
d658c27a8e2e75f11e83548631f759ced4ab7e74Daniel Calegari <+> (case supC of
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari _ : _ -> text "extends"
d658c27a8e2e75f11e83548631f759ced4ab7e74Daniel Calegari <+> foldr ( (<+>) . text . namedElementName . typeSuper . classSuperType) empty supC
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder $+$ space <+> space <+> foldr (($+$) . pretty) empty own
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show Class where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty TypedElement where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (TypedElement _ _ sub) = pretty sub
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show TypedElement where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroederinstance Pretty Property where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (Property sup mul opp _) =
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari text "property" <+> text (namedElementName (typedElementSuper sup))
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari <> pretty mul
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari <+> colon <+> text (namedElementName (typeSuper (typedElementType sup)))
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari <+> (case opp of
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari Just n -> text "oppositeOf" <+> text (namedElementName (typedElementSuper (propertySuper n)))
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari Nothing -> empty)
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Show Property where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty MultiplicityElement where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (MultiplicityElement low upp _) =
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder lbrack <> pretty low <> comma
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder <> (if upp == -1
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari then text "*"
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari else pretty upp)
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show MultiplicityElement where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegari-- Model part of CSMOF
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty Model where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (Model mon obj lin mode) =
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder text "model" <+> text mon
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari <+> text "conformsTo" <+> text (metamodelName mode) <+> lbrace
06d2fb58d16cd67fae8c7fe40818ae7f93449929Daniel Calegari $++$ space <+> space <+> foldr (($+$) . pretty) empty obj
06d2fb58d16cd67fae8c7fe40818ae7f93449929Daniel Calegari $++$ space <+> space <+> foldr (($+$) . pretty) empty lin
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show Model where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty Object where
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder pretty (Object on ot _) =
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari text "object " <> text on
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari <+> colon <+> text (namedElementName (typeSuper ot))
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show Object where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegariinstance Pretty Link where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari pretty (Link lt sou tar _) =
d658c27a8e2e75f11e83548631f759ced4ab7e74Daniel Calegari text "link" <+> text (namedElementName (typedElementSuper (propertySuper lt)))
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari <> lparen <> text (objectName sou) <> comma <> text (objectName tar) <> rparen $+$ empty
ab8506c5100f101785452b5047259ec4f17ef436Daniel Calegariinstance Show Link where
acc049a844d19fb294ce7f68742390dee87447dcDaniel Calegari show m = show $ pretty m