summaryrefslogtreecommitdiff
path: root/src/WWW/Colors.hs
diff options
context:
space:
mode:
authorChris Wells <chris@mathematicaster.org>2025-02-03 16:24:25 -0600
committerChris Wells <chris@mathematicaster.org>2025-02-03 16:24:25 -0600
commitf2a3c23634c7a5f8c23f68f24ff5dde95d472e16 (patch)
treed60ac3cb766075a4d16a496a90f2726ef7b4d132 /src/WWW/Colors.hs
parentc9cc52175073c5e690ea7eb30aad23d0d1776435 (diff)
downloadassets-f2a3c23634c7a5f8c23f68f24ff5dde95d472e16.tar
assets-f2a3c23634c7a5f8c23f68f24ff5dde95d472e16.tar.gz
assets-f2a3c23634c7a5f8c23f68f24ff5dde95d472e16.tar.bz2
assets-f2a3c23634c7a5f8c23f68f24ff5dde95d472e16.tar.lz
assets-f2a3c23634c7a5f8c23f68f24ff5dde95d472e16.tar.xz
assets-f2a3c23634c7a5f8c23f68f24ff5dde95d472e16.tar.zst
assets-f2a3c23634c7a5f8c23f68f24ff5dde95d472e16.zip
Working on assets
Diffstat (limited to 'src/WWW/Colors.hs')
-rw-r--r--src/WWW/Colors.hs106
1 files changed, 75 insertions, 31 deletions
diff --git a/src/WWW/Colors.hs b/src/WWW/Colors.hs
index a266414..eff09f4 100644
--- a/src/WWW/Colors.hs
+++ b/src/WWW/Colors.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE QuasiQuotes #-}
module WWW.Colors
( Gruvbox (..)
@@ -22,39 +23,82 @@ data Gruvbox a = Gruvbox
{ _bg, _red, _green, _yellow, _blue, _purple, _aqua, _gray, _gray', _red', _green', _yellow', _blue', _purple', _aqua', _fg, _bg0h, _bg0, _bg0s, _bg1, _bg2, _bg3, _bg4, _gray'', _orange, _fg4, _fg3, _fg2, _fg1, _fg0, _orange' :: !a
} deriving stock (Foldable, Functor, Eq, Show, Traversable)
+instance Applicative Gruvbox where
+ pure a = Gruvbox a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
+ {-# INLINE pure #-}
+ (<*>) :: Gruvbox (a -> b) -> Gruvbox a -> Gruvbox b
+ g <*> x = Gruvbox
+ { _bg = ag _bg g x
+ , _red = ag _red g x
+ , _green = ag _green g x
+ , _yellow = ag _yellow g x
+ , _blue = ag _blue g x
+ , _purple = ag _purple g x
+ , _aqua = ag _aqua g x
+ , _gray = ag _gray g x
+ , _gray' = ag _gray' g x
+ , _red' = ag _red' g x
+ , _green' = ag _green' g x
+ , _yellow' = ag _yellow' g x
+ , _blue' = ag _blue' g x
+ , _purple' = ag _purple' g x
+ , _aqua' = ag _aqua' g x
+ , _fg = ag _fg g x
+ , _bg0h = ag _bg0h g x
+ , _bg0 = ag _bg0 g x
+ , _bg0s = ag _bg0s g x
+ , _bg1 = ag _bg1 g x
+ , _bg2 = ag _bg2 g x
+ , _bg3 = ag _bg3 g x
+ , _bg4 = ag _bg4 g x
+ , _gray'' = ag _gray'' g x
+ , _orange = ag _orange g x
+ , _fg4 = ag _fg4 g x
+ , _fg3 = ag _fg3 g x
+ , _fg2 = ag _fg2 g x
+ , _fg1 = ag _fg1 g x
+ , _fg0 = ag _fg0 g x
+ , _orange' = ag _orange g x
+ }
+ {-# INLINE (<*>) #-}
+
+ag :: (forall x . Gruvbox x -> x) -> Gruvbox (a -> b) -> Gruvbox a -> b
+ag f g x = f g $ f x
+{-# INLINE ag #-}
+
gruvboxVar :: IsString s => Gruvbox s
gruvboxVar = Gruvbox
- { _bg = "gb_bg"
- , _red = "gb_red"
- , _green = "gb_green"
- , _yellow = "gb_yellow"
- , _blue = "gb_blue"
- , _purple = "gb_purple"
- , _aqua = "gb_aqua"
- , _gray = "gb_gray"
- , _gray' = "gb_gray'"
- , _red' = "gb_red'"
- , _green' = "gb_green'"
- , _yellow' = "gb_yellow'"
- , _blue' = "gb_blue'"
- , _purple' = "gb_purple'"
- , _aqua' = "gb_aqua'"
- , _fg = "gb_fg"
- , _bg0h = "gb_bg0h"
- , _bg0 = "gb_bg0"
- , _bg0s = "gb_bg0s"
- , _bg1 = "gb_bg1"
- , _bg2 = "gb_bg2"
- , _bg3 = "gb_bg3"
- , _bg4 = "gb_bg4"
- , _gray'' = "gb_gray''"
- , _orange = "gb_orange"
- , _fg4 = "gb_fg4"
- , _fg3 = "gb_fg3"
- , _fg2 = "gb_fg2"
- , _fg1 = "gb_fg1"
- , _fg0 = "gb_fg0"
- , _orange' = "gb_orange'"
+ { _bg = "bg"
+ , _red = "red"
+ , _green = "green"
+ , _yellow = "yellow"
+ , _blue = "blue"
+ , _purple = "purple"
+ , _aqua = "aqua"
+ , _gray = "gray"
+ , _gray' = "gray'"
+ , _red' = "red'"
+ , _green' = "green'"
+ , _yellow' = "yellow'"
+ , _blue' = "blue'"
+ , _purple' = "purple'"
+ , _aqua' = "aqua'"
+ , _fg = "fg"
+ , _bg0h = "bg0h"
+ , _bg0 = "bg0"
+ , _bg0s = "bg0s"
+ , _bg1 = "bg1"
+ , _bg2 = "bg2"
+ , _bg3 = "bg3"
+ , _bg4 = "bg4"
+ , _gray'' = "gray''"
+ , _orange = "orange"
+ , _fg4 = "fg4"
+ , _fg3 = "fg3"
+ , _fg2 = "fg2"
+ , _fg1 = "fg1"
+ , _fg0 = "fg0"
+ , _orange' = "orange'"
}
hard :: Gruvbox a -> Gruvbox a