diff options
Diffstat (limited to 'rust/src')
| -rw-r--r-- | rust/src/api_helpers.rs | 72 | 
1 files changed, 72 insertions, 0 deletions
| diff --git a/rust/src/api_helpers.rs b/rust/src/api_helpers.rs index 96fc898e..b1d2de94 100644 --- a/rust/src/api_helpers.rs +++ b/rust/src/api_helpers.rs @@ -21,6 +21,78 @@ pub struct EditContext {      pub autoaccept: bool,  } +#[derive(Clone,Copy,PartialEq)] +pub struct ExpandFlags { +    pub files: bool, +    pub container: bool, +    pub releases: bool, +    pub creators: bool, +} + +impl ExpandFlags { + +    pub fn from_string(param: &str) -> ExpandFlags { +        let list: Vec<&str> = param.split_terminator(",").collect(); +        ExpandFlags::from_strings(&list) +    } +    pub fn from_strings(list: &[&str]) -> ExpandFlags { +        if list.contains(&"none") { +            ExpandFlags::none() +        } else if list.contains(&"all") { +            ExpandFlags::all() +        } else { +            ExpandFlags { +                files: list.contains(&"files"), +                container: list.contains(&"container"), +                releases: list.contains(&"releases"), +                creators: list.contains(&"creators"), +            } +        } +    } +    pub fn all() -> ExpandFlags { +        ExpandFlags { +            files: true, +            container: true, +            releases: true, +            creators: true, +        } +    } +    pub fn none() -> ExpandFlags { +        ExpandFlags { +            files: false, +            container: false, +            releases: false, +            creators: false, +        } +    } +} + +#[test] +fn test_expand_flags() { +    assert!(ExpandFlags::from_strings(&vec![]).files == false); +    assert!(ExpandFlags::from_strings(&vec!["files"]).files == true); +    assert!(ExpandFlags::from_strings(&vec!["file"]).files == false); +    let all = ExpandFlags::from_strings(&vec!["files", "container", "other_thing", "releases", "creators"]); +    assert!(all == ExpandFlags { +        files: true, +        container: true, +        releases: true, +        creators: true +    }); +    assert!(ExpandFlags::from_string("").files == false); +    assert!(ExpandFlags::from_string("files").files == true); +    assert!(ExpandFlags::from_string("something,,files").files == true); +    assert!(ExpandFlags::from_string("file").files == false); +    let all = ExpandFlags::from_string("files,container,other_thing,releases,creators"); +    assert!(all == ExpandFlags { +        files: true, +        container: true, +        releases: true, +        creators: true +    }); +    assert!(all == ExpandFlags::all()); +} +  pub fn make_edit_context(      conn: &DbConn,      editgroup_id: Option<FatCatId>, | 
