diff options
-rw-r--r-- | file.c | 30 | ||||
-rw-r--r-- | html.c | 3 | ||||
-rw-r--r-- | html.h | 2 | ||||
-rw-r--r-- | tagtable.tab | 2 |
4 files changed, 28 insertions, 9 deletions
@@ -4662,7 +4662,6 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env) do_blankline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit); } - PUSH_ENV(cmd); if (parsedtag_exists(tag, ATTR_COMPACT)) envs[h_env->envc].env = HTML_DL_COMPACT; obuf->flag |= RB_IGNORE_P; @@ -4754,15 +4753,14 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env) return 1; case HTML_DT: CLOSE_A; - if (h_env->envc == 0 || - (h_env->envc_real < h_env->nenv && - envs[h_env->envc].env != HTML_DL && - envs[h_env->envc].env != HTML_DL_COMPACT)) { - PUSH_ENV(HTML_DL); + if (h_env->envc > 0 && + (envs[h_env->envc].env == HTML_DL || + envs[h_env->envc].env == HTML_DL_COMPACT)) { + POP_ENV; } - if (h_env->envc > 0) { + if (h_env->envc >= 0) { flushline(h_env, obuf, - envs[h_env->envc - 1].indent, 0, h_env->limit); + envs[h_env->envc].indent, 0, h_env->limit); } if (!(obuf->flag & RB_IN_DT)) { HTMLlineproc1("<b>", h_env); @@ -4770,6 +4768,14 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env) } obuf->flag |= RB_IGNORE_P; return 1; + case HTML_N_DT: + if (!(obuf->flag & RB_IN_DT)) + return 1; + obuf->flag &= ~RB_IN_DT; + HTMLlineproc1("</b>", h_env); + flushline(h_env, obuf, envs[h_env->envc].indent, 0, + h_env->limit); + return 1; case HTML_DD: CLOSE_A; CLOSE_DT; @@ -4790,6 +4796,14 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env) flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit); /* obuf->flag |= RB_IGNORE_P; */ return 1; + case HTML_N_DD: + if (h_env->envc > 0 && + (envs[h_env->envc].env == HTML_DL || + envs[h_env->envc].env == HTML_DL_COMPACT)) { + POP_ENV; + flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit); + } + return 1; case HTML_TITLE: close_anchor(h_env, obuf); process_title(tag); @@ -274,8 +274,9 @@ TagInfo TagMAP[MAX_HTMLTAG] = { {"/figcaption", NULL, 0, TFLG_END}, /* 144 HTML_N_FIGCAPTION */ {"section", ALST_NOP, MAXA_NOP, 0}, /* 145 HTML_SECTION */ {"/section", NULL, 0, TFLG_END}, /* 146 HTML_N_SECTION */ + {"/dt", NULL, 0, TFLG_END}, /* 147 HTML_N_DT */ + {"/dd", NULL, 0, TFLG_END}, /* 147 HTML_N_DD */ - {NULL, NULL, 0, 0}, /* 147 Undefined */ {NULL, NULL, 0, 0}, /* 148 Undefined */ {NULL, NULL, 0, 0}, /* 149 Undefined */ {NULL, NULL, 0, 0}, /* 150 Undefined */ @@ -238,6 +238,8 @@ typedef struct { #define HTML_N_FIGCAPTION 144 #define HTML_SECTION 145 #define HTML_N_SECTION 146 +#define HTML_N_DT 147 +#define HTML_N_DD 148 /* pseudo tag */ #define HTML_SELECT_INT 160 diff --git a/tagtable.tab b/tagtable.tab index cc94942..774fde9 100644 --- a/tagtable.tab +++ b/tagtable.tab @@ -203,6 +203,8 @@ select_int HTML_SELECT_INT option_int HTML_OPTION_INT section HTML_SECTION /section HTML_N_SECTION +/dt HTML_N_DT +/dd HTML_N_DD textarea_int HTML_TEXTAREA_INT /textarea_int HTML_N_TEXTAREA_INT pre_plain HTML_PRE_PLAIN |