diff options
Diffstat (limited to 'src/Actions.hs')
-rw-r--r-- | src/Actions.hs | 17 |
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.)>" |