MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / maestro_selector

Function maestro_selector

packages/server/src/main/maestro.rs:300–330  ·  view source on GitHub ↗
(value: &YamlValue)

Source from the content-addressed store, hash-verified

298}
299
300fn maestro_selector(value: &YamlValue) -> anyhow::Result<Value> {
301 if let Some(text) = value.as_str() {
302 return Ok(serde_json::json!({ "text": text, "regex": true }));
303 }
304 let Some(mapping) = value.as_mapping() else {
305 anyhow::bail!("Selector must be a string or mapping.");
306 };
307 let text = yaml_string_field(mapping, "text");
308 let explicit_regex = yaml_bool_field(mapping, "regex");
309 let use_regex = explicit_regex.unwrap_or_else(|| text.is_some());
310 let id = yaml_string_field(mapping, "id").map(|id| {
311 if use_regex && explicit_regex != Some(true) {
312 anchored_regex_literal(&id)
313 } else {
314 id
315 }
316 });
317 Ok(serde_json::json!({
318 "text": text,
319 "id": id,
320 "label": yaml_string_field(mapping, "label"),
321 "value": yaml_string_field(mapping, "value"),
322 "elementType": yaml_string_field(mapping, "type"),
323 "index": yaml_u64_field(mapping, "index"),
324 "enabled": yaml_bool_field(mapping, "enabled"),
325 "checked": yaml_bool_field(mapping, "checked"),
326 "focused": yaml_bool_field(mapping, "focused"),
327 "selected": yaml_bool_field(mapping, "selected"),
328 "regex": use_regex,
329 }))
330}
331
332fn anchored_regex_literal(value: &str) -> String {
333 format!("^{}$", regex::escape(value))

Calls 4

yaml_string_fieldFunction · 0.85
yaml_bool_fieldFunction · 0.85
anchored_regex_literalFunction · 0.85
as_strMethod · 0.45