(frontmatter_json: &str, keys: &[&str])
| 699 | } |
| 700 | |
| 701 | fn frontmatter_string(frontmatter_json: &str, keys: &[&str]) -> Option<String> { |
| 702 | let value = serde_json::from_str::<serde_json::Value>(frontmatter_json).ok()?; |
| 703 | keys.iter() |
| 704 | .find_map(|key| value.get(key).and_then(|item| item.as_str())) |
| 705 | .filter(|item| !item.is_empty()) |
| 706 | .map(String::from) |
| 707 | } |
| 708 | |
| 709 | /// Extract `labels` (array of strings) from frontmatter JSON. |
| 710 | fn frontmatter_labels(frontmatter_json: &str) -> Vec<String> { |
no test coverage detected