1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-08-02 05:57:46 +00:00

Formatting fixes in expr

This commit is contained in:
Arpit Bhadauria 2023-12-03 15:09:12 +00:00
parent 117ab7737a
commit d8a64a90ec

View file

@ -89,12 +89,8 @@ impl RelationOp {
impl NumericOp { impl NumericOp {
fn eval(&self, left: &AstNode, right: &AstNode) -> ExprResult<NumOrStr> { fn eval(&self, left: &AstNode, right: &AstNode) -> ExprResult<NumOrStr> {
let a: BigInt = left let a: BigInt = left.eval()?.to_bigint()?;
.eval()? let b: BigInt = right.eval()?.to_bigint()?;
.to_bigint()?;
let b: BigInt = right
.eval()?
.to_bigint()?;
Ok(NumOrStr::Num(match self { Ok(NumOrStr::Num(match self {
Self::Add => a + b, Self::Add => a + b,
Self::Sub => a - b, Self::Sub => a - b,
@ -207,25 +203,25 @@ pub enum NumOrStr {
impl NumOrStr { impl NumOrStr {
pub fn to_usize(self: NumOrStr) -> Option<usize> { pub fn to_usize(self: NumOrStr) -> Option<usize> {
match self.to_bigint() { match self.to_bigint() {
Ok(num) => {num.to_usize()} Ok(num) => num.to_usize(),
Err(_) => {None}, Err(_) => None,
} }
} }
pub fn to_string(self: &NumOrStr) -> String { pub fn to_string(self: &NumOrStr) -> String {
match self { match self {
NumOrStr::Num(num) => {num.to_string()} NumOrStr::Num(num) => num.to_string(),
NumOrStr::Str(str) => {str.to_string()}, NumOrStr::Str(str) => str.to_string(),
} }
} }
pub fn to_bigint(self: NumOrStr) -> ExprResult<BigInt> { pub fn to_bigint(self: NumOrStr) -> ExprResult<BigInt> {
match self { match self {
NumOrStr::Num(num) => {Ok(num)} NumOrStr::Num(num) => Ok(num),
NumOrStr::Str(str) => { match str.parse::<BigInt>() { NumOrStr::Str(str) => match str.parse::<BigInt>() {
Ok(val) => {Ok(val)}, Ok(val) => Ok(val),
Err(_) => {Err(ExprError::NonIntegerArgument)} Err(_) => Err(ExprError::NonIntegerArgument),
}}, },
} }
} }
} }
@ -284,9 +280,13 @@ impl AstNode {
return Ok(NumOrStr::Str(String::new())); return Ok(NumOrStr::Str(String::new()));
}; };
Ok(NumOrStr::Str(string.chars().skip(pos).take(length).collect())) Ok(NumOrStr::Str(
string.chars().skip(pos).take(length).collect(),
))
} }
Self::Length { string } => Ok(NumOrStr::Num(BigInt::from(string.eval()?.to_string().chars().count()))), Self::Length { string } => Ok(NumOrStr::Num(BigInt::from(
string.eval()?.to_string().chars().count(),
))),
} }
} }
} }