aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-symfony-console/src/helper/table_separator.rs
blob: 99862848b8e62d6d64afde928565f009eeb396d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! ref: composer/vendor/symfony/console/Helper/TableSeparator.php

use crate::exception::invalid_argument_exception::InvalidArgumentException;
use crate::helper::table_cell::{TableCell, TableCellOption};
use indexmap::IndexMap;

/// Marks a row as being a separator.
#[derive(Debug, Clone)]
pub struct TableSeparator {
    inner: TableCell,
}

impl TableSeparator {
    pub fn new() -> Self {
        Self::new1(IndexMap::new()).expect("TableSeparator default options are always valid")
    }

    pub fn new1(
        options: IndexMap<String, TableCellOption>,
    ) -> Result<Self, InvalidArgumentException> {
        Ok(Self {
            inner: TableCell::new("", options)?,
        })
    }

    // PHP `TableSeparator extends TableCell`, so these inherited accessors remain available.
    pub fn get_colspan(&self) -> i64 {
        self.inner.get_colspan()
    }

    pub fn get_rowspan(&self) -> i64 {
        self.inner.get_rowspan()
    }

    pub fn get_style(
        &self,
    ) -> Option<std::rc::Rc<crate::helper::table_cell_style::TableCellStyle>> {
        self.inner.get_style()
    }
}

impl Default for TableSeparator {
    fn default() -> Self {
        Self::new()
    }
}