Namespace ModernLrc.Model
Classes
- EquatableArray
Static factory invoked by CollectionBuilderAttribute for collection-expression construction.
- LrcDocumentExtensions
Extension helpers for traversing and querying an LrcDocument. These are the playback hot path — a karaoke / lyric-display consumer typically calls FindLineAt(LrcDocument, TimeSpan) per video frame.
- LrcEnhancedLine
An Enhanced LRC line carrying word-level timing. Each word's Text includes trailing whitespace up to the next
<marker so concatenation reproduces the source line exactly.
- LrcLine
A single lyric line. Sealed hierarchy: every LrcLine is exactly one of LrcPlainLine or LrcEnhancedLine.
- LrcMetadata
Parsed document metadata: strongly-typed accessors for known ID tags (last-wins on conflict in source order) plus the verbatim RawTags collection containing every tag the parser encountered, in source order.
- LrcPlainLine
A simple LRC line with a single text body verbatim from after the last
]to the line terminator (no trim).
Structs
- EquatableArray<T>
Wraps an ImmutableArray<T> with element-wise content equality so records that contain it auto-generate correct equality. The default struct value normalizes to Empty for read operations.
- LrcTag
An ID tag in source order. Key is normalized to lowercase invariant by the parser; Value is verbatim.
- LrcTimestamp
Non-negative monotonic time offset within an LRC document, stored as 100ns ticks (matching Ticks). LRC syntax has no negative form, so every factory enforces
≥ 0;LrcDocumentExtensions.GetEffectiveTimereturns TimeSpan (signed) for offset application.
- LrcWord
One word in an Enhanced LRC line. Text includes any trailing whitespace up to the next
<marker or line end so thatstring.Concat(words.Select(w => w.Text))reproduces the line text exactly.
Enums
- LrcVoice
Walaoke voice marker carried on lyric lines.