diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-05-17 10:48:06 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-05-17 10:48:06 +0000 |
commit | c012d60127e5e58e484aa5e2dc50ccc7745cf32b (patch) | |
tree | 52ad3fe9a54bbebb600c5b07ad61c57e68bf9f9c | |
parent | c70f3a05441e12c7acc42ed18bde164df21a9e75 (diff) | |
download | mandoc-c012d60127e5e58e484aa5e2dc50ccc7745cf32b.tar.gz |
Clean up -T[x]html by using a table instead of a switch statement for
the roff units. Also remove a comment about CSS and number types (they
all accept decimal numbers).
-rw-r--r-- | html.c | 57 |
1 files changed, 16 insertions, 41 deletions
@@ -94,6 +94,19 @@ static const char *const htmlattrs[ATTR_MAX] = { "colspan", /* ATTR_COLSPAN */ }; +static const char *const roffscales[SCALE_MAX] = { + "cm", /* SCALE_CM */ + "in", /* SCALE_IN */ + "pc", /* SCALE_PC */ + "pt", /* SCALE_PT */ + "em", /* SCALE_EM */ + "em", /* SCALE_MM */ + "ex", /* SCALE_EN */ + "ex", /* SCALE_BU */ + "em", /* SCALE_VS */ + "ex", /* SCALE_FS */ +}; + static void print_num(struct html *, const char *, size_t); static void print_spec(struct html *, const char *, size_t); static void print_res(struct html *, const char *, size_t); @@ -729,50 +742,12 @@ void bufcat_su(struct html *h, const char *p, const struct roffsu *su) { double v; - const char *u; v = su->scale; + if (SCALE_MM == su->unit && 0.0 == (v /= 100.0)) + v = 1.0; - switch (su->unit) { - case (SCALE_CM): - u = "cm"; - break; - case (SCALE_IN): - u = "in"; - break; - case (SCALE_PC): - u = "pc"; - break; - case (SCALE_PT): - u = "pt"; - break; - case (SCALE_EM): - u = "em"; - break; - case (SCALE_MM): - if (0 == (v /= 100)) - v = 1; - u = "em"; - break; - case (SCALE_EN): - u = "ex"; - break; - case (SCALE_BU): - u = "ex"; - break; - case (SCALE_VS): - u = "em"; - break; - default: - u = "ex"; - break; - } - - /* - * XXX: the CSS spec isn't clear as to which types accept - * integer or real numbers, so we just make them all decimals. - */ - buffmt(h, "%s: %.2f%s;", p, v, u); + buffmt(h, "%s: %.2f%s;", p, v, roffscales[su->unit]); } |