summaryrefslogtreecommitdiff
path: root/serde_v8/payload.rs
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2022-03-24 11:23:40 +0100
committerGitHub <noreply@github.com>2022-03-24 11:23:40 +0100
commit6516130b0138ef382a0588f983287fb463222086 (patch)
treef250150295fb4d7a023c1fa7d92da621ac804340 /serde_v8/payload.rs
parentc52d72e8e115f30be32cbb2a91a4c3aa117c328c (diff)
chore: drop src/ in bench_util & serde_v8 (#14097)
To align with conventions used in our other crates
Diffstat (limited to 'serde_v8/payload.rs')
-rw-r--r--serde_v8/payload.rs40
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")
+ }
+}