{-# LANGUAGE GADTs #-} module GhcTags.CTag.Utils ( tagKindToChar , charToTagKind ) where import GhcTags.Tag tagKindToChar :: CTagKind -> Maybe Char tagKindToChar tk = case tk of TkTerm -> Just '`' TkFunction -> Just 'λ' TkTypeConstructor -> Just 'Λ' TkDataConstructor -> Just 'c' TkGADTConstructor -> Just 'g' TkRecordField -> Just 'r' TkTypeSynonym -> Just '≡' TkTypeSignature -> Just '⊢' TkPatternSynonym -> Just 'p' TkTypeClass -> Just 'C' TkTypeClassMember -> Just 'm' TkTypeClassInstance -> Just 'i' TkTypeFamily -> Just 'f' TkTypeFamilyInstance -> Just 'F' TkDataTypeFamily -> Just 'd' TkDataTypeFamilyInstance -> Just 'D' TkForeignImport -> Just 'I' TkForeignExport -> Just 'E' CharKind c -> Just c NoKind -> Nothing charToTagKind :: Char -> CTagKind charToTagKind c = case c of '`' -> TkTerm 'λ' -> TkFunction 'Λ' -> TkTypeConstructor 'c' -> TkDataConstructor 'g' -> TkGADTConstructor 'r' -> TkRecordField '≡' -> TkTypeSynonym '⊢' -> TkTypeSignature 'p' -> TkPatternSynonym 'C' -> TkTypeClass 'm' -> TkTypeClassMember 'i' -> TkTypeClassInstance 'f' -> TkTypeFamily 'F' -> TkTypeFamilyInstance 'd' -> TkDataTypeFamily 'D' -> TkDataTypeFamilyInstance 'I' -> TkForeignImport 'E' -> TkForeignExport _ -> CharKind c