mirror of
https://git.joinplu.me/Plume/Plume.git
synced 2024-11-22 19:41:03 +00:00
Fix issues with tags and mentions
Fix issue where leading @ or # of a mention/hashtag get duplicated Fix issue where normal tags were being overwritten by hashtags
This commit is contained in:
parent
d6e220cc8d
commit
5f059c3e98
3 changed files with 5 additions and 4 deletions
|
@ -85,7 +85,6 @@ pub fn md_to_html(md: &str) -> (String, HashSet<String>, HashSet<String>) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
State::Ready => {
|
State::Ready => {
|
||||||
text_acc.push(c);
|
|
||||||
if c == '@' {
|
if c == '@' {
|
||||||
events.push(Event::Text(text_acc.into()));
|
events.push(Event::Text(text_acc.into()));
|
||||||
(events, State::Mention, String::new(), n + 1, mentions, hashtags)
|
(events, State::Mention, String::new(), n + 1, mentions, hashtags)
|
||||||
|
@ -93,11 +92,13 @@ pub fn md_to_html(md: &str) -> (String, HashSet<String>, HashSet<String>) {
|
||||||
events.push(Event::Text(text_acc.into()));
|
events.push(Event::Text(text_acc.into()));
|
||||||
(events, State::Hashtag, String::new(), n + 1, mentions, hashtags)
|
(events, State::Hashtag, String::new(), n + 1, mentions, hashtags)
|
||||||
} else if c.is_alphanumeric() {
|
} else if c.is_alphanumeric() {
|
||||||
|
text_acc.push(c);
|
||||||
if n >= (txt.chars().count() - 1) { // Add the text after at the end, even if it is not followed by a mention.
|
if n >= (txt.chars().count() - 1) { // Add the text after at the end, even if it is not followed by a mention.
|
||||||
events.push(Event::Text(text_acc.clone().into()))
|
events.push(Event::Text(text_acc.clone().into()))
|
||||||
}
|
}
|
||||||
(events, State::Word, text_acc, n + 1, mentions, hashtags)
|
(events, State::Word, text_acc, n + 1, mentions, hashtags)
|
||||||
} else {
|
} else {
|
||||||
|
text_acc.push(c);
|
||||||
if n >= (txt.chars().count() - 1) { // Add the text after at the end, even if it is not followed by a mention.
|
if n >= (txt.chars().count() - 1) { // Add the text after at the end, even if it is not followed by a mention.
|
||||||
events.push(Event::Text(text_acc.clone().into()))
|
events.push(Event::Text(text_acc.clone().into()))
|
||||||
}
|
}
|
||||||
|
|
|
@ -719,7 +719,7 @@ impl Post {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ot in old_tags {
|
for ot in old_tags.iter().filter(|t| !t.is_hashtag) {
|
||||||
if !tags_name.contains(&ot.tag) {
|
if !tags_name.contains(&ot.tag) {
|
||||||
ot.delete(conn);
|
ot.delete(conn);
|
||||||
}
|
}
|
||||||
|
@ -756,7 +756,7 @@ impl Post {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ot in old_tags {
|
for ot in old_tags.into_iter().filter(|t| t.is_hashtag) {
|
||||||
if !tags_name.contains(&ot.tag) {
|
if !tags_name.contains(&ot.tag) {
|
||||||
ot.delete(conn);
|
ot.delete(conn);
|
||||||
}
|
}
|
||||||
|
|
|
@ -231,7 +231,7 @@ fn update(blog: String, slug: String, user: User, conn: DbConn, data: LenientFor
|
||||||
|
|
||||||
let hashtags = hashtags.into_iter().map(|h| h.to_camel_case()).collect::<HashSet<_>>()
|
let hashtags = hashtags.into_iter().map(|h| h.to_camel_case()).collect::<HashSet<_>>()
|
||||||
.into_iter().map(|t| Tag::build_activity(&conn, t)).collect::<Vec<_>>();
|
.into_iter().map(|t| Tag::build_activity(&conn, t)).collect::<Vec<_>>();
|
||||||
post.update_tags(&conn, hashtags);
|
post.update_hashtags(&conn, hashtags);
|
||||||
|
|
||||||
if post.published {
|
if post.published {
|
||||||
if newly_published {
|
if newly_published {
|
||||||
|
|
Loading…
Reference in a new issue