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/Output.hs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/Xmobar/Text/Output.hs (limited to 'src/Xmobar/Text/Output.hs') diff --git a/src/Xmobar/Text/Output.hs b/src/Xmobar/Text/Output.hs new file mode 100644 index 0000000..3754bd3 --- /dev/null +++ b/src/Xmobar/Text/Output.hs @@ -0,0 +1,41 @@ +-- | +-- Module: Xmobar.Text.Output +-- Copyright: (c) 2022 Jose Antonio Ortega Ruiz +-- License: BSD3-style (see LICENSE) +-- +-- Maintainer: jao@gnu.org +-- Stability: unstable +-- Portability: portable +-- Created: Fri Feb 4, 2022 01:10 +-- +-- +-- Format segments emitted by Commands into output strings +-- +------------------------------------------------------------------------------ + +module Xmobar.Text.Output (formatSegment) where + +import Xmobar.Config.Types (Config(textOutputFormat), TextOutputFormat(..)) +import Xmobar.Run.Parsers ( Segment + , Widget(..) + , tColorsString + , colorComponents) + +import Xmobar.Text.Ansi (withAnsiColor) +import Xmobar.Text.Pango (withPangoColor) + +withColor :: TextOutputFormat -> (String, String) -> String -> String +withColor format color = case format of + Plain -> id + Ansi -> withAnsiColor color + Pango -> withPangoColor color + + +formatSegment :: Config -> Segment -> String +formatSegment conf (Text s, info, _, _) = + withColor (textOutputFormat conf) components s + where components = colorComponents conf color + color = tColorsString info +formatSegment conf (Hspace n, i, x, y) = + formatSegment conf (Text $ replicate (fromIntegral n) ' ', i, x, y) +formatSegment _ _ = "" -- cgit v1.2.3