2
2
{-# LANGUAGE DeriveFoldable #-}
3
3
{-# LANGUAGE DeriveFunctor #-}
4
4
{-# LANGUAGE DeriveTraversable #-}
5
+ {-# LANGUAGE StandaloneDeriving #-}
5
6
6
7
-- | Cabal-like file AST types: 'Field', 'Section' etc
7
8
--
@@ -51,6 +52,9 @@ data Field ann
51
52
| Section ! (Name ann ) [SectionArg ann ] [Field ann ]
52
53
deriving (Eq , Show , Functor , Foldable , Traversable )
53
54
55
+ -- | @since 3.12.0.0
56
+ deriving instance Ord ann => Ord (Field ann )
57
+
54
58
-- | Section of field name
55
59
fieldName :: Field ann -> Name ann
56
60
fieldName (Field n _) = n
@@ -73,6 +77,9 @@ fieldUniverse f@(Field _ _) = [f]
73
77
data FieldLine ann = FieldLine ! ann ! ByteString
74
78
deriving (Eq , Show , Functor , Foldable , Traversable )
75
79
80
+ -- | @since 3.12.0.0
81
+ deriving instance Ord ann => Ord (FieldLine ann )
82
+
76
83
-- | @since 3.0.0.0
77
84
fieldLineAnn :: FieldLine ann -> ann
78
85
fieldLineAnn (FieldLine ann _) = ann
@@ -91,6 +98,9 @@ data SectionArg ann
91
98
SecArgOther ! ann ! ByteString
92
99
deriving (Eq , Show , Functor , Foldable , Traversable )
93
100
101
+ -- | @since 3.12.0.0
102
+ deriving instance Ord ann => Ord (SectionArg ann )
103
+
94
104
-- | Extract annotation from 'SectionArg'.
95
105
sectionArgAnn :: SectionArg ann -> ann
96
106
sectionArgAnn (SecArgName ann _) = ann
@@ -109,6 +119,9 @@ type FieldName = ByteString
109
119
data Name ann = Name ! ann ! FieldName
110
120
deriving (Eq , Show , Functor , Foldable , Traversable )
111
121
122
+ -- | @since 3.12.0.0
123
+ deriving instance Ord ann => Ord (Name ann )
124
+
112
125
mkName :: ann -> FieldName -> Name ann
113
126
mkName ann bs = Name ann (B. map Char. toLower bs)
114
127
0 commit comments