tTranslate semantic tags to ANSI escapes - webdump - [FORK] git://git.codemadness.org/webdump
HTML git clone git://git.z3bra.org/webdump.git
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit c19b45dfe23bfa615aa965c574ae8f6e7a9864ec
DIR parent 5f9f773188b1302892021161d0656bb57e0323c0
HTML Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Wed, 20 Nov 2019 23:48:54 +0100
Translate semantic tags to ANSI escapes
Based on ideas from z3bra, thanks.
Refactored a bit to make it more generic and reuse.
Diffstat:
M webdump.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
---
DIR diff --git a/webdump.c b/webdump.c
t@@ -59,6 +59,9 @@ enum DisplayType {
DisplayTableRow = 512,
DisplayTableCell = 1024,
DisplayHeader = 2048,
+ DisplayBold = 4096,
+ DisplayItalic = 8192,
+ DisplayUnderline = 16384,
};
struct tag {
t@@ -107,12 +110,12 @@ static struct tag tags[] = {
{ "pre", DisplayPre },
{ "code", DisplayPre },
/* inline */
+ { "b", DisplayInline | DisplayBold },
+ { "i", DisplayInline | DisplayItalic },
+ { "u", DisplayInline | DisplayUnderline },
+ { "strong", DisplayInline | DisplayBold },
+ { "em", DisplayInline | DisplayItalic },
#if 0
- { "b", DisplayInline },
- { "i", DisplayInline },
- { "u", DisplayInline },
- { "strong", DisplayInline },
- { "em", DisplayInline },
{ "a", DisplayInline },
{ "span", DisplayInline },
{ "img", DisplayInline },
t@@ -609,6 +612,9 @@ xmltagend(XMLParser *p, const char *t, size_t tl, int isshort)
}
}
+ if (cur->tag.displaytype & (DisplayBold | DisplayItalic | DisplayUnderline))
+ fputs("\033[0m", stdout); /* reset */
+
/* specific tag handling */
if (!strcasecmp(t, "br")) {
newline();
t@@ -711,6 +717,13 @@ xmltagstartparsed(XMLParser *p, const char *t, size_t tl, int isshort)
}
}
+ if (cur->tag.displaytype & DisplayBold)
+ fputs("\033[1m", stdout);
+ if (cur->tag.displaytype & DisplayItalic)
+ fputs("\033[3m", stdout);
+ if (cur->tag.displaytype & DisplayUnderline)
+ fputs("\033[4m", stdout);
+
/* specific tag handling */
if (!strcasecmp(t, "hr")) { /* ruler */
for (i = 0; i < termwidth; i++)