module Tag ( Tag , tag , identT , fnameT , exComT , tagsToTagfile ) where import ExCommand import Data.Ord (comparing) import Data.List (sortBy, intercalate) import Data.Traversable (sequenceA) data Tag = T { identT :: String , fnameT :: String , exComT :: ExCommand } tag :: String -> String -> ExCommand -> Tag tag = T tagsToTagfile :: [Tag] -> String tagsToTagfile = unlines . fmap tagline . sortBy (comparing identT) where tagline :: Tag -> String tagline = intercalate "\t" . sequenceA [identT, fnameT, exToStr.exComT] -- Alt. defn. -- tagline t = (identT t) ++ "\t" -- ++ (fnameT t) ++ "\t" -- ++ (exToStr (exComT t))