úÎ!o!gİ}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|(c) Colin Woodbury, 2015 - 2020BSD3"Colin Woodbury <colin@fosskers.ca>None79;SXe}2versionsA synonym for the more verbose  megaparsec error type.versionsmDevelopers use a number of symbols to seperate groups of digits/letters in their version numbers. These are:&A colon (:). Often denotes an "epoch". A hyphen (-).EA plus (+). Stop using this outside of metadata if you are. Example:  10.2+0.93+1-1.An underscore (_). Stop using this if you are.versionsA (Complex) Mess. This is a  descriptiveQ parser, based on examples of stupidly crafted version numbers used in the wild.[Groups of letters/numbers, separated by a period, can be further separated by the symbols _-+:Unfortunately, VChunk=s cannot be used here, as some developers have numbers like 1.003.04 which make parsers quite sad..Not guaranteed to have well-defined ordering (Ord9) behaviour, but so far internal tests show consistency. versions.A (General) Version. Not quite as ideal as a Y, but has some internal consistancy from version to version. Generally conforms to the x.x.x-x% pattern, and may optionally have an epoch1. These are prefixes marked by a colon, like in 1:2.3.4. Examples of Version that are not SemVer&: 0.25-2, 8.u51-1, 20150826-1, 1:2.3.4versionspA PVP version number specific to the Haskell ecosystem. Like SemVer this is a prescriptive scheme, and follows  https://pvp.haskell.org/ the PVP spec.5Legal PVP values are of the form: MAJOR(.MAJOR.MINOR) Example: 1.2.3 Extra Rules:  Each component must be a number.lOnly the first MAJOR component is actually necessary. Otherwise, there can be any number of components.  1.2.3.4.5.6.7 is legal.²Unlike SemVer there are two MAJOR components, and both indicate a breaking change. The spec otherwise designates no special meaning to components past the MINOR position.versionsQA logical unit of a version number. Can consist of multiple letters and numbers.versionsaA single unit of a Version. May be digits or a string of characters. Groups of these are called ?s, and are the identifiers separated by periods in the source.versionsKAn (Ideal) version number that conforms to Semantic Versioning. This is a  prescriptive0 parser, meaning it follows the SemVer standard.<Legal semvers are of the form: MAJOR.MINOR.PATCH-PREREL+META Example: 1.2.3-r1+commithash Extra Rules: Pre-release versions have lower! precedence than normal versions.2Build metadata does not affect version precedence.=PREREL and META strings may only contain ASCII alphanumerics.For more information, see http://semver.orgversions,Version types which sanely and safely yield >-like information about themselves. For instances other than # itself however, these optics may not` yield anything, depending on the actual value being traversed. Hence, the optics here are all $s. Consider the    1.2.3.4.58. We can imagine wanting to increment the minor number: +ğ "1.2.3.4.5" & minor %~ (+ 1) "1.3.3.4.5" -But of course something like this would fail: +ğ "1.e.3.4.5" & minor %~ (+ 1) "1.e.3.4.5" However! +ğ "1.e.3.4.5" & major %~ (+ 1) "2.e.3.4.5" versions MAJOR.minor.patch-prerel+metaversions major.MINOR.patch-prerel+meta versions major.minor.PATCH-prerel+meta!versions major.minor.patch-PREREL+meta"versions major.minor.patch-prerel+META#versions(A Natural Transformation into an proper .$versions:Simple Traversals compatible with both lens and microlens.%versions6Simple Lenses compatible with both lens and microlens.&versionsôA top-level Versioning type. Acts as a wrapper for the more specific types. This allows each subtype to have its own parser, and for said parsers to be composed. This is useful for specifying custom behaviour for when a certain parser fails.}versions Convert a  to a  .~versions Convert a   to a .*versions,Traverse some Text for its inner versioning. `ğ "1.2.3" & _Versioning . _Ideal . patch %~ (+ 1) -- or just: "1.2.3" & patch %~ (+ 1) "1.2.4" +versions(Traverse some Text for its inner SemVer.,versions)Traverse some Text for its inner Version.-versions&Traverse some Text for its inner Mess.1versionsSmart constructor for a  made of digits.2versionsSmart constructor for a  made of letters.versionsSet a   's epoch to €.6versionsParse a piece of  into either an (Ideal) , a (General)  , or a (Complex) .7versionsParse a &>. Assumes the version number is the last token in the string.8versions!Parse a (Ideal) Semantic Version.9versionsInternal megaparsec parser of 8.‚versionsDParse a group of digits, which can't be lead by a 0, unless it is 0.ƒversions Handling 0Q is a bit tricky. We can't allow runs of zeros in a chunk, since a version like 1.000.1 would parse as 1.0.1.:versionsParse a (Haskell) , as defined above.;versionsInternal megaparsec parser of :.<versionsParse a (General)  , as defined above.=versionsInternal megaparsec parser of <.>versionsParse a (Complex) , as defined above.?versionsInternal megaparsec parser of >.@versionsAConvert any parsed Versioning type to its textual representation.Aversions Convert a $ back to its textual representation.Bversions Convert a $ back to its textual representation.Cversions Convert a  $ back to its textual representation.Dversions Convert a $ back to its textual representation.„versions Analogous to … and †k. If a given Foldable is empty, a default value is returned. Else, a function is applied to that Foldable.‡versionsFlip an Ordering.Iversions2Build metadata does not affect version precedence.Jversions>Two SemVers are equal if all fields except metadata are equal.Qversions Customized.WversionsComparison of Ideals is always well defined.If comparison of General&s is well-defined, then comparison of Ideal and General9 is well-defined, as there exists a perfect mapping from Ideal to General.If comparison of Complex'es is well-defined, then comparison of General and ComplexB is well defined for the same reason. This implies comparison of Ideal and Complex is also well-defined.E  ! "#$%&)'(*+,-./0123456789:;<=>?@ABCDE&)'(  1268:<>79;=?@ABCD%$! "#*+,-./0534ˆ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ%versions-3.5.2-EmjpQ4kthw9ACyDKEqYZgQ Data.Versions&megaparsec-8.0.0-9g7AKmV0pGtLHgiBXCxWUText.Megaparsec.ErrorerrorBundlePretty ParsingErrorVSepVColonVHyphenVPlusVUnderMessVLeafVNodeVersion_vEpoch_vChunks_vRelPVP _pComponentsVChunkVUnitDigitsStrSemVer_svMajor_svMinor_svPatch _svPreRel_svMetaSemanticmajorminorpatchreleasemetasemantic Traversal'Lens' VersioningIdealGeneralComplex _Versioning_SemVer_Version_Mess_Ideal_General_Complexdigitsstr_Digits_Strepoch versioning versioning'semversemver'pvppvp'versionversion'messmess'prettyV prettySemVer prettyPVP prettyVer prettyMess $fMonoidVUnit$fSemigroupVUnit$fMonoidSemVer$fSemigroupSemVer $fOrdSemVer $fEqSemVer$fSemanticSemVer$fSemanticText $fSemanticPVP $fMonoidPVP$fSemigroupPVP$fSemanticVersion $fOrdVersion$fMonoidVersion$fSemigroupVersion$fSemanticMess $fOrdMess$fSemanticVersioning$fOrdVersioning $fEqVUnit $fShowVUnit $fReadVUnit $fOrdVUnit$fGenericVUnit $fNFDataVUnit$fHashableVUnit $fShowSemVer$fGenericSemVer$fNFDataSemVer$fHashableSemVer$fEqPVP$fOrdPVP $fShowPVP $fGenericPVP $fNFDataPVP $fHashablePVP $fEqVersion $fShowVersion$fGenericVersion$fNFDataVersion$fHashableVersion$fEqVSep $fShowVSep $fGenericVSep $fNFDataVSep$fHashableVSep$fEqMess $fShowMess $fGenericMess $fNFDataMess$fHashableMess$fEqVersioning$fShowVersioning$fGenericVersioning$fNFDataVersioning$fHashableVersioningvFromSmFromVwipebase GHC.MaybeNothing text-1.2.3.1Data.Text.InternalTextdigitsPchunkfoldable Data.Maybemaybe Data.Eithereitheropposite