livesplit_core/run/parser/
timer_kind.rs1use alloc::borrow::Cow;
2
3use core::fmt;
4
5#[derive(Clone, Eq, PartialEq, Hash, Debug)]
7pub enum TimerKind<'a> {
8 LiveSplit,
10 WSplit,
12 SplitterZ,
14 ShitSplit,
16 Splitty,
18 TimeSplitTracker,
20 Portal2LiveTimer,
22 FaceSplit,
24 Flitter,
26 Llanfair,
28 LlanfairGered,
30 Urn,
32 SourceLiveTimer,
34 Splitterino,
36 SpeedRunIGT,
38 Generic(Cow<'a, str>),
41}
42
43impl TimerKind<'_> {
44 pub fn into_owned(self) -> TimerKind<'static> {
46 match self {
47 TimerKind::LiveSplit => TimerKind::LiveSplit,
48 TimerKind::WSplit => TimerKind::WSplit,
49 TimerKind::SplitterZ => TimerKind::SplitterZ,
50 TimerKind::ShitSplit => TimerKind::ShitSplit,
51 TimerKind::Splitty => TimerKind::Splitty,
52 TimerKind::TimeSplitTracker => TimerKind::TimeSplitTracker,
53 TimerKind::Portal2LiveTimer => TimerKind::Portal2LiveTimer,
54 TimerKind::FaceSplit => TimerKind::FaceSplit,
55 TimerKind::Flitter => TimerKind::Flitter,
56 TimerKind::Llanfair => TimerKind::Llanfair,
57 TimerKind::LlanfairGered => TimerKind::LlanfairGered,
58 TimerKind::Urn => TimerKind::Urn,
59 TimerKind::SourceLiveTimer => TimerKind::SourceLiveTimer,
60 TimerKind::Splitterino => TimerKind::Splitterino,
61 TimerKind::SpeedRunIGT => TimerKind::SpeedRunIGT,
62 TimerKind::Generic(v) => TimerKind::Generic(v.into_owned().into()),
63 }
64 }
65}
66
67impl fmt::Display for TimerKind<'_> {
68 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
69 f.write_str(match self {
70 TimerKind::LiveSplit => "LiveSplit",
71 TimerKind::WSplit => "WSplit",
72 TimerKind::SplitterZ => "SplitterZ",
73 TimerKind::ShitSplit => "ShitSplit",
74 TimerKind::Splitty => "Splitty",
75 TimerKind::TimeSplitTracker => "Time Split Tracker",
76 TimerKind::Portal2LiveTimer => "Portal 2 Live Timer",
77 TimerKind::FaceSplit => "FaceSplit",
78 TimerKind::Flitter => "Flitter",
79 TimerKind::Llanfair => "Llanfair",
80 TimerKind::LlanfairGered => "Llanfair (Gered's fork)",
81 TimerKind::Urn => "Urn",
82 TimerKind::SourceLiveTimer => "SourceLiveTimer",
83 TimerKind::Splitterino => "Splitterino",
84 TimerKind::SpeedRunIGT => "SpeedRunIGT",
85 TimerKind::Generic(name) => name,
86 })
87 }
88}