summaryrefslogtreecommitdiffhomepage
path: root/src/Xmobar/Text/Pango.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Xmobar/Text/Pango.hs')
-rw-r--r--src/Xmobar/Text/Pango.hs35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/Xmobar/Text/Pango.hs b/src/Xmobar/Text/Pango.hs
new file mode 100644
index 0000000..b8205ef
--- /dev/null
+++ b/src/Xmobar/Text/Pango.hs
@@ -0,0 +1,35 @@
+------------------------------------------------------------------------------
+-- |
+-- Module: Xmobar.Text.Pango
+-- Copyright: (c) 2022 Jose Antonio Ortega Ruiz
+-- License: BSD3-style (see LICENSE)
+--
+-- Author: Pavel Kalugin
+-- Maintainer: jao@gnu.org
+-- Stability: unstable
+-- Portability: portable
+-- Created: Fri Feb 4, 2022 01:15
+--
+--
+-- Codification with Pango markup
+--
+------------------------------------------------------------------------------
+
+module Xmobar.Text.Pango (withPangoColor) where
+
+import Text.Printf (printf)
+
+replaceAll :: (Eq a) => a -> [a] -> [a] -> [a]
+replaceAll c s = concatMap (\x -> if x == c then s else [x])
+
+xmlEscape :: String -> String
+xmlEscape s = replaceAll '"' """ $
+ replaceAll '\'' "'" $
+ replaceAll '<' "&lt;" $
+ replaceAll '>' "&gt;" $
+ replaceAll '&' "&amp;" s
+
+withPangoColor :: (String, String) -> String -> String
+withPangoColor (fg, bg) s =
+ printf fmt (xmlEscape fg) (xmlEscape bg) (xmlEscape s)
+ where fmt = "<span foreground=\"%s\" background=\"%s\">%s</span>"