Crate jayver

Source
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.

Functions§

is_valid
Check if a version string is valid without constructing a Version.
parse
Quickly parse a version string without importing the Version type.
today
Create a version representing the current date with patch 0.