CalendarVersion
The CalendarVersion module provides functions for working with calendar versions
in the year.month.day format (e.g., "2024.1.15"). Follows the
CalVer specification.
Construction
CalendarVersion
Int -> Int -> Int -> CalendarVersion
Creates a calendar version from year, month, and day numbers.
v = CalendarVersion 2024 1 15
println (CalendarVersion.to-string v)
# => "2024.1.15"
Parsing and Formatting
CalendarVersion.parse
String -> CalendarVersion
Parses a version string into a CalendarVersion.
v = CalendarVersion.parse "2024.1.15"
println (CalendarVersion.year v)
# => 2024
CalendarVersion.to-string
CalendarVersion -> String
Converts a CalendarVersion to a string in "year.month.day" format.
v = CalendarVersion 2024 6 1
println (CalendarVersion.to-string v)
# => "2024.6.1"
CalendarVersion.debug
CalendarVersion -> String
Converts a CalendarVersion to a debug string representation.
Version Components
CalendarVersion.year
CalendarVersion -> Int
Returns the year component.
CalendarVersion.month
CalendarVersion -> Int
Returns the month component.
CalendarVersion.day
CalendarVersion -> Int
Returns the day component.
v = CalendarVersion.parse "2026.1.13"
println (CalendarVersion.year v) # => 2026
println (CalendarVersion.month v) # => 1
println (CalendarVersion.day v) # => 13
Comparison
CalendarVersion.compare
CalendarVersion -> CalendarVersion -> Int
Compares two versions. Returns
-1 if the first is less,
0 if equal, 1 if greater.
v1 = CalendarVersion 2024 1 15
v2 = CalendarVersion 2024 6 1
println (CalendarVersion.compare v1 v2)
# => -1
CalendarVersion.eq?
CalendarVersion -> CalendarVersion -> Bool
Returns
true if two versions are equal.
CalendarVersion.lt? / CalendarVersion.gt?
CalendarVersion -> CalendarVersion -> Bool
Returns
true if the first version is less than / greater than the second.
CalendarVersion.lte? / CalendarVersion.gte?
CalendarVersion -> CalendarVersion -> Bool
Returns
true if the first version is less than or equal / greater than or equal to the second.
v1 = CalendarVersion 2025 1 1
v2 = CalendarVersion 2024 12 31
println (CalendarVersion.gt? v1 v2) # => true
println (CalendarVersion.gte? v1 v2) # => true
Validation
CalendarVersion.valid-date?
CalendarVersion -> Bool
Returns
true if the version represents a valid calendar date.
Checks that month is 1-12 and day is valid for the given month/year.
v1 = CalendarVersion 2024 2 29 # Leap year
v2 = CalendarVersion 2023 2 29 # Not a leap year
println (CalendarVersion.valid-date? v1) # => true
println (CalendarVersion.valid-date? v2) # => false
Type Checking
is-calendar-version?
a -> Bool
Returns
true if the value is a CalendarVersion.
v = CalendarVersion 2024 1 1
println (is-calendar-version? v) # => true
println (is-calendar-version? 42) # => false