semver-0.3.0: Representation, manipulation, and de/serialisation of Semantic Versions.

Safe HaskellNone

Data.SemVer.Delimited

Contents

Description

A set of delimiters can be used to encode/decode a Version and specify alternative serialisation strategies.

Lenses can be used to modify the default delimiter set, as in the following example - using alpha characters to encode the version as a valid DNS CNAME (assuming operators from lens or lens-family-core):

 let Right v = fromText 1.2.3+40
 let alpha = semantic & major .~ 'm' & patch .~ 'p' & release .~ 'r' & metadata .~ 'd' & identifier .~ 'i'

Data.Text.Lazy.Builder.toLazyText ("app01-"  toDelimitedBuilder alpha v  ".dmz.internal")

Would result in the following Text:

 app01-1m2p3d40.dmz.internal

Using the same Delimiters set with delimitedParser would ensure correct decoding behaviour.

Synopsis

Delimiters

data Delimiters Source

An opaque set representing the seperators used to delimit semantic version components.

Constructor

semantic :: DelimitersSource

The default set of delimiters used in the semantic version specification.

Example: Given exhaustive version components would result in the following hypothetical version:

 1.2.3-alpha.1+sha.exp.12ab3d9

Lenses

minor :: Functor f => (Char -> f Char) -> Delimiters -> f DelimitersSource

Lens for the minor version delimiter. Default: .

patch :: Functor f => (Char -> f Char) -> Delimiters -> f DelimitersSource

Lens for the patch version delimiter. Default: .

release :: Functor f => (Char -> f Char) -> Delimiters -> f DelimitersSource

Lens for the release component delimiter. Default: -

metadata :: Functor f => (Char -> f Char) -> Delimiters -> f DelimitersSource

Lens for the metadata component delimiter. Default: +

identifier :: Functor f => (Char -> f Char) -> Delimiters -> f DelimitersSource

Lens for the individual identifier delimiter. Default: .

Encoding

toBuilder :: Delimiters -> Version -> BuilderSource

Convert a Version to a Builder using the specified Delimiters set.

Decoding

parser :: Delimiters -> Parser VersionSource

A greedy attoparsec Parser using the specified Delimiters set which requires the entire Text input to match.