nipah_tokenizer 0.1.0

A powerful yet simple text tokenizer for your everyday needs!
Documentation
use std::ops::Add;

use crate::token::TokenPosition;

#[derive(Debug, PartialEq, Clone)]
pub struct SplitItem {
    pub text: String,
    pub position: TokenPosition
}
impl SplitItem {
    pub fn new(text: String, position: TokenPosition) -> SplitItem {
        SplitItem {
            text,
            position
        }
    }

    pub fn new_pl(text: String, position: i32, line: i32) -> SplitItem {
        SplitItem {
            text,
            position: TokenPosition::new(position, line)
        }
    }
}

impl Add for SplitItem {
    type Output = SplitItem;

    fn add(self, rhs: SplitItem) -> SplitItem {
        SplitItem {
            text: self.text + &rhs.text,
            position: self.position + rhs.position
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_add() {
        let split_item = SplitItem {
            text: "Hello,".to_string(),
            position: TokenPosition::new(0, 0)
        };
        let sum_item = SplitItem {
            text: " World!".to_string(),
            position: TokenPosition::new(0, 0)
        };

        assert_eq!(split_item + sum_item, SplitItem {
            text: "Hello, World!".to_string(),
            position: TokenPosition::new(0, 0)
        });
    }
}