semver-range-0.2.8: An implementation of semver and semantic version ranges.
Safe HaskellNone
LanguageHaskell2010

Data.SemVer

Synopsis

Documentation

data SemVerRange #

A range specifies bounds on a semver.

Constructors

Eq SemVer infixl 4

Exact equality

Gt SemVer infixl 4

Greater than

Lt SemVer infixl 4

Less than

Geq SemVer infixl 4

Greater than or equal to

Leq SemVer infixl 4

Less than or equal to

And SemVerRange SemVerRange infixl 3

Conjunction

Or SemVerRange SemVerRange infixl 3

Disjunction

data SemVer #

A SemVer has major, minor and patch versions, and zero or more pre-release version tags.

Instances

Instances details
Generic SemVer # 
Instance details

Defined in Data.SemVer.Types

Associated Types

type Rep SemVer 
Instance details

Defined in Data.SemVer.Types

type Rep SemVer = D1 ('MetaData "SemVer" "Data.SemVer.Types" "semver-range-0.2.8-BO1aYEJH2UVKvLdfP8lDgR" 'False) (C1 ('MetaCons "SemVer" 'PrefixI 'True) ((S1 ('MetaSel ('Just "svMajor") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "svMinor") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)) :*: (S1 ('MetaSel ('Just "svPatch") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "svTags") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PrereleaseTags) :*: S1 ('MetaSel ('Just "svBuildMetadata") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BuildMetaData)))))

Methods

from :: SemVer -> Rep SemVer x #

to :: Rep SemVer x -> SemVer #

Show SemVer # 
Instance details

Defined in Data.SemVer.Types

Eq SemVer # 
Instance details

Defined in Data.SemVer.Types

Methods

(==) :: SemVer -> SemVer -> Bool #

(/=) :: SemVer -> SemVer -> Bool #

Ord SemVer #

Define an Ord instance which ignores the buildMetaData.

Instance details

Defined in Data.SemVer.Types

Hashable SemVer # 
Instance details

Defined in Data.SemVer.Types

Methods

hashWithSalt :: Int -> SemVer -> Int #

hash :: SemVer -> Int #

type Rep SemVer # 
Instance details

Defined in Data.SemVer.Types

type Rep SemVer = D1 ('MetaData "SemVer" "Data.SemVer.Types" "semver-range-0.2.8-BO1aYEJH2UVKvLdfP8lDgR" 'False) (C1 ('MetaCons "SemVer" 'PrefixI 'True) ((S1 ('MetaSel ('Just "svMajor") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "svMinor") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)) :*: (S1 ('MetaSel ('Just "svPatch") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "svTags") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PrereleaseTags) :*: S1 ('MetaSel ('Just "svBuildMetadata") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BuildMetaData)))))

data PrereleaseTag #

Prerelease tags can either be numbers or text.

Constructors

IntTag Int 
TextTag Text 

Instances

Instances details
IsString PrereleaseTag # 
Instance details

Defined in Data.SemVer.Types

Generic PrereleaseTag # 
Instance details

Defined in Data.SemVer.Types

Associated Types

type Rep PrereleaseTag 
Instance details

Defined in Data.SemVer.Types

type Rep PrereleaseTag = D1 ('MetaData "PrereleaseTag" "Data.SemVer.Types" "semver-range-0.2.8-BO1aYEJH2UVKvLdfP8lDgR" 'False) (C1 ('MetaCons "IntTag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "TextTag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
Show PrereleaseTag # 
Instance details

Defined in Data.SemVer.Types

Eq PrereleaseTag # 
Instance details

Defined in Data.SemVer.Types

Ord PrereleaseTag # 
Instance details

Defined in Data.SemVer.Types

Hashable PrereleaseTag # 
Instance details

Defined in Data.SemVer.Types

type Rep PrereleaseTag # 
Instance details

Defined in Data.SemVer.Types

type Rep PrereleaseTag = D1 ('MetaData "PrereleaseTag" "Data.SemVer.Types" "semver-range-0.2.8-BO1aYEJH2UVKvLdfP8lDgR" 'False) (C1 ('MetaCons "IntTag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "TextTag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

newtype PrereleaseTags #

Instances

Instances details
Monoid PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

Semigroup PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

Generic PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

Associated Types

type Rep PrereleaseTags 
Instance details

Defined in Data.SemVer.Types

type Rep PrereleaseTags = D1 ('MetaData "PrereleaseTags" "Data.SemVer.Types" "semver-range-0.2.8-BO1aYEJH2UVKvLdfP8lDgR" 'True) (C1 ('MetaCons "PrereleaseTags" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PrereleaseTag])))
IsList PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

Associated Types

type Item PrereleaseTags 
Instance details

Defined in Data.SemVer.Types

Show PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

Eq PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

Ord PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

Hashable PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

type Rep PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

type Rep PrereleaseTags = D1 ('MetaData "PrereleaseTags" "Data.SemVer.Types" "semver-range-0.2.8-BO1aYEJH2UVKvLdfP8lDgR" 'True) (C1 ('MetaCons "PrereleaseTags" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PrereleaseTag])))
type Item PrereleaseTags # 
Instance details

Defined in Data.SemVer.Types

versionsOf :: SemVerRange -> [SemVer] #

Pull all of the concrete versions out of a range.

stripRangeTags :: SemVerRange -> SemVerRange #

Strip out all prerelease tags from a given SemVerRange.

semver :: Int -> Int -> Int -> SemVer #

Create a SemVer with no version tags.

semver' :: Int -> Int -> Int -> PrereleaseTags -> SemVer #

Create a SemVer with tags

semver'' :: Int -> Int -> Int -> PrereleaseTags -> BuildMetaData -> SemVer #

Create a SemVer with tags and metadata.

toTuple :: SemVer -> (Int, Int, Int) #

Get only the version tuple from a semver.

tuplesOf :: SemVerRange -> [(Int, Int, Int)] #

Get a list of tuples from a version range.

rangePrereleaseTags :: SemVerRange -> PrereleaseTags #

Get all of the prerelease tags from a version range.

sharedTags :: SemVerRange -> Maybe PrereleaseTags #

Get the range prerelease tags if they're all the same; otherwise Nothing.

anyVersion :: SemVerRange #

Satisfies any version.

renderSV :: SemVer -> Text #

Render a semver as Text.

matches :: SemVerRange -> SemVer -> Bool infixl 2 #

Returns whether a given semantic version matches a range. Note that there are special cases when there are prerelease tags. For details see https://github.com/npm/node-semver#prerelease-tags.

matchesSimple :: SemVerRange -> SemVer -> Bool #

Simple predicate calculus matching, doing AND and OR combination with numerical comparison.

matchesTags :: SemVerRange -> PrereleaseTags -> PrereleaseTags -> Bool #

Given a range and two sets of tags, the first being a bound on the second, uses the range to compare the tags and see if they match.

bestMatch :: SemVerRange -> [SemVer] -> Either String SemVer #

Gets the highest-matching semver in a range.

parseSemVer :: Text -> Either ParseError SemVer #

Parse a string as an explicit version, or return an error.

parseSemVerRange :: Text -> Either ParseError SemVerRange #

Parse a string as a version range, or return an error.

pSemVerRange :: Parser SemVerRange #

Top-level parser. Parses a semantic version range.

pSemVer :: Parser SemVer #

Parses a semantic version.

fromHaskellVersion :: Version -> Either Text SemVer #

Parse a semver from a haskell version. There must be exactly three numbers in the versionBranch field.

matchText :: Text -> Text -> Either Text Bool #

Parses the first argument as a range and the second argument as a semver, and returns whether they match.

splitWS :: Text -> [Text] #

Split a text on whitespace. Why isn't this in the stdlib.