commit 8c8e1a90e794a019a9fe3f8c32255efa51583274
parent 145bcd5c6033be21c3e0f64a8343cbecced39134
Author: Charles Lehner <charles@claws-mail.org>
Date: Fri, 24 Jun 2016 18:42:05 -0400
Indent html in blockquotes
Diffstat:
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/html.c b/src/html.c
@@ -346,6 +346,7 @@ SC_HTMLParser *sc_html_parser_new(FILE *fp, CodeConverter *conv)
parser->empty_line = TRUE;
parser->space = FALSE;
parser->pre = FALSE;
+ parser->indent = 0;
#define SYMBOL_TABLE_ADD(table, list) \
{ \
@@ -488,6 +489,12 @@ static void sc_html_append_char(SC_HTMLParser *parser, gchar ch)
parser->newline = TRUE;
if (str->len > 1 && str->str[str->len - 2] == '\n')
parser->empty_line = TRUE;
+ if (parser->indent > 0) {
+ gint i, n = parser->indent;
+ for (i = 0; i < n; i++)
+ g_string_append_c(str, '>');
+ g_string_append_c(str, ' ');
+ }
} else
parser->newline = FALSE;
}
@@ -683,7 +690,8 @@ static SC_HTMLState sc_html_parse_tag(SC_HTMLParser *parser)
parser->space = FALSE;
sc_html_append_char(parser, '\n');
}
- sc_html_append_str(parser, HR_STR "\n", -1);
+ sc_html_append_str(parser, HR_STR, -1);
+ sc_html_append_char(parser, '\n');
parser->state = SC_HTML_HR;
} else if (!strcmp(tag->name, "div") ||
!strcmp(tag->name, "ul") ||
@@ -700,6 +708,12 @@ static SC_HTMLState sc_html_parse_tag(SC_HTMLParser *parser)
sc_html_append_str(parser, LI_STR, -1);
}
parser->state = SC_HTML_NORMAL;
+ } else if (!strcmp(tag->name, "blockquote")) {
+ parser->state = SC_HTML_NORMAL;
+ parser->indent++;
+ } else if (!strcmp(tag->name, "/blockquote")) {
+ parser->state = SC_HTML_NORMAL;
+ parser->indent--;
} else if (!strcmp(tag->name, "/table") ||
(tag->name[0] == '/' &&
tag->name[1] == 'h' &&
diff --git a/src/html.h b/src/html.h
@@ -67,6 +67,8 @@ struct _SC_HTMLParser
gboolean empty_line;
gboolean space;
gboolean pre;
+
+ gint indent;
};
struct _SC_HTMLAttr