From c1b6c382d8b020238e64c811bcc6f905f0f5390d Mon Sep 17 00:00:00 2001 From: jao Date: Fri, 4 Feb 2022 02:12:32 +0000 Subject: Refactoring: Xmobar.Text.{Ansi,Pango,Output} --- src/Xmobar/Text/Pango.hs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/Xmobar/Text/Pango.hs (limited to 'src/Xmobar/Text/Pango.hs') 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 '<' "<" $ + replaceAll '>' ">" $ + replaceAll '&' "&" s + +withPangoColor :: (String, String) -> String -> String +withPangoColor (fg, bg) s = + printf fmt (xmlEscape fg) (xmlEscape bg) (xmlEscape s) + where fmt = "%s" -- cgit v1.2.3