Parcourir la source

Process HTML Unicode entities specially in process_tags().

default il y a 3 ans
Parent
commit
b262961c93
1 fichiers modifiés avec 8 ajouts et 1 suppressions
  1. 8 1
      activitypub.c

+ 8 - 1
activitypub.c

@@ -272,7 +272,7 @@ void process_tags(snac *snac, const char *content, d_char **n_content, d_char **
     char *p, *v;
     int n = 0;
 
-    split = xs_regex_split(content, "(@[A-Za-z0-9_]+@[A-Za-z0-9\\.-]+|#[^ ,\\.:;<]+)");
+    split = xs_regex_split(content, "(@[A-Za-z0-9_]+@[A-Za-z0-9\\.-]+|&#[0-9]+;|#[^ ,\\.:;<]+)");
 
     p = split;
     while (xs_list_iter(&p, &v)) {
@@ -321,6 +321,13 @@ void process_tags(snac *snac, const char *content, d_char **n_content, d_char **
                 /* add the code */
                 nc = xs_str_cat(nc, l);
             }
+            else
+            if (*v == '&') {
+                /* HTML Unicode entity, probably part of an emoji */
+
+                /* write as is */
+                nc = xs_str_cat(nc, v);
+            }
         }
         else
             nc = xs_str_cat(nc, v);