Safe Haskell | None |
---|---|
Language | Haskell2010 |
Web.Bower.PackageMeta
Contents
Description
A data type representing the Bower.json package description file, together with a parser and related functions.
This code is based on the specification at https://github.com/bower/bower.json-spec.
Synopsis
- data PackageMeta = PackageMeta {
- bowerName :: PackageName
- bowerDescription :: Maybe Text
- bowerMain :: [FilePath]
- bowerModuleType :: [ModuleType]
- bowerLicense :: [Text]
- bowerIgnore :: [Text]
- bowerKeywords :: [Text]
- bowerAuthors :: [Author]
- bowerHomepage :: Maybe Text
- bowerRepository :: Maybe Repository
- bowerDependencies :: [(PackageName, VersionRange)]
- bowerDevDependencies :: [(PackageName, VersionRange)]
- bowerResolutions :: [(PackageName, Version)]
- bowerPrivate :: Bool
- data PackageName
- runPackageName :: PackageName -> Text
- mkPackageName :: Text -> Either PackageNameError PackageName
- data Author = Author {
- authorName :: Text
- authorEmail :: Maybe Text
- authorHomepage :: Maybe Text
- data ModuleType
- moduleTypes :: [(Text, ModuleType)]
- data Repository = Repository {
- repositoryUrl :: Text
- repositoryType :: Text
- newtype Version = Version {
- runVersion :: Text
- newtype VersionRange = VersionRange {
- runVersionRange :: Text
- data BowerError
- showBowerError :: BowerError -> Text
- data PackageNameError
- = NotEmpty
- | TooLong Int
- | InvalidChars [Char]
- | RepeatedSeparators
- | MustNotBeginSeparator
- | MustNotEndSeparator
- showPackageNameError :: PackageNameError -> Text
- decodeFile :: FilePath -> IO (Either (ParseError BowerError) PackageMeta)
- displayError :: ParseError BowerError -> Text
- asPackageMeta :: Parse BowerError PackageMeta
- parseModuleType :: Text -> Either BowerError ModuleType
- parsePackageName :: Text -> Either BowerError PackageName
- asAuthor :: Parse e Author
- asRepository :: Parse e Repository
Data types
data PackageMeta Source #
A data type representing the data stored in a bower.json package manifest file.
Note that the ToJSON
/ FromJSON
instances don't exactly match; for
example, it is not always the case that decoding from JSON and then encoding
to JSON will give you the exact same JSON that you started with. However, if
you start with a PackageMeta value, encode to JSON, and then decode, you
should always get the same value back.
Constructors
PackageMeta | |
Fields
|
Instances
Eq PackageMeta Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
Ord PackageMeta Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods compare :: PackageMeta -> PackageMeta -> Ordering (<) :: PackageMeta -> PackageMeta -> Bool (<=) :: PackageMeta -> PackageMeta -> Bool (>) :: PackageMeta -> PackageMeta -> Bool (>=) :: PackageMeta -> PackageMeta -> Bool max :: PackageMeta -> PackageMeta -> PackageMeta min :: PackageMeta -> PackageMeta -> PackageMeta | |
Show PackageMeta Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods showsPrec :: Int -> PackageMeta -> ShowS show :: PackageMeta -> String showList :: [PackageMeta] -> ShowS | |
Generic PackageMeta Source # | |
Defined in Web.Bower.PackageMeta.Internal Associated Types type Rep PackageMeta :: Type -> Type | |
NFData PackageMeta Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods rnf :: PackageMeta -> () | |
FromJSON PackageMeta Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
ToJSON PackageMeta Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods toJSON :: PackageMeta -> Value toEncoding :: PackageMeta -> Encoding toJSONList :: [PackageMeta] -> Value toEncodingList :: [PackageMeta] -> Encoding | |
type Rep PackageMeta Source # | |
Defined in Web.Bower.PackageMeta.Internal type Rep PackageMeta = D1 ('MetaData "PackageMeta" "Web.Bower.PackageMeta.Internal" "bower-json-1.0.0.1-F9NLUDW9vlmJ5KY5JL3qvv" 'False) (C1 ('MetaCons "PackageMeta" 'PrefixI 'True) (((S1 ('MetaSel ('Just "bowerName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageName) :*: (S1 ('MetaSel ('Just "bowerDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "bowerMain") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]))) :*: ((S1 ('MetaSel ('Just "bowerModuleType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ModuleType]) :*: S1 ('MetaSel ('Just "bowerLicense") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])) :*: (S1 ('MetaSel ('Just "bowerIgnore") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text]) :*: S1 ('MetaSel ('Just "bowerKeywords") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])))) :*: ((S1 ('MetaSel ('Just "bowerAuthors") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Author]) :*: (S1 ('MetaSel ('Just "bowerHomepage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "bowerRepository") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Repository)))) :*: ((S1 ('MetaSel ('Just "bowerDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PackageName, VersionRange)]) :*: S1 ('MetaSel ('Just "bowerDevDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PackageName, VersionRange)])) :*: (S1 ('MetaSel ('Just "bowerResolutions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PackageName, Version)]) :*: S1 ('MetaSel ('Just "bowerPrivate") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))))) |
data PackageName Source #
A valid package name for a Bower package.
Instances
runPackageName :: PackageName -> Text Source #
mkPackageName :: Text -> Either PackageNameError PackageName Source #
A smart constructor for a PackageName. It ensures that the package name satisfies the restrictions described at https://github.com/bower/bower.json-spec#name.
Constructors
Author | |
Fields
|
Instances
Eq Author Source # | |
Ord Author Source # | |
Show Author Source # | |
Generic Author Source # | |
NFData Author Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
FromJSON Author Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
ToJSON Author Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods toEncoding :: Author -> Encoding toJSONList :: [Author] -> Value toEncodingList :: [Author] -> Encoding | |
type Rep Author Source # | |
Defined in Web.Bower.PackageMeta.Internal type Rep Author = D1 ('MetaData "Author" "Web.Bower.PackageMeta.Internal" "bower-json-1.0.0.1-F9NLUDW9vlmJ5KY5JL3qvv" 'False) (C1 ('MetaCons "Author" 'PrefixI 'True) (S1 ('MetaSel ('Just "authorName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "authorEmail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "authorHomepage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))))) |
data ModuleType Source #
Instances
moduleTypes :: [(Text, ModuleType)] Source #
data Repository Source #
Constructors
Repository | |
Fields
|
Instances
Eq Repository Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
Ord Repository Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods compare :: Repository -> Repository -> Ordering (<) :: Repository -> Repository -> Bool (<=) :: Repository -> Repository -> Bool (>) :: Repository -> Repository -> Bool (>=) :: Repository -> Repository -> Bool max :: Repository -> Repository -> Repository min :: Repository -> Repository -> Repository | |
Show Repository Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods showsPrec :: Int -> Repository -> ShowS show :: Repository -> String showList :: [Repository] -> ShowS | |
Generic Repository Source # | |
Defined in Web.Bower.PackageMeta.Internal Associated Types type Rep Repository :: Type -> Type | |
NFData Repository Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods rnf :: Repository -> () | |
FromJSON Repository Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
ToJSON Repository Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods toJSON :: Repository -> Value toEncoding :: Repository -> Encoding toJSONList :: [Repository] -> Value toEncodingList :: [Repository] -> Encoding | |
type Rep Repository Source # | |
Defined in Web.Bower.PackageMeta.Internal type Rep Repository = D1 ('MetaData "Repository" "Web.Bower.PackageMeta.Internal" "bower-json-1.0.0.1-F9NLUDW9vlmJ5KY5JL3qvv" 'False) (C1 ('MetaCons "Repository" 'PrefixI 'True) (S1 ('MetaSel ('Just "repositoryUrl") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "repositoryType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) |
Constructors
Version | |
Fields
|
Instances
Eq Version Source # | |
Ord Version Source # | |
Show Version Source # | |
Generic Version Source # | |
NFData Version Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
FromJSON Version Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
ToJSON Version Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods toEncoding :: Version -> Encoding toJSONList :: [Version] -> Value toEncodingList :: [Version] -> Encoding | |
type Rep Version Source # | |
Defined in Web.Bower.PackageMeta.Internal type Rep Version = D1 ('MetaData "Version" "Web.Bower.PackageMeta.Internal" "bower-json-1.0.0.1-F9NLUDW9vlmJ5KY5JL3qvv" 'True) (C1 ('MetaCons "Version" 'PrefixI 'True) (S1 ('MetaSel ('Just "runVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) |
newtype VersionRange Source #
Constructors
VersionRange | |
Fields
|
Instances
data BowerError Source #
Constructors
InvalidPackageName PackageNameError | |
InvalidModuleType Text |
Instances
Eq BowerError Source # | |
Defined in Web.Bower.PackageMeta.Internal | |
Ord BowerError Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods compare :: BowerError -> BowerError -> Ordering (<) :: BowerError -> BowerError -> Bool (<=) :: BowerError -> BowerError -> Bool (>) :: BowerError -> BowerError -> Bool (>=) :: BowerError -> BowerError -> Bool max :: BowerError -> BowerError -> BowerError min :: BowerError -> BowerError -> BowerError | |
Show BowerError Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods showsPrec :: Int -> BowerError -> ShowS show :: BowerError -> String showList :: [BowerError] -> ShowS | |
Generic BowerError Source # | |
Defined in Web.Bower.PackageMeta.Internal Associated Types type Rep BowerError :: Type -> Type | |
NFData BowerError Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods rnf :: BowerError -> () | |
type Rep BowerError Source # | |
Defined in Web.Bower.PackageMeta.Internal type Rep BowerError = D1 ('MetaData "BowerError" "Web.Bower.PackageMeta.Internal" "bower-json-1.0.0.1-F9NLUDW9vlmJ5KY5JL3qvv" 'False) (C1 ('MetaCons "InvalidPackageName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageNameError)) :+: C1 ('MetaCons "InvalidModuleType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) |
showBowerError :: BowerError -> Text Source #
data PackageNameError Source #
Constructors
NotEmpty | |
TooLong Int | |
InvalidChars [Char] | |
RepeatedSeparators | |
MustNotBeginSeparator | |
MustNotEndSeparator |
Instances
Eq PackageNameError Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods (==) :: PackageNameError -> PackageNameError -> Bool (/=) :: PackageNameError -> PackageNameError -> Bool | |
Ord PackageNameError Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods compare :: PackageNameError -> PackageNameError -> Ordering (<) :: PackageNameError -> PackageNameError -> Bool (<=) :: PackageNameError -> PackageNameError -> Bool (>) :: PackageNameError -> PackageNameError -> Bool (>=) :: PackageNameError -> PackageNameError -> Bool max :: PackageNameError -> PackageNameError -> PackageNameError min :: PackageNameError -> PackageNameError -> PackageNameError | |
Show PackageNameError Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods showsPrec :: Int -> PackageNameError -> ShowS show :: PackageNameError -> String showList :: [PackageNameError] -> ShowS | |
Generic PackageNameError Source # | |
Defined in Web.Bower.PackageMeta.Internal Associated Types type Rep PackageNameError :: Type -> Type Methods from :: PackageNameError -> Rep PackageNameError x to :: Rep PackageNameError x -> PackageNameError | |
NFData PackageNameError Source # | |
Defined in Web.Bower.PackageMeta.Internal Methods rnf :: PackageNameError -> () | |
type Rep PackageNameError Source # | |
Defined in Web.Bower.PackageMeta.Internal type Rep PackageNameError = D1 ('MetaData "PackageNameError" "Web.Bower.PackageMeta.Internal" "bower-json-1.0.0.1-F9NLUDW9vlmJ5KY5JL3qvv" 'False) ((C1 ('MetaCons "NotEmpty" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TooLong" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "InvalidChars" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Char])))) :+: (C1 ('MetaCons "RepeatedSeparators" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MustNotBeginSeparator" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MustNotEndSeparator" 'PrefixI 'False) (U1 :: Type -> Type)))) |
showPackageNameError :: PackageNameError -> Text Source #
Parsing
decodeFile :: FilePath -> IO (Either (ParseError BowerError) PackageMeta) Source #
Read and attempt to decode a bower.json file.
displayError :: ParseError BowerError -> Text Source #
asPackageMeta :: Parse BowerError PackageMeta Source #
A parser for bower.json files, using the aeson-better-errors package.
parseModuleType :: Text -> Either BowerError ModuleType Source #
parsePackageName :: Text -> Either BowerError PackageName Source #
asRepository :: Parse e Repository Source #