on master help sign in
Get rid of List.NonEmpty usage
bf25326Evan Czaplicki
builder/src/Reporting/Exit/Compile.hs+27−5
@@ -8,8 +8,7 @@ module Reporting.Exit.Compile
8 where
8 where
9
9
10
10
11−import Data.List.NonEmpty (NonEmpty((:|)))
12−import qualified Data.List.NonEmpty as NonEmpty
11+import qualified Data.List as List
13import qualified Data.Text as Text
12import qualified Data.Text as Text
14import qualified Data.Time.Clock as Time
13import qualified Data.Time.Clock as Time
15import qualified Text.PrettyPrint.ANSI.Leijen as P
14import qualified Text.PrettyPrint.ANSI.Leijen as P
@@ -48,9 +47,10 @@ toJson (Exit name path _ source errors) =
48
47
49toDoc :: Exit -> [Exit] -> P.Doc
48toDoc :: Exit -> [Exit] -> P.Doc
50toDoc e es =
49toDoc e es =
51− case NonEmpty.sortWith _time (e :| es) of
50+ let
52− exit :| exits ->
51+ (exit, exits) = sortByTime e es
52+ in
53− P.vcat (toDocHelp exit exits)
53+ P.vcat (toDocHelp exit exits)
54
54
55
55
56toDocHelp :: Exit -> [Exit] -> [P.Doc]
56toDocHelp :: Exit -> [Exit] -> [P.Doc]
@@ -81,3 +81,25 @@ separator beforeName afterName =
81 , P.empty
81 , P.empty
82 , P.empty
82 , P.empty
83 ]
83 ]
84+
85+
86+
87+-- SORT BY TIME
88+
89+
90+sortByTime :: Exit -> [Exit] -> (Exit, [Exit])
91+sortByTime exit exits =
92+ case List.sortBy timeCompare exits of
93+ [] ->
94+ (exit, [])
95+
96+ e:es ->
97+ if _time exit < _time e then
98+ (exit, e:es)
99+ else
100+ (e, List.insertBy timeCompare exit es)
101+
102+
103+timeCompare :: Exit -> Exit -> Ordering
104+timeCompare e1 e2 =
105+ compare (_time e1) (_time e2)