version 1.276, 2017/03/14 01:35:15 |
version 1.278, 2017/03/17 12:10:16 |
Line 49 struct htmlmdoc { |
|
Line 49 struct htmlmdoc { |
|
}; |
}; |
|
|
static char *cond_id(const struct roff_node *); |
static char *cond_id(const struct roff_node *); |
static char *make_id(const struct roff_node *); |
|
static void print_mdoc_head(MDOC_ARGS); |
static void print_mdoc_head(MDOC_ARGS); |
static void print_mdoc_node(MDOC_ARGS); |
static void print_mdoc_node(MDOC_ARGS); |
static void print_mdoc_nodelist(MDOC_ARGS); |
static void print_mdoc_nodelist(MDOC_ARGS); |
Line 478 mdoc_root_pre(MDOC_ARGS) |
|
Line 477 mdoc_root_pre(MDOC_ARGS) |
|
} |
} |
|
|
static char * |
static char * |
make_id(const struct roff_node *n) |
|
{ |
|
const struct roff_node *nch; |
|
char *buf, *cp; |
|
|
|
for (nch = n->child; nch != NULL; nch = nch->next) |
|
if (nch->type != ROFFT_TEXT) |
|
return NULL; |
|
|
|
buf = NULL; |
|
deroff(&buf, n); |
|
|
|
/* http://www.w3.org/TR/html5/dom.html#the-id-attribute */ |
|
|
|
for (cp = buf; *cp != '\0'; cp++) |
|
if (*cp == ' ') |
|
*cp = '_'; |
|
|
|
return buf; |
|
} |
|
|
|
static char * |
|
cond_id(const struct roff_node *n) |
cond_id(const struct roff_node *n) |
{ |
{ |
if (n->child != NULL && |
if (n->child != NULL && |
Line 511 cond_id(const struct roff_node *n) |
|
Line 488 cond_id(const struct roff_node *n) |
|
(n->parent->tok == MDOC_Xo && |
(n->parent->tok == MDOC_Xo && |
n->parent->parent->prev == NULL && |
n->parent->parent->prev == NULL && |
n->parent->parent->parent->tok == MDOC_It))) |
n->parent->parent->parent->tok == MDOC_It))) |
return make_id(n); |
return html_make_id(n); |
return NULL; |
return NULL; |
} |
} |
|
|
Line 522 mdoc_sh_pre(MDOC_ARGS) |
|
Line 499 mdoc_sh_pre(MDOC_ARGS) |
|
|
|
switch (n->type) { |
switch (n->type) { |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
id = make_id(n); |
id = html_make_id(n); |
print_otag(h, TAG_H1, "cTi", "Sh", id); |
print_otag(h, TAG_H1, "cTi", "Sh", id); |
print_otag(h, TAG_A, "chR", "selflink", id); |
if (id != NULL) |
|
print_otag(h, TAG_A, "chR", "selflink", id); |
free(id); |
free(id); |
break; |
break; |
case ROFFT_BODY: |
case ROFFT_BODY: |
Line 545 mdoc_ss_pre(MDOC_ARGS) |
|
Line 523 mdoc_ss_pre(MDOC_ARGS) |
|
if (n->type != ROFFT_HEAD) |
if (n->type != ROFFT_HEAD) |
return 1; |
return 1; |
|
|
id = make_id(n); |
id = html_make_id(n); |
print_otag(h, TAG_H2, "cTi", "Ss", id); |
print_otag(h, TAG_H2, "cTi", "Ss", id); |
print_otag(h, TAG_A, "chR", "selflink", id); |
if (id != NULL) |
|
print_otag(h, TAG_A, "chR", "selflink", id); |
free(id); |
free(id); |
return 1; |
return 1; |
} |
} |
Line 955 mdoc_sx_pre(MDOC_ARGS) |
|
Line 934 mdoc_sx_pre(MDOC_ARGS) |
|
{ |
{ |
char *id; |
char *id; |
|
|
id = make_id(n); |
id = html_make_id(n); |
print_otag(h, TAG_A, "cThR", "Sx", id); |
print_otag(h, TAG_A, "cThR", "Sx", id); |
free(id); |
free(id); |
return 1; |
return 1; |
Line 1128 mdoc_er_pre(MDOC_ARGS) |
|
Line 1107 mdoc_er_pre(MDOC_ARGS) |
|
(n->parent->tok == MDOC_It || |
(n->parent->tok == MDOC_It || |
(n->parent->tok == MDOC_Bq && |
(n->parent->tok == MDOC_Bq && |
n->parent->parent->parent->tok == MDOC_It)) ? |
n->parent->parent->parent->tok == MDOC_It)) ? |
make_id(n) : NULL; |
html_make_id(n) : NULL; |
|
|
if (id != NULL) |
if (id != NULL) |
print_otag(h, TAG_A, "chR", "selflink", id); |
print_otag(h, TAG_A, "chR", "selflink", id); |