about summary refs log tree commit diff
path: root/content
diff options
context:
space:
mode:
authorBaitinq <manuelpalenzuelamerino@gmail.com>2022-08-02 17:12:12 +0200
committerBaitinq <manuelpalenzuelamerino@gmail.com>2022-08-02 17:12:12 +0200
commitcb59241cba74bd518b9d18d24f81e57734b6507c (patch)
treee02acf74744ab3d0d6b10139085920b3b0444e1f /content
parentProjects: Add OSXIV (diff)
downloadbaitinq.ml-cb59241cba74bd518b9d18d24f81e57734b6507c.tar.gz
baitinq.ml-cb59241cba74bd518b9d18d24f81e57734b6507c.tar.bz2
baitinq.ml-cb59241cba74bd518b9d18d24f81e57734b6507c.zip
Projects: Add automatic README fetching from the project's github
Diffstat (limited to 'content')
-rw-r--r--content/projects/project/osxiv.md146
1 files changed, 136 insertions, 10 deletions
diff --git a/content/projects/project/osxiv.md b/content/projects/project/osxiv.md
index bfdbc15..8bf7177 100644
--- a/content/projects/project/osxiv.md
+++ b/content/projects/project/osxiv.md
@@ -5,18 +5,144 @@ notshowthedate: true
 draft: false
 ---
 
-# [OSXIV](https://github.com/Baitinq/OSXIV)
-
-Im a project!
 
+<div id="tag-id"></div>
 
 <script>
-            fetch('https://github.com/Baitinq/OSXIV/blob/master/README.md').then(function(response) {
-              return response.json();
-            }).then(function(data) {
-              console.log(data);
-            }).catch(function() {
-              console.log("Booo");
-            });
+
+function markdown(src) {
+
+    var rx_lt = /</g;
+    var rx_gt = />/g;
+    var rx_space = /\t|\r|\uf8ff/g;
+    var rx_escape = /\\([\\\|`*_{}\[\]()#+\-~])/g;
+    var rx_hr = /^([*\-=_] *){3,}$/gm;
+    var rx_blockquote = /\n *&gt; *([^]*?)(?=(\n|$){2})/g;
+    var rx_list = /\n( *)(?:[*\-+]|((\d+)|([a-z])|[A-Z])[.)]) +([^]*?)(?=(\n|$){2})/g;
+    var rx_listjoin = /<\/(ol|ul)>\n\n<\1>/g;
+    var rx_highlight = /(^|[^A-Za-z\d\\])(([*_])|(~)|(\^)|(--)|(\+\+)|`)(\2?)([^<]*?)\2\8(?!\2)(?=\W|_|$)/g;
+    var rx_code = /\n((```|~~~).*\n?([^]*?)\n?\2|((    .*?\n)+))/g;
+    var rx_link = /((!?)\[(.*?)\]\((.*?)( ".*")?\)|\\([\\`*_{}\[\]()#+\-.!~]))/g;
+    var rx_table = /\n(( *\|.*?\| *\n)+)/g;
+    var rx_thead = /^.*\n( *\|( *\:?-+\:?-+\:? *\|)* *\n|)/;
+    var rx_row = /.*\n/g;
+    var rx_cell = /\||(.*?[^\\])\|/g;
+    var rx_heading = /(?=^|>|\n)([>\s]*?)(#{1,6}) (.*?)( #*)? *(?=\n|$)/g;
+    var rx_para = /(?=^|>|\n)\s*\n+([^<]+?)\n+\s*(?=\n|<|$)/g;
+    var rx_stash = /-\d+\uf8ff/g;
+
+    function replace(rex, fn) {
+        src = src.replace(rex, fn);
+    }
+
+    function element(tag, content) {
+        return '<' + tag + '>' + content + '</' + tag + '>';
+    }
+
+    function blockquote(src) {
+        return src.replace(rx_blockquote, function(all, content) {
+            return element('blockquote', blockquote(highlight(content.replace(/^ *&gt; */gm, ''))));
+        });
+    }
+
+    function list(src) {
+        return src.replace(rx_list, function(all, ind, ol, num, low, content) {
+            var entry = element('li', highlight(content.split(
+                RegExp('\n ?' + ind + '(?:(?:\\d+|[a-zA-Z])[.)]|[*\\-+]) +', 'g')).map(list).join('</li><li>')));
+
+            return '\n' + (ol
+                ? '<ol start="' + (num
+                    ? ol + '">'
+                    : parseInt(ol,36) - 9 + '" style="list-style-type:' + (low ? 'low' : 'upp') + 'er-alpha">') + entry + '</ol>'
+                : element('ul', entry));
+        });
+    }
+
+    function highlight(src) {
+        return src.replace(rx_highlight, function(all, _, p1, emp, sub, sup, small, big, p2, content) {
+            return _ + element(
+                  emp ? (p2 ? 'strong' : 'em')
+                : sub ? (p2 ? 's' : 'sub')
+                : sup ? 'sup'
+                : small ? 'small'
+                : big ? 'big'
+                : 'code',
+                highlight(content));
+        });
+    }
+
+    function unesc(str) {
+        return str.replace(rx_escape, '$1');
+    }
+
+    var stash = [];
+    var si = 0;
+
+    src = '\n' + src + '\n';
+
+    replace(rx_lt, '&lt;');
+    replace(rx_gt, '&gt;');
+    replace(rx_space, '  ');
+
+    // blockquote
+    src = blockquote(src);
+
+    // horizontal rule
+    replace(rx_hr, '<hr/>');
+
+    // list
+    src = list(src);
+    replace(rx_listjoin, '');
+
+    // code
+    replace(rx_code, function(all, p1, p2, p3, p4) {
+        stash[--si] = element('pre', element('code', p3||p4.replace(/^    /gm, '')));
+        return si + '\uf8ff';
+    });
+
+    // link or image
+    replace(rx_link, function(all, p1, p2, p3, p4, p5, p6) {
+        stash[--si] = p4
+            ? p2
+                ? '<img src="' + p4 + '" alt="' + p3 + '"/>'
+                : '<a href="' + p4 + '">' + unesc(highlight(p3)) + '</a>'
+            : p6;
+        return si + '\uf8ff';
+    });
+
+    // table
+    replace(rx_table, function(all, table) {
+        var sep = table.match(rx_thead)[1];
+        return '\n' + element('table',
+            table.replace(rx_row, function(row, ri) {
+                return row == sep ? '' : element('tr', row.replace(rx_cell, function(all, cell, ci) {
+                    return ci ? element(sep && !ri ? 'th' : 'td', unesc(highlight(cell || ''))) : ''
+                }))
+            })
+        )
+    });
+
+    // heading
+    replace(rx_heading, function(all, _, p1, p2) { return _ + element('h' + p1.length, unesc(highlight(p2))) });
+
+    // paragraph
+    replace(rx_para, function(all, content) { return element('p', unesc(highlight(content))) });
+
+    // stash
+    replace(rx_stash, function(all) { return stash[parseInt(all)] });
+
+    return src.trim();
+};
+
+
+//can we render as md
+fetch("https://raw.githubusercontent.com/Baitinq/OSXIV/master/README.md").then((response) => response.text()).then((data) => {
+	document.getElementById('tag-id').innerHTML = markdown(data);
+	console.log(markdown(data));
+	console.log(data);
+});
 </script>
 
+-----
+
+This information was fetched from [OSXIV's](https://github.com/Baitinq/OSXIV) [README]("https://raw.githubusercontent.com/Baitinq/OSXIV/master/README.md").