adf2html/nodes/block/table/
table_row.rs

1use serde::{Deserialize, Serialize};
2
3use super::table_cell::TableCell;
4
5#[derive(Clone, Debug, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct TableRow {
8    pub content: Vec<Content>,
9}
10
11#[derive(Clone, Debug, Serialize, Deserialize)]
12#[serde(rename_all = "camelCase", tag = "type")]
13pub enum Content {
14    TableHeader(TableCell),
15    TableCell(TableCell),
16}
17
18impl TableRow {
19    pub(crate) fn to_html(&self, row_number: Option<u32>, issue_or_comment_link: &String) -> String {
20        let mut html = String::from("<tr>");
21
22        if let Some(i) = row_number {
23            html.push_str(&format!(r#"<th style = "background-color: #F1F2F4;">{i}</th>"#));
24        }
25
26        for cell in &self.content {
27            match cell {
28                Content::TableHeader(table_cell) => html.push_str(&table_cell.to_html(true, issue_or_comment_link)),
29                Content::TableCell(table_cell) => html.push_str(&table_cell.to_html(false, issue_or_comment_link)),
30            };
31        }
32
33        html.push_str("</tr>");
34
35        html
36    }
37
38    pub(crate) fn replace_media_urls(&mut self, urls: &mut Vec<String>) {
39        for content in self.content.iter_mut() {
40            match content {
41                Content::TableHeader(cell) => cell.replace_media_urls(urls),
42                Content::TableCell(cell) => cell.replace_media_urls(urls),
43            }
44        }        
45    }
46}