mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 08:35:28 +00:00
implement strip_tags filter
This commit is contained in:
parent
3df4a79e0a
commit
43f348e9bb
2 changed files with 36 additions and 5 deletions
|
|
@ -61,13 +61,14 @@ impl Tags {
|
||||||
links: &mut HashMap<TextTag, Uri>,
|
links: &mut HashMap<TextTag, Uri>,
|
||||||
) -> Option<String> {
|
) -> Option<String> {
|
||||||
// * keep in order!
|
// * keep in order!
|
||||||
let title = self.header.render(buffer); // @TODO strip raw tags
|
let title = self.header.render(buffer);
|
||||||
|
|
||||||
self.quote.render(buffer);
|
self.quote.render(buffer);
|
||||||
|
|
||||||
reference::render_images_links(&buffer, base, &link_color, links);
|
reference::render_images_links(&buffer, base, &link_color, links);
|
||||||
reference::render_images(&buffer, base, &link_color, links);
|
reference::render_images(&buffer, base, &link_color, links);
|
||||||
reference::render_links(&buffer, base, &link_color, links);
|
reference::render_links(&buffer, base, &link_color, links);
|
||||||
|
|
||||||
title
|
title.map(|ref s| reference::strip_tags(s)) // @TODO other tags
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -221,11 +221,41 @@ pub fn render_links(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn strip_tags(value: &str) -> String {
|
||||||
|
let mut result = String::from(value);
|
||||||
|
for cap in Regex::new(REGEX_LINK)
|
||||||
|
.unwrap()
|
||||||
|
.captures_iter(&value)
|
||||||
|
.into_iter()
|
||||||
|
{
|
||||||
|
if let Some(m) = cap.get(0) {
|
||||||
|
result = result.replace(m.as_str(), &cap["text"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_strip_tags() {
|
||||||
|
const VALUE: &str = r"Some text [link1](https://link1.com) [link2](https://link2.com)";
|
||||||
|
let mut result = String::from(VALUE);
|
||||||
|
for cap in Regex::new(REGEX_LINK)
|
||||||
|
.unwrap()
|
||||||
|
.captures_iter(VALUE)
|
||||||
|
.into_iter()
|
||||||
|
{
|
||||||
|
if let Some(m) = cap.get(0) {
|
||||||
|
result = result.replace(m.as_str(), &cap["text"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert_eq!(result, "Some text link1 link2")
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_regex_link() {
|
fn test_regex_link() {
|
||||||
let cap: Vec<_> = Regex::new(REGEX_LINK)
|
let cap: Vec<_> = Regex::new(REGEX_LINK)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.captures_iter(r#"[link1](https://link1.com) [link2](https://link2.com)"#)
|
.captures_iter(r"[link1](https://link1.com) [link2](https://link2.com)")
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let first = cap.get(0).unwrap();
|
let first = cap.get(0).unwrap();
|
||||||
|
|
@ -245,7 +275,7 @@ fn test_regex_image_link() {
|
||||||
REGEX_IMAGE_LINK,
|
REGEX_IMAGE_LINK,
|
||||||
)
|
)
|
||||||
.unwrap().captures_iter(
|
.unwrap().captures_iter(
|
||||||
r#"[](https://image2.com) [](https://image4.com)"#
|
r"[](https://image2.com) [](https://image4.com)"
|
||||||
).collect();
|
).collect();
|
||||||
|
|
||||||
let first = cap.get(0).unwrap();
|
let first = cap.get(0).unwrap();
|
||||||
|
|
@ -271,7 +301,7 @@ fn test_regex_image_link() {
|
||||||
fn test_regex_image() {
|
fn test_regex_image() {
|
||||||
let cap: Vec<_> = Regex::new(REGEX_IMAGE)
|
let cap: Vec<_> = Regex::new(REGEX_IMAGE)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.captures_iter(r#" "#)
|
.captures_iter(r" ")
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let first = cap.get(0).unwrap();
|
let first = cap.get(0).unwrap();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue