MCPcopy Create free account
hub / github.com/PowerShell/DSC / invoke

Method invoke

lib/dsc-lib/src/functions/substring.rs:33–97  ·  view source on GitHub ↗
(&self, args: &[Value], _context: &Context)

Source from the content-addressed store, hash-verified

31 }
32
33 fn invoke(&self, args: &[Value], _context: &Context) -> Result<Value, DscError> {
34 debug!("{}", t!("functions.substring.invoked"));
35
36 let string_to_parse = args[0].as_str().unwrap();
37 let start_index_value = args[1].as_i64().unwrap();
38
39 if start_index_value < 0 {
40 return Err(DscError::FunctionArg(
41 "substring".to_string(),
42 t!("functions.substring.startIndexNegative").to_string(),
43 ));
44 }
45
46 let start_index = usize::try_from(start_index_value).map_err(|_| {
47 DscError::FunctionArg(
48 "substring".to_string(),
49 t!("functions.substring.startIndexValueTooLarge").to_string(),
50 )
51 })?;
52 let string_length = string_to_parse.chars().count();
53
54 if start_index > string_length {
55 return Err(DscError::FunctionArg(
56 "substring".to_string(),
57 t!("functions.substring.startIndexTooLarge").to_string(),
58 ));
59 }
60
61 let length = if args.len() == 2 {
62 string_length - start_index
63 } else {
64 let length_value = args[2].as_i64().unwrap();
65
66 if length_value < 0 {
67 return Err(DscError::FunctionArg(
68 "substring".to_string(),
69 t!("functions.substring.lengthNegative").to_string(),
70 ));
71 }
72
73 let length = usize::try_from(length_value).map_err(|_| {
74 DscError::FunctionArg(
75 "substring".to_string(),
76 t!("functions.substring.lengthValueTooLarge").to_string(),
77 )
78 })?;
79
80 if start_index + length > string_length {
81 return Err(DscError::FunctionArg(
82 "substring".to_string(),
83 t!("functions.substring.lengthTooLarge").to_string(),
84 ));
85 }
86
87 length
88 };
89
90 let result: String = string_to_parse

Callers

nothing calls this directly

Calls 2

FunctionArgEnum · 0.85
as_strMethod · 0.80

Tested by

no test coverage detected