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:
parent
117ab7737a
commit
d8a64a90ec
1 changed files with 17 additions and 17 deletions
|
@ -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(),
|
||||||
|
))),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue