(frontmatter_json: &str, keys: &[&str])
| 645 | } |
| 646 | |
| 647 | fn frontmatter_string(frontmatter_json: &str, keys: &[&str]) -> Option<String> { |
| 648 | let value = serde_json::from_str::<serde_json::Value>(frontmatter_json).ok()?; |
| 649 | keys.iter() |
| 650 | .find_map(|key| value.get(key).and_then(|item| item.as_str())) |
| 651 | .filter(|item| !item.is_empty()) |
| 652 | .map(String::from) |
| 653 | } |
| 654 | |
| 655 | /// Extract `labels` (array of strings) from frontmatter JSON. |
| 656 | fn frontmatter_labels(frontmatter_json: &str) -> Vec<String> { |
no test coverage detected