cmake_parser/doc/command/scripting/
mark_as_advanced.rs1use cmake_parser_derive::CMake;
2
3use crate::{
4 doc::command_scope::{CommandScope, ToCommandScope},
5 Token,
6};
7
8#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12#[cmake(pkg = "crate", default = "vars")]
13pub struct MarkAsAdvanced<'t> {
14 #[cmake(positional)]
15 pub mode: Option<Mode>,
16 #[cmake(rename = "")]
17 pub vars: Vec<Token<'t>>,
18}
19
20impl<'t> ToCommandScope for MarkAsAdvanced<'t> {
21 fn to_command_scope(&self) -> CommandScope {
22 CommandScope::Scripting
23 }
24}
25
26#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
27#[cmake(pkg = "crate", list)]
28pub enum Mode {
29 Clear,
30 Force,
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36 use crate::doc::cmake_parse::tests::tokens_vec;
37 use crate::*;
38 use pretty_assertions::assert_eq;
39
40 #[test]
41 fn mark_as_advanced() {
42 let src = include_bytes!("../../../../../fixture/commands/scripting/mark_as_advanced");
43 let cmakelists = parse_cmakelists(src).unwrap();
44 let doc = Doc::from(cmakelists);
45 assert_eq!(
46 doc.to_commands_iter().collect::<Vec<_>>(),
47 vec![
48 Ok(Command::MarkAsAdvanced(Box::new(MarkAsAdvanced {
49 mode: None,
50 vars: tokens_vec([b"name1", b"name2"]),
51 }))),
52 Ok(Command::MarkAsAdvanced(Box::new(MarkAsAdvanced {
53 mode: Some(Mode::Clear),
54 vars: tokens_vec([b"name1"]),
55 }))),
56 ]
57 )
58 }
59}