adf2html/nodes/block/table/
table_row.rs1use 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}