make alignment respect pandoc urls, #63
authorMichael Göhler <somebody.here@gmx.de>
Fri, 26 Dec 2014 21:10:13 +0000 (22:10 +0100)
committerMichael Göhler <somebody.here@gmx.de>
Fri, 26 Dec 2014 21:10:13 +0000 (22:10 +0100)
include/url.h
src/url.c
src/viewer.c

index 9088031..1bd3950 100644 (file)
@@ -39,5 +39,6 @@ int url_get_amount(void);
 void url_purge(void);
 void url_dump(void);
 int url_count_inline(const char *line);
+int url_len_inline(const char *text);
 
 #endif // !defined( URL_H )
index 6872503..c5ffd4b 100644 (file)
--- a/src/url.c
+++ b/src/url.c
@@ -156,3 +156,25 @@ int url_count_inline(const char *line) {
 
     return count;
 }
+
+int url_len_inline(const char *text) {
+    int count = 0;
+    const char *i = text;
+
+    for (; *i; i++) {
+        if (*i == '\\') {
+            i++;
+        } else if ( *i == '[' && *(i+1) != ']') {
+            while (*i && *i != ']') i++;
+            i++;
+            if (*i == '(' && strchr(i, ')')) {
+                while (*i && *i != ')') {
+                    count++;
+                    i++;
+                }
+            }
+        }
+    }
+
+    return count;
+}
index fa2ea10..0e2da58 100644 (file)
@@ -98,6 +98,9 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert) {
             if (line && line->text && line->text->text)
                 lc += url_count_inline(line->text->text);
 
+            if (line && line->text && line->text->text)
+                line->length -= url_len_inline(line->text->text);
+
             if(line->length > COLS) {
                 i = line->length;
                 offset = 0;