MCPcopy Create free account
hub / github.com/aiscriptdev/aiscript / from_directive

Method from_directive

aiscript-directive/src/route/docs.rs:13–57  ·  view source on GitHub ↗
(directive: Directive)

Source from the content-addressed store, hash-verified

11
12impl FromDirective for Docs {
13 fn from_directive(directive: Directive) -> Result<Self, String> {
14 if directive.name != "docs" {
15 return Err(format!(
16 "Expected 'docs' directive, got '{}'",
17 directive.name
18 ));
19 }
20
21 let mut docs = Docs::default();
22
23 if let DirectiveParams::KeyValue(params) = &directive.params {
24 // Parse deprecated flag
25 if let Some(Value::Bool(value)) = params.get("deprecated") {
26 docs.deprecated = *value;
27 } else if params.contains_key("deprecated") {
28 return Err("'deprecated' parameter must be a boolean".to_string());
29 }
30
31 // Parse hidden flag
32 if let Some(Value::Bool(value)) = params.get("hidden") {
33 docs.hidden = *value;
34 } else if params.contains_key("hidden") {
35 return Err("'hidden' parameter must be a boolean".to_string());
36 }
37
38 // Parse tag
39 if let Some(Value::String(value)) = params.get("tag") {
40 docs.tag = Some(value.clone());
41 } else if params.contains_key("tag") {
42 return Err("'tag' parameter must be a string".to_string());
43 }
44
45 // Check for unknown parameters
46 for key in params.keys() {
47 match key.as_str() {
48 "deprecated" | "hidden" | "tag" => {}
49 _ => return Err(format!("Unknown parameter '{}' for @docs directive", key)),
50 }
51 }
52 } else {
53 return Err("@docs directive requires key-value parameters".to_string());
54 }
55
56 Ok(docs)
57 }
58}

Callers

nothing calls this directly

Calls 3

getMethod · 0.45
cloneMethod · 0.45
as_strMethod · 0.45

Tested by

no test coverage detected