summaryrefslogtreecommitdiffhomepage
path: root/src/Actions.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Actions.hs')
-rw-r--r--src/Actions.hs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/Actions.hs b/src/Actions.hs
index 42b9545..2befe77 100644
--- a/src/Actions.hs
+++ b/src/Actions.hs
@@ -14,14 +14,21 @@ module Actions (Action(..), runAction, stripActions) where
import System.Process (system)
import Control.Monad (void)
-import Text.Regex (subRegex, mkRegex)
+import Text.Regex (Regex, subRegex, mkRegex, matchRegex)
+import Graphics.X11.Types (Button)
-data Action = Spawn String
+data Action = Spawn Button String
deriving (Eq)
runAction :: Action -> IO ()
-runAction (Spawn s) = void $ system (s ++ "&")
+runAction (Spawn _ s) = void $ system (s ++ "&")
stripActions :: String -> String
-stripActions s = subRegex actionRegex s "[action=\1]\2[action]"
- where actionRegex = mkRegex "<action=([^>])*>(.+)</action>"
+stripActions s = case matchRegex actionRegex s of
+ Nothing -> s
+ Just _ -> stripActions strippedOneLevel
+ where
+ strippedOneLevel = subRegex actionRegex s $ "[\\1=\\2]\\3[\\4]"
+
+actionRegex :: Regex
+actionRegex = mkRegex "<(action|button.)=([^>]*)>(.+)</(action|button.)>"