Lenient Semantic Version Parser

Lenient parser for Semantic Version numbers.

Motivation

This crate aims to provide an alternative parser for semver Versions.

Instead of adhering to the semver specification, this parser is more lenient in what it allows. The differenc include:

This diagram shows lenient parsing grammar

have a look at doc/railroad.svg

Examples

```rust use semver::Version;

let version = lenientsemver::parse::("1.2.3"); asserteq!(version, Ok(Version::new(1, 2, 3)));

// examples of a version that would not be accepted by semverparser asserteq!( lenientsemver::parse::("1.2.M1").unwrap(), Version::parse("1.2.0-M1").unwrap() ); assert!(Version::parse("1.2.M1").iserr());

asserteq!( lenientsemver::parse::("1").unwrap(), Version::parse("1.0.0").unwrap() ); assert!(Version::parse("1").is_err());

asserteq!( lenientsemver::parse::("1.2.3.Final").unwrap(), Version::parse("1.2.3+Final").unwrap() ); assert!(Version::parse("1.2.3.Final").is_err());

asserteq!( lenientsemver::parse::("1.2.3.4.5").unwrap(), Version::parse("1.2.3+4.5").unwrap() ); assert!(Version::parse("1.2.3.4.5").is_err());

asserteq!( lenientsemver::parse::("v1.2.3").unwrap(), Version::parse("1.2.3").unwrap() ); assert!(Version::parse("v1.2.3").is_err()); ```

License: MIT OR Apache-2.0