@@ -67,11 +67,11 @@ instance Pretty Type1 where
67
67
instance Pretty Type2 where
68
68
pretty (T2Value v) = pretty v
69
69
pretty (T2Name n mg) = pretty n <> pretty mg
70
- pretty (T2Group g) = align $ enclose " (" " )" $ pretty g
71
- pretty (T2Map g) = align $ enclose " { " " } " $ pretty g
72
- pretty (T2Array g) = brackets $ pretty g
70
+ pretty (T2Group g) = enclose " ( " " )" . align $ pretty g
71
+ pretty (T2Map g) = prettyGroup AsMap g
72
+ pretty (T2Array g) = prettyGroup AsArray g
73
73
pretty (T2Unwrapped n mg) = " ~" <+> pretty n <> pretty mg
74
- pretty (T2Enum g) = " &" <+> enclose " ( " " ) " (pretty g)
74
+ pretty (T2Enum g) = " &" <+> prettyGroup AsGroup g
75
75
pretty (T2EnumRef g mg) = " &" <+> pretty g <> pretty mg
76
76
pretty (T2Tag minor t) = " #6" <> min' <> enclose " (" " )" (pretty t)
77
77
where
@@ -90,12 +90,22 @@ instance Pretty OccurrenceIndicator where
90
90
pretty OIOneOrMore = " +"
91
91
pretty (OIBounded ml mh) = pretty ml <> " *" <> pretty mh
92
92
93
- instance Pretty Group where
94
- pretty ( Group ( NE. toList -> xs)) =
95
- align . vsep . punctuate " // " $ fmap prettyGrpChoice xs
96
- where
97
- prettyGrpChoice = sep . punctuate " , " . fmap pretty
93
+ -- | Control how to render a group
94
+ data GroupRender =
95
+ AsMap
96
+ | AsArray
97
+ | AsGroup
98
98
99
+ prettyGroup :: GroupRender -> Group -> Doc ann
100
+ prettyGroup gr (Group (NE. toList -> xs)) =
101
+ align $ encloseSep lp rp " // " (fmap prettyGrpChoice xs)
102
+ where
103
+ prettyGrpChoice = encloseSep mempty mempty " , " . fmap pretty
104
+ (lp, rp) = case gr of
105
+ AsMap -> (" {" , " }" )
106
+ AsArray -> (" [" , " ]" )
107
+ AsGroup -> (" (" ," )" )
108
+
99
109
instance Pretty GroupEntry where
100
110
pretty (GEType moi mmk t) =
101
111
hsep $
@@ -106,7 +116,7 @@ instance Pretty GroupEntry where
106
116
<> pretty mga
107
117
pretty (GEGroup moi g) =
108
118
hsep $
109
- catMaybes [fmap pretty moi, Just $ enclose " ( " " ) " (pretty g) ]
119
+ catMaybes [fmap pretty moi, Just $ prettyGroup AsGroup g ]
110
120
111
121
instance Pretty MemberKey where
112
122
pretty (MKType t1) = pretty t1 <+> " =>"
0 commit comments