mdbook_plotly/code_handler/plot_obj_parser/
table_parser.rs1use super::until::must_translate_from_context;
2use crate::code_handler::parse_context::ParseContext;
3use crate::{translate_enum_with_config, translate_with_config};
4use anyhow::Result;
5use plotly::Trace;
6use plotly::traces::table::{Cells, Header, Table};
7
8pub fn parse_table_data(
9 table_obj: &mut serde_json::Value,
10 context: &ParseContext<'_>,
11) -> Result<Box<dyn Trace>> {
12 let header_values: Vec<Vec<String>> = must_translate_from_context(table_obj, context, "header_values")?;
13 let cells_values: Vec<Vec<String>> = must_translate_from_context(table_obj, context, "cells_values")?;
14 let header = Header::new(header_values);
15 let cells = Cells::new(cells_values);
16 let table = Table::new(header, cells);
17 let table = translate_with_config! {
18 table,
19 table_obj,
20 context.map(),
21 context.map_eval(),
22 (name, String),
23 (column_width, f64),
24 (column_order, Vec<usize>),
25 }?;
26
27 use plotly::common::Visible;
28 let table = translate_enum_with_config! {
29 table,
30 table_obj,
31 context.map(),
32 context.map_eval(),
33 (visible, {
34 "true" => Visible::True,
35 "false" => Visible::False,
36 "legendonly" => Visible::LegendOnly,
37 }),
38 }?;
39
40 Ok(table)
41}