diff options
| author | Inqiyad Sabr <sabr@ariamath.xyz> | 2025-11-02 10:07:40 +0600 |
|---|---|---|
| committer | Inqiyad Sabr <sabr@ariamath.xyz> | 2025-11-02 10:07:40 +0600 |
| commit | 11b86ff1a85efe5d1170ea8c90ebca5ac313e24f (patch) | |
| tree | 12356d8e8677d77b166b8e00d614f491d632597b /g2x.c | |
Add files
Diffstat (limited to 'g2x.c')
| -rw-r--r-- | g2x.c | 68 |
1 files changed, 68 insertions, 0 deletions
@@ -0,0 +1,68 @@ +#include <stdio.h> +#define BUFSIZE 4096 // Read +#define xmlput(n)\ + for(i = n; buf[i] != '\n'; i++) {\ + switch(buf[i]) {\ + default: putchar(buf[i]); break;\ + case '>' : fputs(">",stdout); break;\ + case '<' : fputs("<",stdout); break;\ + case '&' : fputs("&",stdout); break;\ + case '\'': fputs("'",stdout); break;\ + case '"' : fputs(""",stdout); break;}} +int main(void) { + char buf[BUFSIZE]; int i; + fputs( + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE html PUBLIC ""\"-//W3C//DTD XHTML " + "1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/" + "DTD/xhtml1-strict.dtd\">\n" + "<html xmlns=\"http://www.w3.org/1999/xhtml\" " + "xml:lang=\"en\" lang=\"en\">\n<head>\n" + "<meta name=\"viewport\" " + "content=\"width=device-width, " + "initial-scale=1\" />\n" + "<link rel=\"stylesheet\" " + "type=\"text/css\" href=\"/style.css\" />\n" + "<title></title></head><body>",stdout + ); while (fgets(buf,BUFSIZE,stdin) != NULL) { + if (buf[2] == '#')/* ### */ { + fputs("<h3>",stdout); + xmlput(4); fputs("</h3>\n",stdout); + continue; + } else if (buf[1] == '#') /* ## */ { + fputs("<h2>",stdout); + xmlput(3); fputs("</h2>\n",stdout); + continue; + } else if (buf[0] == '#') /* # */ { + fputs("<h1>",stdout); + xmlput(2); fputs("</h1>\n",stdout); + continue; + } else if (buf[0] == '*') { + fputs("<ul><li>",stdout); xmlput(2); + fputs("</li></ul>\n",stdout); continue; + } else if (buf[0] == '=' && buf[1] == '>')/* link */ { + fputs("<p><a href=\"",stdout); + for (i = 3; buf[i] != '.' && buf[i] != ' '; i++) + putchar(buf[i]); + if (buf[i+1] == 'g') {fputs(".html",stdout);i=i+3;} + else {for (;buf[i] != ' '; i++) putchar(buf[i]);} + fputs("\">",stdout); xmlput(i+1); + fputs("</a></p>\n",stdout); + continue; + } else if (buf[0] == '`' && buf[2] == '`')/* code */ { + fputs("<pre><code>",stdout); + fgets(buf,BUFSIZE,stdin); + while (buf[0] != '`' && buf[2] != '`') { + xmlput(0); fputs("\n",stdout); + fgets(buf,BUFSIZE,stdin); + } fputs("</code></pre>",stdout); + continue; + } else if (buf[0] == '>') { + fputs("<blockquote>",stdout); xmlput(2); + fputs("</blockquote>\n",stdout); + continue; + } fputs("<p>",stdout); + xmlput(0); fputs("</p>\n",stdout); + } fputs("</body>",stdout); + fputs("</html>",stdout); +} |