Browse Source

Accept any URL schema (not just http) in format_line().

default 5 months ago
parent
commit
560db69d14
1 changed files with 24 additions and 24 deletions
  1. 24 24
      format.c

+ 24 - 24
format.c

@@ -93,7 +93,7 @@ static xs_str *format_line(const char *line, xs_list **attach)
             "\\*\\*?\\*?[^\\*]+\\*?\\*?\\*"     "|"
             "!\\[[^]]+\\]\\([^\\)]+\\)"         "|"
             "\\[[^]]+\\]\\([^\\)]+\\)"          "|"
-            "https?:/" "/[^[:space:]]+"
+            "[a-z]+?:/" "/[^[:space:]]+"
         ")");
     int n = 0;
 
@@ -133,29 +133,6 @@ static xs_str *format_line(const char *line, xs_list **attach)
                 s = xs_str_cat(s, s2);
             }
             else
-            if (xs_startswith(v, "http")) {
-                xs *u  = xs_replace(v, "#", "#");
-                xs *v2 = xs_strip_chars_i(xs_dup(u), ".,)");
-
-                const char *mime = xs_mime_by_ext(v2);
-
-                if (attach != NULL && xs_startswith(mime, "image/")) {
-                    /* if it's a link to an image, insert it as an attachment */
-                    xs *d = xs_dict_new();
-
-                    d = xs_dict_append(d, "mediaType", mime);
-                    d = xs_dict_append(d, "url",       v2);
-                    d = xs_dict_append(d, "name",      "");
-                    d = xs_dict_append(d, "type",      "Image");
-
-                    *attach = xs_list_append(*attach, d);
-                }
-                else {
-                    xs *s1 = xs_fmt("<a href=\"%s\" target=\"_blank\">%s</a>", v2, u);
-                    s = xs_str_cat(s, s1);
-                }
-            }
-            else
             if (*v == '[') {
                 /* markdown-like links [label](url) */
                 xs *w = xs_strip_chars_i(xs_replace(v, "#", "&#35;"), "[)");
@@ -200,6 +177,29 @@ static xs_str *format_line(const char *line, xs_list **attach)
                 else
                     s = xs_str_cat(s, v);
             }
+            else
+            if (xs_str_in(v, ":/" "/") != -1) {
+                xs *u  = xs_replace(v, "#", "&#35;");
+                xs *v2 = xs_strip_chars_i(xs_dup(u), ".,)");
+
+                const char *mime = xs_mime_by_ext(v2);
+
+                if (attach != NULL && xs_startswith(mime, "image/")) {
+                    /* if it's a link to an image, insert it as an attachment */
+                    xs *d = xs_dict_new();
+
+                    d = xs_dict_append(d, "mediaType", mime);
+                    d = xs_dict_append(d, "url",       v2);
+                    d = xs_dict_append(d, "name",      "");
+                    d = xs_dict_append(d, "type",      "Image");
+
+                    *attach = xs_list_append(*attach, d);
+                }
+                else {
+                    xs *s1 = xs_fmt("<a href=\"%s\" target=\"_blank\">%s</a>", v2, u);
+                    s = xs_str_cat(s, s1);
+                }
+            }
             else
                 s = xs_str_cat(s, v);
         }