diff options
author | Lars Wirzenius <liw@liw.fi> | 2023-01-22 11:40:51 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2023-01-22 11:43:28 +0200 |
commit | 1bd5ab49f17699fd3ae08cd847221ce969e38337 (patch) | |
tree | e3e7ebe4c675f3966ffd79284ed317b4698f298d | |
parent | d00d3013168f39c136bd877ff3d4328e29e3d991 (diff) | |
download | subplot-1bd5ab49f17699fd3ae08cd847221ce969e38337.tar.gz |
chore: unused code from ast.rs
Sponsored-by: author
-rw-r--r-- | src/ast.rs | 106 |
1 files changed, 1 insertions, 105 deletions
@@ -1,9 +1,7 @@ use lazy_static::lazy_static; -use log::trace; -use pandoc_ast::{Map, MetaValue}; use regex::Regex; use serde::Deserialize; -use serde_yaml::{Mapping, Value}; +use serde_yaml::Value; use std::collections::{BTreeMap, HashMap}; use std::path::{Path, PathBuf}; @@ -58,9 +56,7 @@ pub struct YamlMetadata { impl YamlMetadata { #[cfg(test)] fn new(yaml_text: &str) -> Result<Self, Error> { - trace!("Parsing YAML"); let meta: Self = serde_yaml::from_str(yaml_text)?; - trace!("parsed metadata: {:#?}", meta); Ok(meta) } @@ -122,106 +118,6 @@ impl YamlMetadata { None } } - - /// Convert into a pandoc_ast::Map. - pub fn to_map(&self) -> Map<String, MetaValue> { - trace!("Creating metadata map from parsed YAML"); - let mut map: Map<String, MetaValue> = Map::new(); - - map.insert("title".into(), meta_string(&self.title)); - - if let Some(v) = &self.subtitle { - map.insert("subtitle".into(), meta_string(v)); - } - - if let Some(authors) = &self.authors { - let authors: Vec<MetaValue> = authors - .iter() - .map(|s| MetaValue::MetaString(s.into())) - .collect(); - map.insert("author".into(), MetaValue::MetaList(authors)); - } - - if let Some(v) = &self.date { - map.insert("date".into(), meta_string(v)); - } - - if let Some(v) = &self.classes { - map.insert("classes".into(), meta_strings(v)); - } - - if !self.impls.is_empty() { - let impls = self - .impls - .iter() - .map(|(k, v)| (k.to_owned(), Box::new(meta_path_bufs(v)))) - .collect(); - map.insert("impls".into(), MetaValue::MetaMap(impls)); - } - - if let Some(v) = &self.bibliography { - map.insert("bibliography".into(), meta_path_bufs(v)); - } - - if let Some(v) = &self.bindings { - map.insert("bindings".into(), meta_path_bufs(v)); - } - - if let Some(v) = &self.documentclass { - map.insert("documentclass".into(), meta_string(v)); - } - - if let Some(pandoc) = &self.pandoc { - for (key, value) in pandoc.iter() { - map.insert(key.to_string(), value_to_pandoc(value)); - } - } - - trace!("Created metadata map from parsed YAML"); - map - } -} - -fn mapping_to_pandoc(mapping: &Mapping) -> MetaValue { - let mut map = Map::new(); - for (key, value) in mapping.iter() { - let key = if let MetaValue::MetaString(s) = value_to_pandoc(key) { - s - } else { - panic!("key not a string: {:?}", key); - }; - map.insert(key, Box::new(value_to_pandoc(value))); - } - - MetaValue::MetaMap(map) -} - -fn value_to_pandoc(data: &Value) -> MetaValue { - match data { - Value::Null => unreachable!("null not OK"), - Value::Number(_) => unreachable!("number not OK"), - Value::Sequence(_) => unreachable!("sequence not OK"), - - Value::Bool(b) => MetaValue::MetaBool(*b), - Value::String(s) => MetaValue::MetaString(s.clone()), - Value::Mapping(mapping) => mapping_to_pandoc(mapping), - } -} - -fn meta_string(s: &str) -> MetaValue { - MetaValue::MetaString(s.to_string()) -} - -fn meta_strings(v: &[String]) -> MetaValue { - MetaValue::MetaList(v.iter().map(|s| meta_string(s)).collect()) -} - -fn meta_path_buf(p: &Path) -> MetaValue { - meta_string(&p.display().to_string()) -} - -fn meta_path_bufs(v: &[PathBuf]) -> MetaValue { - MetaValue::MetaList(v.iter().map(|p| meta_path_buf(p)).collect()) } #[cfg(test)] |