packages feed

htags-1.0.1: src/Tag.hs

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))