From 798539d219762ac0f774c67b455d4add64db99c9 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Tue, 27 Dec 2016 09:52:11 -0700 Subject: [PATCH] Add convenience from_* methods to Sign and Radix --- src/lexer/number.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/lexer/number.rs b/src/lexer/number.rs index a558bf0..59e06c8 100644 --- a/src/lexer/number.rs +++ b/src/lexer/number.rs @@ -6,6 +6,10 @@ pub struct Number { value: f64, } impl Number { + pub fn from_int(value: i64) -> Number { + Number { value: value as f64 } + } + pub fn new(value: f64) -> Number { Number { value: value } } @@ -91,6 +95,16 @@ impl NumberBuilder { } impl Radix { + pub fn from_char(c: char) -> Option { + match c { + 'b' => Some(Radix::Bin), + 'o' => Some(Radix::Oct), + 'd' => Some(Radix::Dec), + 'h' => Some(Radix::Hex), + _ => None, + } + } + pub fn value(&self) -> u32 { match *self { Radix::Bin => 2, @@ -105,6 +119,15 @@ impl Radix { } } +impl Sign { + pub fn from_char(c: char) -> Option { + match c { + '+' => Some(Sign::Pos), + '-' => Some(Sign::Neg), + _ => None, + } + } +} #[cfg(test)] mod tests { @@ -126,7 +149,7 @@ mod tests { } #[test] - fn builds_decimals() { + fn builds_pointy_numbers() { let mut b = NumberBuilder::new(); b.extend_value('5'); assert_eq!(b.resolve().value, 5.0);