| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
H2JVM.Name
Description
Types and utilities for representing JVM class and package names.
Synopsis
- newtype PackageName = PackageName [Text]
- newtype ClassName = ClassName Text
- data QualifiedClassName = QualifiedClassName PackageName ClassName
- parsePackageName :: Text -> PackageName
- parseClassName :: Text -> ClassName
- parseQualifiedClassName :: Text -> QualifiedClassName
- toInternalName :: QualifiedClassName -> Text
- suitableFilePath :: QualifiedClassName -> FilePath
Documentation
newtype PackageName Source #
A JVM package name.
This is defined as a potentially empty list of identifiers, which would be separated by dots in the source code, e.g. "java.lang" would be represented as PackageName ["java","lang"].
Constructors
| PackageName [Text] |
Instances
| Data PackageName Source # | |
Defined in H2JVM.Name Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PackageName -> c PackageName # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PackageName # toConstr :: PackageName -> Constr # dataTypeOf :: PackageName -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PackageName) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PackageName) # gmapT :: (forall b. Data b => b -> b) -> PackageName -> PackageName # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PackageName -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PackageName -> r # gmapQ :: (forall d. Data d => d -> u) -> PackageName -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> PackageName -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> PackageName -> m PackageName # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PackageName -> m PackageName # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PackageName -> m PackageName # | |
| Show PackageName Source # | |
Defined in H2JVM.Name Methods showsPrec :: Int -> PackageName -> ShowS # show :: PackageName -> String # showList :: [PackageName] -> ShowS # | |
| Eq PackageName Source # | |
Defined in H2JVM.Name | |
| Ord PackageName Source # | |
Defined in H2JVM.Name Methods compare :: PackageName -> PackageName -> Ordering # (<) :: PackageName -> PackageName -> Bool # (<=) :: PackageName -> PackageName -> Bool # (>) :: PackageName -> PackageName -> Bool # (>=) :: PackageName -> PackageName -> Bool # max :: PackageName -> PackageName -> PackageName # min :: PackageName -> PackageName -> PackageName # | |
Instances
| Data ClassName Source # | |
Defined in H2JVM.Name Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ClassName -> c ClassName # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ClassName # toConstr :: ClassName -> Constr # dataTypeOf :: ClassName -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ClassName) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ClassName) # gmapT :: (forall b. Data b => b -> b) -> ClassName -> ClassName # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ClassName -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ClassName -> r # gmapQ :: (forall d. Data d => d -> u) -> ClassName -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ClassName -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ClassName -> m ClassName # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ClassName -> m ClassName # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ClassName -> m ClassName # | |
| Show ClassName Source # | |
| Eq ClassName Source # | |
| Ord ClassName Source # | |
data QualifiedClassName Source #
A fully qualified JVM class name, consisting of a PackageName and a ClassName.
For example, "java.lang.Object" would be represented as .QualifiedClassName (PackageName ["java","lang"]) (ClassName "Object")
Constructors
| QualifiedClassName PackageName ClassName |
Instances
parsePackageName :: Text -> PackageName Source #
Parse a PackageName from a Text
>>>parsePackageName "java.lang"PackageName ["java","lang"]
>>>parsePackageName ""PackageName []
parseClassName :: Text -> ClassName Source #
parseQualifiedClassName :: Text -> QualifiedClassName Source #
Parse a QualifiedClassName from a Text
>>>parseQualifiedClassName "java.lang.Object"QualifiedClassName (PackageName ["java","lang"]) (ClassName "Object")
>>>parseQualifiedClassName "Object"QualifiedClassName (PackageName []) (ClassName "Object")
This function is lenient and will accept invalid class names: >>> parseQualifiedClassName "123invalid" QualifiedClassName (PackageName []) (ClassName "123invalid")
toInternalName :: QualifiedClassName -> Text Source #
Convert a QualifiedClassName to a Text that can be used as an internal JVM name
>>>toInternalName (QualifiedClassName (PackageName ["java","lang"]) (ClassName "Object"))"java/lang/Object"
suitableFilePath :: QualifiedClassName -> FilePath Source #
Convert a QualifiedClassName to a FilePath that one would expect the class file to be in
>>> suitableFilePath "java.lang.Object"
"javalangObject.class"
>>>suitableFilePath "Object""Object.class"