[writan/format] add image support [visual-snow] add visual example

This commit is contained in:
opfez 2021-08-07 23:38:53 +02:00
parent 2ddd255454
commit 7980699b35
7 changed files with 48 additions and 6 deletions

View File

@ -1,12 +1,9 @@
Writan: Writan:
- Image support.
- Additional error handling in the formatter. - Additional error handling in the formatter.
- Remove extraneous <p> tags in output. - Remove extraneous <p> tags in output.
Pages: Pages:
- Add a category theory page (more general, math). - Add a category theory page (more general, math).
- Improve visual snow page with graphic examples.
Orphan pages: Orphan pages:
- Visual snow
- Emacs - Emacs

View File

@ -1,3 +1,4 @@
#include <ctype.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdint.h> #include <stdint.h>
@ -277,6 +278,29 @@ emit_blockquote(FILE *input, FILE *output)
fprintf(output, "</blockquote>\n"); fprintf(output, "</blockquote>\n");
} }
void
emit_image(FILE *input, FILE *output)
{
char buf[80];
char *bufptr = buf;
for(;;) {
char c = fgetc(input);
if (isspace(c))
break;
else if (c == EOF)
die("EOF encountered while parsing image filename.");
else
*(bufptr++) = c;
}
*bufptr = '\0';
fprintf(output, "<img src=\"../resources/img/%s\" />", buf);
fseek(input, -1L, SEEK_CUR);
}
/* main formatter */ /* main formatter */
void void
format(FILE *input, FILE *output) format(FILE *input, FILE *output)
@ -298,6 +322,21 @@ format(FILE *input, FILE *output)
fprintf(output, "<p>"); fprintf(output, "<p>");
emit_link(input, output); emit_link(input, output);
} }
else if (c == '$') { /* maybe image */
char buf[5];
size_t i;
for (i = 0; i < 4; i++)
buf[i] = fgetc(input);
buf[i] = '\0';
if (!strcmp(buf, "img ")) {
emit_image(input, output);
}
else {
fseek(input, -4L, SEEK_CUR);
emit_sanitized_char(c, output);
}
}
else if (c == '_') { else if (c == '_') {
fprintf(output, "%s", em_tags[in_em]); fprintf(output, "%s", em_tags[in_em]);
in_em = !in_em; in_em = !in_em;
@ -360,7 +399,6 @@ main(int argc, char *argv[])
format(in, out); format(in, out);
write_file(out, "resources/footer.html"); write_file(out, "resources/footer.html");
fclose(in); fclose(in);
fclose(out); fclose(out);
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

View File

@ -34,3 +34,8 @@ You can inline ``code`` blocks.
> multiple lines. > multiple lines.
One can mark emphasis by surrounding a word with _underscores_. One can mark emphasis by surrounding a word with _underscores_.
An image is embedded like follows. The filename is expanded to
resources/img/image-file.png.
$img image-file.png

View File

@ -111,6 +111,6 @@ Casts to ``void*`` are implicit in C, so do not explicitly cast pointers to
Indentation is done with 4 spaces. Indentation is done with 4 spaces.
I do not ``typedef`` my structs. I do not ``typedef`` my structs nor my enums.
Everything is named in snake case with all lower case letters. Everything is named in snake case with all lower case letters.

View File

@ -1,5 +1,7 @@
* Visual snow * Visual snow
$img visual-snow.gif
Visual snow is a visual impairment which makes those affected see black, white Visual snow is a visual impairment which makes those affected see black, white
or coloured semi-transparent dots in part of or the whole visual field. The or coloured semi-transparent dots in part of or the whole visual field. The
effect tends to be more prevalent at lower light levels. Additional symptoms effect tends to be more prevalent at lower light levels. Additional symptoms

View File

@ -5,7 +5,7 @@ only has a few distinct formatting rules.
It uses the file extension ".wtn". It uses the file extension ".wtn".
To get an overview over how it works, take a look at the {../resources/writan-example.txt To get an overview over how it works, take a look at the {../resources/txt/writan-example.txt
example document}. example document}.
{https://tildegit.org/opfez/codex/branch/master/format.c Source code of the {https://tildegit.org/opfez/codex/branch/master/format.c Source code of the