Expand description
§JayVer
A calendar versioning scheme for binaries developed by Emmett Jayhart, built upon ISO 8601 week dates and CalVer.
JayVer follows the format: YY.WW.PATCH
- YY: ISO week-numbering year minus 2000 (e.g.,
25
for 2025) - WW: ISO 8601 week number (
1
-53
) - PATCH: Incremental number for patches within same week, starting at
0
§Examples
use jayver::Version;
// Parse a version string
let version = Version::parse("25.16.3").unwrap();
assert_eq!(version.year, 25); // Year 2025 (25 + 2000)
assert_eq!(version.week, 16);
assert_eq!(version.patch, 3);
// Create a version for the current date
let today = Version::today();
println!("Current version: {today}");
// Compare versions
let v1 = Version::parse("25.10.0").unwrap();
let v2 = Version::parse("25.11.0").unwrap();
assert!(v1 < v2);
// Check version requirements
use jayver::VersionReq;
let req = VersionReq::parse(">=25.10.0").unwrap();
assert!(req.matches(&v1));
§ISO 8601 Week Dates
JayVer strictly follows ISO 8601 week dates:
- Week 01 is the week containing January 4th
- Weeks are numbered 01-53
- The ISO week-numbering year may differ from the calendar year near year boundaries
Re-exports§
pub use crate::error::Error;
pub use crate::error::Result;
pub use crate::parser::parse_version;
pub use crate::parser::patch;
pub use crate::parser::version as version_parser;
pub use crate::parser::week;
pub use crate::parser::year;
pub use crate::parser::year_week;
pub use crate::requirement::AnyVersionReq;
pub use crate::requirement::Comparator;
pub use crate::requirement::Op;
pub use crate::requirement::VersionReq;
pub use crate::version::Patch;
pub use crate::version::Version;
pub use crate::version::Week;
pub use crate::version::Year;
Modules§
- error
- Error types for JayVer parsing and comparison operations.
- parser
- Parsers for Jayhart Version components, implemented with
nom
. - requirement
- Version requirements for Jayhart versioning.
- version
- Jayhart Version type and implementations.