Mountain/IPC/WindServiceHandlers/Utilities/JsonValueHelpers.rs
1#![allow(non_snake_case, unused_variables, dead_code, unused_imports)]
2
3//! Serde-Value helpers shared across Wind handlers. `v_str` extracts a
4//! string from either a raw JSON string or a VS Code `UriComponents`
5//! object (`external` / `path` field). Any new cross-cutting coercer that
6//! accepts both shapes belongs here.
7
8use serde_json::Value;
9
10pub fn v_str(Value:&Value) -> Option<String> {
11 if let Some(s) = Value.as_str() {
12 return Some(s.to_string());
13 }
14
15 if let Some(Object) = Value.as_object() {
16 if let Some(s) = Object.get("external").and_then(|V| V.as_str()) {
17 return Some(s.to_string());
18 }
19
20 if let Some(s) = Object.get("path").and_then(|V| V.as_str()) {
21 return Some(s.to_string());
22 }
23 }
24
25 None
26}