aboutsummaryrefslogtreecommitdiff
path: root/src/object.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/object.rs')
-rw-r--r--src/object.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/object.rs b/src/object.rs
index 061f58e..0068fc2 100644
--- a/src/object.rs
+++ b/src/object.rs
@@ -122,6 +122,13 @@ pub fn read_value(
}
impl Value {
+ pub fn class_name(&self) -> Option<&String> {
+ if let Value::Object { class, .. } = self {
+ Some(class)
+ } else {
+ None
+ }
+ }
pub fn as_class(self, name: &str) -> Option<BTreeMap<String, Value>> {
if let Value::Object { class, fields } = self {
if class == name { Some(fields) } else { None }
@@ -150,6 +157,34 @@ impl Value {
None
}
}
+ pub fn as_u32(&self) -> Option<u32> {
+ if let Value::U32(s) = self {
+ Some(*s)
+ } else {
+ None
+ }
+ }
+ pub fn as_u16(&self) -> Option<u16> {
+ if let Value::U16(s) = self {
+ Some(*s)
+ } else {
+ None
+ }
+ }
+ pub fn as_bool(&self) -> Option<bool> {
+ if let Value::Bool(s) = self {
+ Some(*s)
+ } else {
+ None
+ }
+ }
+ pub fn as_array(self) -> Option<Vec<Value>> {
+ if let Value::Array(s) = self {
+ Some(s)
+ } else {
+ None
+ }
+ }
pub fn to_json(self) -> serde_json::Value {
match self {
Value::Bool(x) => serde_json::Value::Bool(x),