pub enum Note {
Show 24 variants
AlreadyValidEdtf,
CenturyPartInterval,
ModifierDropped,
CenturyMask,
BcCenturyInterval,
AstronomicalYear,
ElidedEndYear,
NumericUnambiguous,
NumericResolvedByOption,
NumericResolvedByLocale,
NumericOrderIrrelevant,
NumericOrderAmbiguous,
DecadeAmbiguity,
DefaultCenturyApplied,
SeasonCode,
OpenInterval,
MissingYearMasked,
QualifierDistributed,
OrAlternatives,
SeasonRangeCollision,
RomanCentury,
DecadeOfCentury,
EndpointYearDistributed,
CrossYearSeason,
}Expand description
Why an output looks the way it does. Each variant cites the N-decision in
docs/normalize-notes.md that governs it, so a form can explain the
conversion to the person typing.
Variants§
AlreadyValidEdtf
The input was already valid EDTF; only canonicalized.
CenturyPartInterval
early/mid/late or half-of-century mapped to a decade-rounded interval (N1).
ModifierDropped
An early/mid/late modifier was dropped as false precision and recorded (N1).
CenturyMask
“19th century” → 18XX: centuries run 1801–1900 (N2).
BcCenturyInterval
BC centuries have no digit mask (negative years cannot carry X);
emitted as exact intervals like -0199/-0100 (N2).
AstronomicalYear
BC year converted to astronomical numbering: year 0 exists, so
500 BC → -0499 (N3).
ElidedEndYear
“1914-18”: the end year inherits the start’s century (N4).
NumericUnambiguous
Numeric date order was provable from the input: a year-first layout, or a field whose value exceeds 12 (N5).
NumericResolvedByOption
Numeric date order resolved by Options::numeric_order (N5).
NumericResolvedByLocale
Numeric date order implied by the language’s convention (N5).
NumericOrderIrrelevant
Day and month were equal, so the order cannot matter (N5).
NumericOrderAmbiguous
Both numeric readings are plausible; each is reported (N5).
DecadeAmbiguity
A decade form with more than one reading (“1900s”, “the 80s”) (N6).
DefaultCenturyApplied
Bare decade resolved by Options::default_century (N6).
SeasonCode
Season name mapped to an ISO 8601-2 sub-year grouping code (N7).
OpenInterval
before/after rendered as an open interval ../X or X/.. (N8).
MissingYearMasked
A date with no year: the year is masked as XXXX (N9).
QualifierDistributed
A whole-expression qualifier was distributed over interval endpoints (N10).
OrAlternatives
“X or Y”: each alternative reported instead of picking one (N14).
SeasonRangeCollision
NNNN-NN collides between an EDTF sub-year code and an elided year
range; both readings reported (N13).
RomanCentury
Century read from a Roman numeral, Cyrillic lookalike letters tolerated (“XIX век”, “ХІХ век”) (N15).
DecadeOfCentury
A bare decade tied to an explicit century (“60-е годы XIX века” →
186X) (N6).
EndpointYearDistributed
A range endpoint without a year inherited the other endpoint’s stated
year (“June-July 1940” → 1940-06/1940-07) (N16).
CrossYearSeason
“winter 1941-42” may be one boundary-spanning winter or a season-to-year range; both readings reported (N17).