aboutsummaryrefslogtreecommitdiff
path: root/g2x.c
diff options
context:
space:
mode:
authorInqiyad Sabr <sabr@ariamath.xyz>2025-11-02 10:07:40 +0600
committerInqiyad Sabr <sabr@ariamath.xyz>2025-11-02 10:07:40 +0600
commit11b86ff1a85efe5d1170ea8c90ebca5ac313e24f (patch)
tree12356d8e8677d77b166b8e00d614f491d632597b /g2x.c
Add files
Diffstat (limited to 'g2x.c')
-rw-r--r--g2x.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/g2x.c b/g2x.c
new file mode 100644
index 0000000..cf23072
--- /dev/null
+++ b/g2x.c
@@ -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("&gt;",stdout); break;\
+ case '<' : fputs("&lt;",stdout); break;\
+ case '&' : fputs("&amp;",stdout); break;\
+ case '\'': fputs("&apos;",stdout); break;\
+ case '"' : fputs("&quot;",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);
+}