diff options
Diffstat (limited to 'serde_v8/payload.rs')
-rw-r--r-- | serde_v8/payload.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/serde_v8/payload.rs b/serde_v8/payload.rs new file mode 100644 index 000000000..c9f3e85aa --- /dev/null +++ b/serde_v8/payload.rs @@ -0,0 +1,40 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. + +// TODO: maybe add a Payload type that holds scope & v8::Value +// so it can implement Deserialize by itself + +// Classifies v8::Values into sub-types +#[derive(Debug)] +pub enum ValueType { + Null, + Bool, + Number, + String, + Array, + ArrayBuffer, + ArrayBufferView, + Object, +} + +impl ValueType { + pub fn from_v8(v: v8::Local<v8::Value>) -> ValueType { + if v.is_boolean() { + return Self::Bool; + } else if v.is_number() { + return Self::Number; + } else if v.is_string() { + return Self::String; + } else if v.is_array() { + return Self::Array; + } else if v.is_array_buffer() { + return Self::ArrayBuffer; + } else if v.is_array_buffer_view() { + return Self::ArrayBufferView; + } else if v.is_object() { + return Self::Object; + } else if v.is_null_or_undefined() { + return Self::Null; + } + panic!("serde_v8: unknown ValueType for v8::Value") + } +} |