Skip to content

Commit 5badf05

Browse files
committed
serde for InfixExpression
1 parent f0c69c4 commit 5badf05

File tree

6 files changed

+20
-6
lines changed

6 files changed

+20
-6
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ version = "0.1.0"
44
edition = "2021"
55

66
[dependencies]
7-
serde = { version = "1.0.209", features = ["derive"] }
7+
serde = { version = "1.0.210", features = ["derive"] }

src/enums/infix_token.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
use crate::enums::operator::Operator;
22
use crate::Parenthesis;
3+
use serde::{Deserialize, Serialize};
34

4-
#[derive(Debug, PartialEq)]
5+
#[derive(Debug, PartialEq, Serialize, Deserialize)]
6+
#[serde(rename_all = "snake_case", tag = "type")]
57
pub enum InfixToken<Predicate> {
68
Parenthesis(Parenthesis),
79
Operator(Operator),

src/enums/parenthesis.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
#[derive(Debug, PartialEq)]
1+
use serde::{Deserialize, Serialize};
2+
3+
#[derive(PartialEq, Debug, Serialize, Deserialize)]
4+
#[serde(rename_all = "snake_case", tag = "value")]
25
pub enum Parenthesis {
36
Open,
47
Close,

src/enums/postfix_token.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use serde::{Deserialize, Serialize};
21
use crate::enums::operator::Operator;
2+
use serde::{Deserialize, Serialize};
33

44
#[derive(Debug, PartialEq, Serialize, Deserialize)]
55
#[serde(rename_all = "snake_case", tag = "type")]

src/structs/infix_expression.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
use crate::internals::infix_stack_item::InfixStackItem;
22
use crate::{InfixToken, Parenthesis, PostfixExpression, PostfixToken};
3+
use serde::{Deserialize, Serialize};
34

4-
#[derive(Debug, PartialEq)]
5+
#[derive(Debug, PartialEq, Serialize, Deserialize)]
6+
#[serde(rename_all = "snake_case")]
57
pub struct InfixExpression<Predicate> {
8+
#[serde(rename = "infix_tokens")]
69
tokens: Vec<InfixToken<Predicate>>,
710
}
811

@@ -58,6 +61,10 @@ impl<Predicate> InfixExpression<Predicate> {
5861
Self { tokens }
5962
}
6063

64+
pub fn is_valid(&self) -> bool {
65+
Self::are_tokens_valid(&self.tokens)
66+
}
67+
6168
fn are_tokens_valid(tokens: &[InfixToken<Predicate>]) -> bool {
6269
let mut operator_stack: Vec<InfixStackItem> = Vec::new();
6370
let mut predicate_cnt: usize = 0;

src/structs/postfix_expression.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ use crate::enums::postfix_token::PostfixToken;
22
use crate::internals::postfix_stack_item::PostfixStackItem;
33
use crate::traits::predicate_evaluator::PredicateEvaluator;
44
use crate::{InfixExpression, InfixToken, Operator, Parenthesis};
5-
use std::collections::VecDeque;
65
use serde::{Deserialize, Serialize};
6+
use std::collections::VecDeque;
77

88
#[derive(Debug, PartialEq, Serialize, Deserialize)]
9+
#[serde(rename_all = "snake_case")]
910
pub struct PostfixExpression<Predicate> {
11+
#[serde(rename = "postfix_tokens")]
1012
tokens: Vec<PostfixToken<Predicate>>,
1113
}
1214

0 commit comments

Comments
 (0)