shindan_maker/
selectors.rs1use scraper::Selector;
2use once_cell::sync::Lazy;
3
4pub(crate) static SELECTORS: Lazy<Selectors> = Lazy::new(Selectors::new);
5
6#[derive(Clone)]
7pub(crate) struct Selectors {
8 pub(crate) shindan_title: Selector,
9 pub(crate) shindan_description_display: Selector,
10 pub(crate) form: Vec<Selector>,
11
12 #[cfg(feature = "segments")]
13 pub(crate) post_display: Selector,
14
15 #[cfg(feature = "html")]
16 pub(crate) title_and_result: Selector,
17 #[cfg(feature = "html")]
18 pub(crate) script: Selector,
19 #[cfg(feature = "html")]
20 pub(crate) effects: Vec<Selector>,
21}
22
23impl Selectors {
24 fn new() -> Self {
25 Self {
26 shindan_title: Selector::parse("#shindanTitle").expect("Failed to parse selector"),
27 shindan_description_display: Selector::parse("#shindanDescriptionDisplay").expect("Failed to parse selector"),
28 form: vec![
29 Selector::parse("input[name=_token]").expect("Failed to parse selector"),
30 Selector::parse("input[name=randname]").expect("Failed to parse selector"),
31 Selector::parse("input[name=type]").expect("Failed to parse selector"),
32 ],
33
34 #[cfg(feature = "segments")]
35 post_display: Selector::parse("#post_display").expect("Invalid selector"),
36
37 #[cfg(feature = "html")]
38 title_and_result: Selector::parse("#title_and_result").expect("Failed to parse selector"),
39 #[cfg(feature = "html")]
40 script: Selector::parse("script").expect("Invalid script selector"),
41 #[cfg(feature = "html")]
42 effects: vec![
43 Selector::parse("span.shindanEffects[data-mode=ef_typing]").expect("Invalid script selector"),
44 Selector::parse("span.shindanEffects[data-mode=ef_shuffle]").expect("Invalid script selector"),
45 ],
46 }
47 }
48}