Safe Haskell | Safe-Inferred |
---|---|
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 #
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
FromJSON PackageMeta # | |
Defined in Web.Bower.PackageMeta.Internal Methods parseJSON :: Value -> Parser PackageMeta # parseJSONList :: Value -> Parser [PackageMeta] # omittedField :: Maybe PackageMeta # | |
ToJSON PackageMeta # | |
Defined in Web.Bower.PackageMeta.Internal Methods toJSON :: PackageMeta -> Value # toEncoding :: PackageMeta -> Encoding # toJSONList :: [PackageMeta] -> Value # toEncodingList :: [PackageMeta] -> Encoding # omitField :: PackageMeta -> Bool # | |
Generic PackageMeta # | |
Defined in Web.Bower.PackageMeta.Internal Associated Types type Rep PackageMeta :: Type -> Type | |
Show PackageMeta # | |
Defined in Web.Bower.PackageMeta.Internal Methods showsPrec :: Int -> PackageMeta -> ShowS show :: PackageMeta -> String showList :: [PackageMeta] -> ShowS | |
NFData PackageMeta # | |
Defined in Web.Bower.PackageMeta.Internal Methods rnf :: PackageMeta -> () | |
Eq PackageMeta # | |
Defined in Web.Bower.PackageMeta.Internal | |
Ord PackageMeta # | |
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 | |
type Rep PackageMeta # | |
Defined in Web.Bower.PackageMeta.Internal type Rep PackageMeta = D1 ('MetaData "PackageMeta" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-4Ea240MdIAtp474RsajKl" '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 #
A valid package name for a Bower package.
Instances
runPackageName :: PackageName -> Text #
mkPackageName :: Text -> Either PackageNameError PackageName #
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
FromJSON Author # | |
Defined in Web.Bower.PackageMeta.Internal | |
ToJSON Author # | |
Defined in Web.Bower.PackageMeta.Internal | |
Generic Author # | |
Show Author # | |
NFData Author # | |
Defined in Web.Bower.PackageMeta.Internal | |
Eq Author # | |
Ord Author # | |
type Rep Author # | |
Defined in Web.Bower.PackageMeta.Internal type Rep Author = D1 ('MetaData "Author" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-4Ea240MdIAtp474RsajKl" '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 #
Instances
moduleTypes :: [(Text, ModuleType)] #
data Repository #
Constructors
Repository | |
Fields
|
Instances
FromJSON Repository # | |
Defined in Web.Bower.PackageMeta.Internal Methods parseJSON :: Value -> Parser Repository # parseJSONList :: Value -> Parser [Repository] # omittedField :: Maybe Repository # | |
ToJSON Repository # | |
Defined in Web.Bower.PackageMeta.Internal Methods toJSON :: Repository -> Value # toEncoding :: Repository -> Encoding # toJSONList :: [Repository] -> Value # toEncodingList :: [Repository] -> Encoding # omitField :: Repository -> Bool # | |
Generic Repository # | |
Defined in Web.Bower.PackageMeta.Internal Associated Types type Rep Repository :: Type -> Type | |
Show Repository # | |
Defined in Web.Bower.PackageMeta.Internal Methods showsPrec :: Int -> Repository -> ShowS show :: Repository -> String showList :: [Repository] -> ShowS | |
NFData Repository # | |
Defined in Web.Bower.PackageMeta.Internal Methods rnf :: Repository -> () | |
Eq Repository # | |
Defined in Web.Bower.PackageMeta.Internal | |
Ord Repository # | |
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 | |
type Rep Repository # | |
Defined in Web.Bower.PackageMeta.Internal type Rep Repository = D1 ('MetaData "Repository" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-4Ea240MdIAtp474RsajKl" '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
FromJSON Version # | |
Defined in Web.Bower.PackageMeta.Internal | |
ToJSON Version # | |
Defined in Web.Bower.PackageMeta.Internal | |
Generic Version # | |
Show Version # | |
NFData Version # | |
Defined in Web.Bower.PackageMeta.Internal | |
Eq Version # | |
Ord Version # | |
type Rep Version # | |
Defined in Web.Bower.PackageMeta.Internal type Rep Version = D1 ('MetaData "Version" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-4Ea240MdIAtp474RsajKl" 'True) (C1 ('MetaCons "Version" 'PrefixI 'True) (S1 ('MetaSel ('Just "runVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) |
newtype VersionRange #
Constructors
VersionRange | |
Fields
|
Instances
data BowerError #
Constructors
InvalidPackageName PackageNameError | |
InvalidModuleType Text |
Instances
Generic BowerError # | |
Defined in Web.Bower.PackageMeta.Internal Associated Types type Rep BowerError :: Type -> Type | |
Show BowerError # | |
Defined in Web.Bower.PackageMeta.Internal Methods showsPrec :: Int -> BowerError -> ShowS show :: BowerError -> String showList :: [BowerError] -> ShowS | |
NFData BowerError # | |
Defined in Web.Bower.PackageMeta.Internal Methods rnf :: BowerError -> () | |
Eq BowerError # | |
Defined in Web.Bower.PackageMeta.Internal | |
Ord BowerError # | |
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 | |
type Rep BowerError # | |
Defined in Web.Bower.PackageMeta.Internal type Rep BowerError = D1 ('MetaData "BowerError" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-4Ea240MdIAtp474RsajKl" '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 #
data PackageNameError #
Constructors
NotEmpty | |
TooLong Int | |
InvalidChars [Char] | |
RepeatedSeparators | |
MustNotBeginSeparator | |
MustNotEndSeparator |
Instances
Generic PackageNameError # | |
Defined in Web.Bower.PackageMeta.Internal Associated Types type Rep PackageNameError :: Type -> Type Methods from :: PackageNameError -> Rep PackageNameError x to :: Rep PackageNameError x -> PackageNameError | |
Show PackageNameError # | |
Defined in Web.Bower.PackageMeta.Internal Methods showsPrec :: Int -> PackageNameError -> ShowS show :: PackageNameError -> String showList :: [PackageNameError] -> ShowS | |
NFData PackageNameError # | |
Defined in Web.Bower.PackageMeta.Internal Methods rnf :: PackageNameError -> () | |
Eq PackageNameError # | |
Defined in Web.Bower.PackageMeta.Internal Methods (==) :: PackageNameError -> PackageNameError -> Bool (/=) :: PackageNameError -> PackageNameError -> Bool | |
Ord PackageNameError # | |
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 | |
type Rep PackageNameError # | |
Defined in Web.Bower.PackageMeta.Internal type Rep PackageNameError = D1 ('MetaData "PackageNameError" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-4Ea240MdIAtp474RsajKl" '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 #
Parsing
decodeFile :: FilePath -> IO (Either (ParseError BowerError) PackageMeta) #
Read and attempt to decode a bower.json file.
displayError :: ParseError BowerError -> Text #
asPackageMeta :: Parse BowerError PackageMeta #
A parser for bower.json files, using the aeson-better-errors package.
parseModuleType :: Text -> Either BowerError ModuleType #
parsePackageName :: Text -> Either BowerError PackageName #
asRepository :: Parse e Repository #