version 1.337, 2020/04/01 20:21:08 |
version 1.344, 2022/06/25 12:44:25 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2014-2020 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2014-2022 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
|
* Copyright (c) 2022 Anna Vyalkova <cyber@sysrq.in> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 349 print_mdoc_node(MDOC_ARGS) |
|
Line 350 print_mdoc_node(MDOC_ARGS) |
|
if (n->type == ROFFT_COMMENT || n->flags & NODE_NOPRT) |
if (n->type == ROFFT_COMMENT || n->flags & NODE_NOPRT) |
return; |
return; |
|
|
if (n->flags & NODE_NOFILL) { |
if ((n->flags & NODE_NOFILL) == 0) |
html_fillmode(h, ROFF_nf); |
|
if (n->flags & NODE_LINE) |
|
print_endline(h); |
|
} else |
|
html_fillmode(h, ROFF_fi); |
html_fillmode(h, ROFF_fi); |
|
else if (html_fillmode(h, ROFF_nf) == ROFF_nf && |
|
n->tok != ROFF_fi && n->flags & NODE_LINE) |
|
print_endline(h); |
|
|
child = 1; |
child = 1; |
n->flags &= ~NODE_ENDED; |
n->flags &= ~NODE_ENDED; |
Line 377 print_mdoc_node(MDOC_ARGS) |
|
Line 377 print_mdoc_node(MDOC_ARGS) |
|
} |
} |
t = h->tag; |
t = h->tag; |
t->refcnt++; |
t->refcnt++; |
if (NODE_DELIMC & n->flags) |
if (n->flags & NODE_DELIMC) |
h->flags |= HTML_NOSPACE; |
h->flags |= HTML_NOSPACE; |
print_text(h, n->string); |
if (n->flags & NODE_HREF) |
if (NODE_DELIMO & n->flags) |
print_tagged_text(h, n->string, n); |
|
else |
|
print_text(h, n->string); |
|
if (n->flags & NODE_DELIMO) |
h->flags |= HTML_NOSPACE; |
h->flags |= HTML_NOSPACE; |
break; |
break; |
case ROFFT_EQN: |
case ROFFT_EQN: |
|
|
mdoc_sh_pre(MDOC_ARGS) |
mdoc_sh_pre(MDOC_ARGS) |
{ |
{ |
struct roff_node *sn, *subn; |
struct roff_node *sn, *subn; |
struct tag *t, *tsec, *tsub; |
struct tag *t, *tnav, *tsec, *tsub; |
char *id; |
char *id; |
int sc; |
int sc; |
|
|
Line 534 mdoc_sh_pre(MDOC_ARGS) |
|
Line 537 mdoc_sh_pre(MDOC_ARGS) |
|
break; |
break; |
if (sc < 2) |
if (sc < 2) |
break; |
break; |
|
tnav = print_otag(h, TAG_NAV, "r", "doc-toc"); |
t = print_otag(h, TAG_H1, "c", "Sh"); |
t = print_otag(h, TAG_H1, "c", "Sh"); |
print_text(h, "TABLE OF CONTENTS"); |
print_text(h, "TABLE OF CONTENTS"); |
print_tagq(h, t); |
print_tagq(h, t); |
Line 565 mdoc_sh_pre(MDOC_ARGS) |
|
Line 569 mdoc_sh_pre(MDOC_ARGS) |
|
} |
} |
print_tagq(h, tsec); |
print_tagq(h, tsec); |
} |
} |
print_tagq(h, t); |
print_tagq(h, tnav); |
print_otag(h, TAG_SECTION, "c", "Sh"); |
print_otag(h, TAG_SECTION, "c", "Sh"); |
break; |
break; |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
Line 662 mdoc_nm_pre(MDOC_ARGS) |
|
Line 666 mdoc_nm_pre(MDOC_ARGS) |
|
static int |
static int |
mdoc_xr_pre(MDOC_ARGS) |
mdoc_xr_pre(MDOC_ARGS) |
{ |
{ |
if (NULL == n->child) |
char *name, *section, *label; |
|
|
|
if (n->child == NULL) |
return 0; |
return 0; |
|
|
|
name = n->child->string; |
|
if (n->child->next != NULL) { |
|
section = n->child->next->string; |
|
mandoc_asprintf(&label, "%s, section %s", name, section); |
|
} else |
|
section = label = NULL; |
|
|
if (h->base_man1) |
if (h->base_man1) |
print_otag(h, TAG_A, "chM", "Xr", |
print_otag(h, TAG_A, "chM?", "Xr", |
n->child->string, n->child->next == NULL ? |
name, section, "aria-label", label); |
NULL : n->child->next->string); |
|
else |
else |
print_otag(h, TAG_A, "c", "Xr"); |
print_otag(h, TAG_A, "c?", "Xr", "aria-label", label); |
|
|
n = n->child; |
free(label); |
print_text(h, n->string); |
print_text(h, name); |
|
|
if (NULL == (n = n->next)) |
if (section == NULL) |
return 0; |
return 0; |
|
|
h->flags |= HTML_NOSPACE; |
h->flags |= HTML_NOSPACE; |
print_text(h, "("); |
print_text(h, "("); |
h->flags |= HTML_NOSPACE; |
h->flags |= HTML_NOSPACE; |
print_text(h, n->string); |
print_text(h, section); |
h->flags |= HTML_NOSPACE; |
h->flags |= HTML_NOSPACE; |
print_text(h, ")"); |
print_text(h, ")"); |
return 0; |
return 0; |
Line 692 mdoc_tg_pre(MDOC_ARGS) |
|
Line 704 mdoc_tg_pre(MDOC_ARGS) |
|
{ |
{ |
char *id; |
char *id; |
|
|
if ((id = html_make_id(n, 1)) != NULL) |
if ((id = html_make_id(n, 1)) != NULL) { |
print_tagq(h, print_otag(h, TAG_MARK, "i", id)); |
print_tagq(h, print_otag(h, TAG_MARK, "i", id)); |
|
free(id); |
|
} |
return 0; |
return 0; |
} |
} |
|
|
Line 741 mdoc_it_pre(MDOC_ARGS) |
|
Line 755 mdoc_it_pre(MDOC_ARGS) |
|
case ROFFT_HEAD: |
case ROFFT_HEAD: |
return 0; |
return 0; |
case ROFFT_BODY: |
case ROFFT_BODY: |
print_otag(h, TAG_LI, ""); |
print_otag_id(h, TAG_LI, NULL, n); |
break; |
break; |
default: |
default: |
break; |
break; |
Line 753 mdoc_it_pre(MDOC_ARGS) |
|
Line 767 mdoc_it_pre(MDOC_ARGS) |
|
case LIST_ohang: |
case LIST_ohang: |
switch (n->type) { |
switch (n->type) { |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
print_otag(h, TAG_DT, ""); |
print_otag_id(h, TAG_DT, NULL, n); |
break; |
break; |
case ROFFT_BODY: |
case ROFFT_BODY: |
print_otag(h, TAG_DD, ""); |
print_otag(h, TAG_DD, ""); |
Line 765 mdoc_it_pre(MDOC_ARGS) |
|
Line 779 mdoc_it_pre(MDOC_ARGS) |
|
case LIST_tag: |
case LIST_tag: |
switch (n->type) { |
switch (n->type) { |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
print_otag(h, TAG_DT, ""); |
print_otag_id(h, TAG_DT, NULL, n); |
break; |
break; |
case ROFFT_BODY: |
case ROFFT_BODY: |
if (n->child == NULL) { |
if (n->child == NULL) { |
Line 786 mdoc_it_pre(MDOC_ARGS) |
|
Line 800 mdoc_it_pre(MDOC_ARGS) |
|
print_otag(h, TAG_TD, ""); |
print_otag(h, TAG_TD, ""); |
break; |
break; |
default: |
default: |
print_otag(h, TAG_TR, ""); |
print_otag_id(h, TAG_TR, NULL, n); |
} |
} |
default: |
default: |
break; |
break; |
Line 852 mdoc_bl_pre(MDOC_ARGS) |
|
Line 866 mdoc_bl_pre(MDOC_ARGS) |
|
case LIST_tag: |
case LIST_tag: |
if (bl->offs) |
if (bl->offs) |
print_otag(h, TAG_DIV, "c", "Bd-indent"); |
print_otag(h, TAG_DIV, "c", "Bd-indent"); |
print_otag(h, TAG_DL, "c", bl->comp ? |
print_otag_id(h, TAG_DL, |
"Bl-tag Bl-compact" : "Bl-tag"); |
bl->comp ? "Bl-tag Bl-compact" : "Bl-tag", n->body); |
return 1; |
return 1; |
case LIST_column: |
case LIST_column: |
elemtype = TAG_TABLE; |
elemtype = TAG_TABLE; |
Line 866 mdoc_bl_pre(MDOC_ARGS) |
|
Line 880 mdoc_bl_pre(MDOC_ARGS) |
|
(void)strlcat(cattr, " Bd-indent", sizeof(cattr)); |
(void)strlcat(cattr, " Bd-indent", sizeof(cattr)); |
if (bl->comp) |
if (bl->comp) |
(void)strlcat(cattr, " Bl-compact", sizeof(cattr)); |
(void)strlcat(cattr, " Bl-compact", sizeof(cattr)); |
print_otag(h, elemtype, "c", cattr); |
print_otag_id(h, elemtype, cattr, n->body); |
return 1; |
return 1; |
} |
} |
|
|
Line 898 mdoc_d1_pre(MDOC_ARGS) |
|
Line 912 mdoc_d1_pre(MDOC_ARGS) |
|
switch (n->type) { |
switch (n->type) { |
case ROFFT_BLOCK: |
case ROFFT_BLOCK: |
html_close_paragraph(h); |
html_close_paragraph(h); |
break; |
return 1; |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
return 0; |
return 0; |
case ROFFT_BODY: |
case ROFFT_BODY: |
return 1; |
break; |
default: |
default: |
abort(); |
abort(); |
} |
} |
print_otag(h, TAG_DIV, "c", "Bd Bd-indent"); |
print_otag_id(h, TAG_DIV, "Bd Bd-indent", n); |
if (n->tok == MDOC_Dl) |
if (n->tok == MDOC_Dl) |
print_otag(h, TAG_CODE, "c", "Li"); |
print_otag(h, TAG_CODE, "c", "Li"); |
return 1; |
return 1; |
Line 926 mdoc_sx_pre(MDOC_ARGS) |
|
Line 940 mdoc_sx_pre(MDOC_ARGS) |
|
static int |
static int |
mdoc_bd_pre(MDOC_ARGS) |
mdoc_bd_pre(MDOC_ARGS) |
{ |
{ |
char buf[16]; |
char buf[20]; |
struct roff_node *nn; |
struct roff_node *nn; |
int comp; |
int comp; |
|
|
Line 963 mdoc_bd_pre(MDOC_ARGS) |
|
Line 977 mdoc_bd_pre(MDOC_ARGS) |
|
strcmp(n->norm->Bd.offs, "left") != 0) |
strcmp(n->norm->Bd.offs, "left") != 0) |
(void)strlcat(buf, " Bd-indent", sizeof(buf)); |
(void)strlcat(buf, " Bd-indent", sizeof(buf)); |
|
|
print_otag(h, TAG_DIV, "c", buf); |
if (n->norm->Bd.type == DISP_literal) |
|
(void)strlcat(buf, " Li", sizeof(buf)); |
|
|
|
print_otag_id(h, TAG_DIV, buf, n); |
return 1; |
return 1; |
} |
} |
|
|
Line 1208 mdoc_skip_pre(MDOC_ARGS) |
|
Line 1225 mdoc_skip_pre(MDOC_ARGS) |
|
static int |
static int |
mdoc_pp_pre(MDOC_ARGS) |
mdoc_pp_pre(MDOC_ARGS) |
{ |
{ |
|
char *id; |
|
|
if (n->flags & NODE_NOFILL) { |
if (n->flags & NODE_NOFILL) { |
print_endline(h); |
print_endline(h); |
h->col = 1; |
if (n->flags & NODE_ID) |
print_endline(h); |
mdoc_tg_pre(meta, n, h); |
|
else { |
|
h->col = 1; |
|
print_endline(h); |
|
} |
} else { |
} else { |
html_close_paragraph(h); |
html_close_paragraph(h); |
print_otag(h, TAG_P, "c", "Pp"); |
id = n->flags & NODE_ID ? html_make_id(n, 1) : NULL; |
|
print_otag(h, TAG_P, "ci", "Pp", id); |
|
free(id); |
} |
} |
return 0; |
return 0; |
} |
} |