MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / _struct_to_rquickjs

Function _struct_to_rquickjs

chirpstack/src/codec/convert.rs:77–106  ·  view source on GitHub ↗
(
    ctx: &rquickjs::Ctx<'js>,
    val: &prost_types::Value,
)

Source from the content-addressed store, hash-verified

75}
76
77fn _struct_to_rquickjs<'js>(
78 ctx: &rquickjs::Ctx<'js>,
79 val: &prost_types::Value,
80) -> rquickjs::Value<'js> {
81 match &val.kind {
82 None => rquickjs::Value::new_null(ctx.clone()),
83 Some(val) => match val {
84 prost_types::value::Kind::NullValue(_) => rquickjs::Value::new_null(ctx.clone()),
85 prost_types::value::Kind::NumberValue(v) => rquickjs::Value::new_float(ctx.clone(), *v),
86 prost_types::value::Kind::StringValue(v) => {
87 rquickjs::Value::from_string(rquickjs::String::from_str(ctx.clone(), v).unwrap())
88 }
89 prost_types::value::Kind::BoolValue(v) => rquickjs::Value::new_bool(ctx.clone(), *v),
90 prost_types::value::Kind::StructValue(v) => {
91 let out = rquickjs::Object::new(ctx.clone()).unwrap();
92 for (k, v) in &v.fields {
93 out.set(k, _struct_to_rquickjs(ctx, v)).unwrap();
94 }
95 rquickjs::Value::from_object(out)
96 }
97 prost_types::value::Kind::ListValue(v) => {
98 let out = rquickjs::Array::new(ctx.clone()).unwrap();
99 for (i, v) in v.values.iter().enumerate() {
100 out.set(i, _struct_to_rquickjs(ctx, v)).unwrap();
101 }
102 rquickjs::Value::from_array(out)
103 }
104 },
105 }
106}
107
108pub fn pb_json_to_prost(obj: &pbjson_types::Struct) -> prost_types::Struct {
109 let mut out = prost_types::Struct::default();

Callers 1

struct_to_rquickjsFunction · 0.85

Calls 3

unwrapMethod · 0.80
setMethod · 0.80
iterMethod · 0.80

Tested by

no test coverage detected