cubing_core/
experimental_twizzle_link.rs1use url::Url;
2
3use crate::alg::Alg;
4
5#[derive(Default)]
6pub enum ExperimentalSetupAnchor {
7 #[default]
8 Start,
9 End,
10}
11
12#[derive(Default)]
13pub struct ExperimentalTwizzleLinkParameters<'a> {
14 pub setup: Option<&'a Alg>,
15 pub alg: Option<&'a Alg>,
16 pub puzzle: Option<&'a str>,
17 pub stickering: Option<&'a str>,
18 pub setup_anchor: Option<&'a str>,
19}
20
21pub fn experimental_twizzle_link(parameters: ExperimentalTwizzleLinkParameters) -> String {
22 let mut url = Url::parse("https://alpha.twizzle.net/edit/").unwrap();
23 if let Some(setup) = parameters.setup {
24 url.query_pairs_mut()
25 .append_pair("setup-alg", &setup.to_string());
26 }
27 if let Some(alg) = parameters.alg {
28 url.query_pairs_mut().append_pair("alg", &alg.to_string());
29 }
30 if let Some(puzzle) = parameters.puzzle {
31 url.query_pairs_mut().append_pair("puzzle", puzzle);
32 }
33 if let Some(setup_anchor) = parameters.setup_anchor {
34 url.query_pairs_mut()
35 .append_pair("setup_anchor", setup_anchor);
36 }
37 if let Some(stickering) = parameters.stickering {
38 url.query_pairs_mut().append_pair("stickering", stickering);
39 }
40 url.to_string()
41}