commit bcfa37c77dc9519b54e05813b1f73dbbf0f0b4c9
parent fbc3d2b11f52754309998077a50a757278671759
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Tue, 11 May 2021 17:30:03 +0200
add -l option to set lazyload hint for images that have dimensions
Diffstat:
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/smu.1 b/smu.1
@@ -7,6 +7,7 @@
.Sh SYNOPSIS
.Nm
.Op Fl h
+.Op Fl l
.Op Fl n
.Op Fl v
.Sh DESCRIPTION
@@ -16,6 +17,8 @@ The options are as follows:
.Bl -tag -width Ds
.It Fl h
prints usage information to stderr, then exits.
+.It Fl l
+set loading="lazy" hint attribute for images if it has a width and a height.
.It Fl n
escapes all HTML tags.
.It Fl v
diff --git a/smu.c b/smu.c
@@ -41,7 +41,7 @@ static void process(const char *begin, const char *end, int isblock); /* Pro
static Parser parsers[] = { dounderline, docomment, dolineprefix,
dolist, doparagraph, dogtlt, dosurround, dolink,
doshortlink, dohtml, doamp, doreplace };
-static int nohtml = 0;
+static int lazyimg = 0, nohtml = 0;
static Tag lineprefix[] = {
{ " ", 0, "<pre><code>", "\n</code></pre>" },
@@ -337,6 +337,8 @@ dolink(const char *begin, const char *end, int newblock)
printf("width=\"%ld\" ", width);
if (height > 0)
printf("height=\"%ld\" ", height);
+ if (width > 0 && height > 0 && lazyimg)
+ fputs("loading=\"lazy\" ", stdout);
fputs("/>", stdout);
} else {
fputs("<a href=\"", stdout);
@@ -692,7 +694,7 @@ process(const char *begin, const char *end, int newblock)
void
usage(char **argv)
{
- eprint("usage: %s [-n]\n\t-n escape HTML strictly\n", argv[0]);
+ eprint("usage: %s [-l] [-n]\n", argv[0]);
}
int
@@ -710,6 +712,8 @@ main(int argc, char *argv[])
eprint("smu v%s\n", VERSION);
else if (!strcmp("-n", argv[i]))
nohtml = 1;
+ else if (!strcmp("-l", argv[i]))
+ lazyimg = 1;
else
usage(argv);
}