mirror of
https://github.com/voltrevo/ValueScript.git
synced 2026-04-18 03:00:27 -04:00
inf -> Infinity
This commit is contained in:
@@ -22,6 +22,14 @@ static TO_FIXED: NativeFunction = NativeFunction {
|
||||
fn_: |this: &mut Val, params: Vec<Val>| -> Val {
|
||||
match this {
|
||||
Val::Number(number) => {
|
||||
if number.is_infinite() {
|
||||
return if number.is_sign_positive() {
|
||||
Val::String(Rc::new("Infinity".to_string()))
|
||||
} else {
|
||||
Val::String(Rc::new("-Infinity".to_string()))
|
||||
};
|
||||
}
|
||||
|
||||
let mut precision = match params.get(0) {
|
||||
Some(p) => p.to_number(),
|
||||
_ => return Val::String(Rc::new(this.val_to_string())),
|
||||
@@ -94,6 +102,14 @@ static VALUE_OF: NativeFunction = NativeFunction {
|
||||
};
|
||||
|
||||
fn format_exponential(number: f64, precision: Option<usize>) -> Val {
|
||||
if number.is_infinite() {
|
||||
return if number.is_sign_positive() {
|
||||
Val::String(Rc::new("Infinity".to_string()))
|
||||
} else {
|
||||
Val::String(Rc::new("-Infinity".to_string()))
|
||||
};
|
||||
}
|
||||
|
||||
let exp_format = match precision {
|
||||
Some(p) => format!("{:.*e}", p, number),
|
||||
None => format!("{:e}", number),
|
||||
|
||||
@@ -96,7 +96,17 @@ impl ValTrait for Val {
|
||||
Undefined => "undefined".to_string(),
|
||||
Null => "null".to_string(),
|
||||
Bool(b) => b.to_string(),
|
||||
Number(x) => x.to_string(), // TODO: Match js's number string format
|
||||
Number(x) => {
|
||||
if x.is_infinite() {
|
||||
if x.is_sign_positive() {
|
||||
"Infinity".to_string()
|
||||
} else {
|
||||
"-Infinity".to_string()
|
||||
}
|
||||
} else {
|
||||
x.to_string()
|
||||
}
|
||||
} // TODO: Match js's number string format
|
||||
String(s) => s.to_string(),
|
||||
Array(vals) => {
|
||||
if vals.elements.len() == 0 {
|
||||
|
||||
Reference in New Issue
Block a user