add char grid str methods
This commit is contained in:
		
							parent
							
								
									01edc3dfcc
								
							
						
					
					
						commit
						7a23fcb54b
					
				
					 1 changed files with 54 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,57 @@
 | 
			
		|||
use crate::PrimitiveGrid;
 | 
			
		||||
 | 
			
		||||
/// A grid containing UTF-8 characters.
 | 
			
		||||
pub type CharGrid = PrimitiveGrid<char>;
 | 
			
		||||
pub type CharGrid = PrimitiveGrid<char>;
 | 
			
		||||
 | 
			
		||||
impl CharGrid {
 | 
			
		||||
    /// Copies a column from the grid as a String.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Returns [None] if x is out of bounds.
 | 
			
		||||
    pub fn get_col_str(&self, x: usize) -> Option<String> {
 | 
			
		||||
        Some(String::from_iter(self.get_col(x)?))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Copies a row from the grid as a String.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Returns [None] if y is out of bounds.
 | 
			
		||||
    pub fn get_row_str(&self, y: usize) -> Option<String> {
 | 
			
		||||
        Some(String::from_iter(self.get_row(y)?))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Overwrites a row in the grid with a str.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Returns [None] if y is out of bounds or `row` is not of the correct size.
 | 
			
		||||
    pub fn set_row_str(&mut self, y: usize, value: &str) -> Option<()> {
 | 
			
		||||
        self.set_row(y, value.chars().collect::<Vec<_>>().as_ref())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Overwrites a column in the grid with a str.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Returns [None] if y is out of bounds or `row` is not of the correct size.
 | 
			
		||||
    pub fn set_col_str(&mut self, x: usize, value: &str) -> Option<()> {
 | 
			
		||||
        self.set_col(x, value.chars().collect::<Vec<_>>().as_ref())
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod test {
 | 
			
		||||
    use super::*;
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn col_str() {
 | 
			
		||||
        let mut grid = CharGrid::new(2, 3);
 | 
			
		||||
        assert_eq!(grid.get_col_str(2), None);
 | 
			
		||||
        assert_eq!(grid.get_col_str(1), Some(String::from("\0\0\0")));
 | 
			
		||||
        assert_eq!(grid.set_col_str(1, "abc"), Some(()));
 | 
			
		||||
        assert_eq!(grid.get_col_str(1), Some(String::from("abc")));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn row_str() {
 | 
			
		||||
        let mut grid = CharGrid::new(2, 3);
 | 
			
		||||
        assert_eq!(grid.get_row_str(3), None);
 | 
			
		||||
        assert_eq!(grid.get_row_str(1), Some(String::from("\0\0")));
 | 
			
		||||
        assert_eq!(grid.set_row_str(1, "abc"), None);
 | 
			
		||||
        assert_eq!(grid.set_row_str(1, "ab"), Some(()));
 | 
			
		||||
        assert_eq!(grid.get_row_str(1), Some(String::from("ab")));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue