Skip to content

Commit 9cff928

Browse files
Merge pull request #128 from code0-tech/#118-integer-support
Add Integer Support
2 parents 4edec84 + 3a34b4c commit 9cff928

13 files changed

Lines changed: 791 additions & 263 deletions

File tree

Cargo.lock

Lines changed: 6 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ edition = "2024"
88

99
[workspace.dependencies]
1010
code0-flow = { version = "0.0.28" }
11-
tucana = { version = "0.0.62" }
11+
tucana = { version = "0.0.63" }
1212
tokio = { version = "1.44.1", features = ["rt-multi-thread", "signal"] }
1313
log = "0.4.27"
1414
futures-lite = "2.6.0"

crates/core/src/context/argument.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ use crate::context::signal::Signal;
22
use crate::runtime::error::RuntimeError;
33
use std::convert::Infallible;
44
use tucana::shared::value::Kind;
5-
use tucana::shared::{ListValue, Struct, Value};
5+
use tucana::shared::{ListValue, NumberValue, Struct, Value};
66

7+
use crate::value::number_to_f64;
78
#[derive(Clone, Debug)]
89
pub enum Argument {
910
// Eval => Evaluated Value
@@ -40,12 +41,23 @@ impl TryFromArgument for Value {
4041
}
4142
}
4243

44+
impl TryFromArgument for NumberValue {
45+
fn try_from_argument(a: &Argument) -> Result<Self, Signal> {
46+
match a {
47+
Argument::Eval(Value {
48+
kind: Some(Kind::NumberValue(n)),
49+
}) => Ok(n.clone()),
50+
_ => Err(type_err("Expected number", a)),
51+
}
52+
}
53+
}
54+
4355
impl TryFromArgument for f64 {
4456
fn try_from_argument(a: &Argument) -> Result<Self, Signal> {
4557
match a {
4658
Argument::Eval(Value {
4759
kind: Some(Kind::NumberValue(n)),
48-
}) => Ok(*n),
60+
}) => number_to_f64(n).ok_or_else(|| type_err("Expected number", a)),
4961
_ => Err(type_err("Expected number", a)),
5062
}
5163
}

crates/core/src/context/executor.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,17 @@ fn preview_value(value: &Value) -> String {
371371

372372
fn format_value_json(value: &Value) -> String {
373373
match value.kind.as_ref() {
374-
Some(Kind::NumberValue(v)) => v.to_string(),
374+
Some(Kind::NumberValue(v)) => {
375+
match v.number {
376+
Some(kind) => {
377+
match kind {
378+
tucana::shared::number_value::Number::Integer(i) => i.to_string(),
379+
tucana::shared::number_value::Number::Float(f) => f.to_string(),
380+
}
381+
}
382+
_ => "null".to_string(),
383+
}
384+
},
375385
Some(Kind::BoolValue(v)) => v.to_string(),
376386
Some(Kind::StringValue(v)) => format!("{:?}", v),
377387
Some(Kind::NullValue(_)) | None => "null".to_string(),

crates/core/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
pub mod context;
22
pub mod debug;
33
pub mod runtime;
4+
pub mod value;

0 commit comments

Comments
 (0)