Repository files navigation

saurus logo

SAURUS

Git to Blog: Blog engine for web developer.

USAGE

We assume git and php has been installed and current directory is root of the localhost directory. Also assumed were we already has our own github.io page and we will deploy our blog there. Thus:

  1. mkdir blog
  2. cd blog
  3. git init
  4. git remote add origin git@github.com:username/username.github.io.git
  5. git pull origin master
  6. git remote add saurus https://github.com/robotys/saurus.git
  7. git pull saurus master
  8. make changes
  9. git add -A
  10. git commit -m 'first post'
  11. git push origin master

Development Notes / Basic Concepts

Main idea is a fork of jeckyl. Saurus will generate a 'semi-static' website given a markdown directory full of articles in markdown format.

Semi Static Engine

Unlike jeckyl, Saurus WILL NOT generate the entirety of the html files. Meaning if you have like thousands of articles, it will not generate thousands of html file. That will be ridiculous!. I do not need extra hours everytime i need to publish new article just waiting the static files generate from my first of thousand post.

That is the main intention.

So, we achieve (more like we workaround) this target by leveraging ajax. We need semi-dynamic to achieve semi-static right?

Reading Data Flow

Everytime user call a post via hashbang routing, let say http://blogonsaurus.com/#/read/markdown-example, there will be a function that will fetch the slug part and compare with index in json.

From there, we call the file needed from mds directory, parse it through markdown-html parser written in js, and then display it in body content.

Saurus public generation

To generate the files and dirs, run gen.php from local Apache-PHP server. Can also frun from command line but where is the fun in that? Better to run in full Apache-PHP environment as we can check the files generated from localhost server directly before git the public directory to live server.

Saurus User Case

Author a post in markdown format -> save in post directory -> run gen.php -> check from localhost/public for the changes -> git it upstream to live server

License: MIT

About

Robotys Github Pages. Will be a blog

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

saurus logo

SAURUS

Git to Blog: Blog engine for web developer.

USAGE

We assume git and php has been installed and current directory is root of the localhost directory. Also assumed were we already has our own github.io page and we will deploy our blog there. Thus:

  1. mkdir blog
  2. cd blog
  3. git init
  4. git remote add origin git@github.com:username/username.github.io.git
  5. git pull origin master
  6. git remote add saurus https://github.com/robotys/saurus.git
  7. git pull saurus master
  8. make changes
  9. git add -A
  10. git commit -m 'first post'
  11. git push origin master

Development Notes / Basic Concepts

Main idea is a fork of jeckyl. Saurus will generate a 'semi-static' website given a markdown directory full of articles in markdown format.

Semi Static Engine

Unlike jeckyl, Saurus WILL NOT generate the entirety of the html files. Meaning if you have like thousands of articles, it will not generate thousands of html file. That will be ridiculous!. I do not need extra hours everytime i need to publish new article just waiting the static files generate from my first of thousand post.

That is the main intention.

So, we achieve (more like we workaround) this target by leveraging ajax. We need semi-dynamic to achieve semi-static right?

Reading Data Flow

Everytime user call a post via hashbang routing, let say http://blogonsaurus.com/#/read/markdown-example, there will be a function that will fetch the slug part and compare with index in json.

From there, we call the file needed from mds directory, parse it through markdown-html parser written in js, and then display it in body content.

Saurus public generation

To generate the files and dirs, run gen.php from local Apache-PHP server. Can also frun from command line but where is the fun in that? Better to run in full Apache-PHP environment as we can check the files generated from localhost server directly before git the public directory to live server.

Saurus User Case

Author a post in markdown format -> save in post directory -> run gen.php -> check from localhost/public for the changes -> git it upstream to live server

License: MIT

About

Robotys Github Pages. Will be a blog

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

saurus logo

SAURUS

Git to Blog: Blog engine for web developer.

USAGE

We assume git and php has been installed and current directory is root of the localhost directory. Also assumed were we already has our own github.io page and we will deploy our blog there. Thus:

  1. mkdir blog
  2. cd blog
  3. git init
  4. git remote add origin git@github.com:username/username.github.io.git
  5. git pull origin master
  6. git remote add saurus https://github.com/robotys/saurus.git
  7. git pull saurus master
  8. make changes
  9. git add -A
  10. git commit -m 'first post'
  11. git push origin master

Development Notes / Basic Concepts

Main idea is a fork of jeckyl. Saurus will generate a 'semi-static' website given a markdown directory full of articles in markdown format.

Semi Static Engine

Unlike jeckyl, Saurus WILL NOT generate the entirety of the html files. Meaning if you have like thousands of articles, it will not generate thousands of html file. That will be ridiculous!. I do not need extra hours everytime i need to publish new article just waiting the static files generate from my first of thousand post.

That is the main intention.

So, we achieve (more like we workaround) this target by leveraging ajax. We need semi-dynamic to achieve semi-static right?

Reading Data Flow

Everytime user call a post via hashbang routing, let say http://blogonsaurus.com/#/read/markdown-example, there will be a function that will fetch the slug part and compare with index in json.

From there, we call the file needed from mds directory, parse it through markdown-html parser written in js, and then display it in body content.

Saurus public generation

To generate the files and dirs, run gen.php from local Apache-PHP server. Can also frun from command line but where is the fun in that? Better to run in full Apache-PHP environment as we can check the files generated from localhost server directly before git the public directory to live server.

Saurus User Case

Author a post in markdown format -> save in post directory -> run gen.php -> check from localhost/public for the changes -> git it upstream to live server

License: MIT

About

Robotys Github Pages. Will be a blog

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

saurus logo

SAURUS

Git to Blog: Blog engine for web developer.

USAGE

We assume git and php has been installed and current directory is root of the localhost directory. Also assumed were we already has our own github.io page and we will deploy our blog there. Thus:

  1. mkdir blog
  2. cd blog
  3. git init
  4. git remote add origin git@github.com:username/username.github.io.git
  5. git pull origin master
  6. git remote add saurus https://github.com/robotys/saurus.git
  7. git pull saurus master
  8. make changes
  9. git add -A
  10. git commit -m 'first post'
  11. git push origin master

Development Notes / Basic Concepts

Main idea is a fork of jeckyl. Saurus will generate a 'semi-static' website given a markdown directory full of articles in markdown format.

Semi Static Engine

Unlike jeckyl, Saurus WILL NOT generate the entirety of the html files. Meaning if you have like thousands of articles, it will not generate thousands of html file. That will be ridiculous!. I do not need extra hours everytime i need to publish new article just waiting the static files generate from my first of thousand post.

That is the main intention.

So, we achieve (more like we workaround) this target by leveraging ajax. We need semi-dynamic to achieve semi-static right?

Reading Data Flow

Everytime user call a post via hashbang routing, let say http://blogonsaurus.com/#/read/markdown-example, there will be a function that will fetch the slug part and compare with index in json.

From there, we call the file needed from mds directory, parse it through markdown-html parser written in js, and then display it in body content.

Saurus public generation

To generate the files and dirs, run gen.php from local Apache-PHP server. Can also frun from command line but where is the fun in that? Better to run in full Apache-PHP environment as we can check the files generated from localhost server directly before git the public directory to live server.

Saurus User Case

Author a post in markdown format -> save in post directory -> run gen.php -> check from localhost/public for the changes -> git it upstream to live server

License: MIT

About

Robotys Github Pages. Will be a blog

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

saurus logo

SAURUS

Git to Blog: Blog engine for web developer.

USAGE

We assume git and php has been installed and current directory is root of the localhost directory. Also assumed were we already has our own github.io page and we will deploy our blog there. Thus:

  1. mkdir blog
  2. cd blog
  3. git init
  4. git remote add origin git@github.com:username/username.github.io.git
  5. git pull origin master
  6. git remote add saurus https://github.com/robotys/saurus.git
  7. git pull saurus master
  8. make changes
  9. git add -A
  10. git commit -m 'first post'
  11. git push origin master

Development Notes / Basic Concepts

Main idea is a fork of jeckyl. Saurus will generate a 'semi-static' website given a markdown directory full of articles in markdown format.

Semi Static Engine

Unlike jeckyl, Saurus WILL NOT generate the entirety of the html files. Meaning if you have like thousands of articles, it will not generate thousands of html file. That will be ridiculous!. I do not need extra hours everytime i need to publish new article just waiting the static files generate from my first of thousand post.

That is the main intention.

So, we achieve (more like we workaround) this target by leveraging ajax. We need semi-dynamic to achieve semi-static right?

Reading Data Flow

Everytime user call a post via hashbang routing, let say http://blogonsaurus.com/#/read/markdown-example, there will be a function that will fetch the slug part and compare with index in json.

From there, we call the file needed from mds directory, parse it through markdown-html parser written in js, and then display it in body content.

Saurus public generation

To generate the files and dirs, run gen.php from local Apache-PHP server. Can also frun from command line but where is the fun in that? Better to run in full Apache-PHP environment as we can check the files generated from localhost server directly before git the public directory to live server.

Saurus User Case

Author a post in markdown format -> save in post directory -> run gen.php -> check from localhost/public for the changes -> git it upstream to live server

License: MIT

About

Robotys Github Pages. Will be a blog

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

saurus logo

SAURUS

Git to Blog: Blog engine for web developer.

USAGE

We assume git and php has been installed and current directory is root of the localhost directory. Also assumed were we already has our own github.io page and we will deploy our blog there. Thus:

  1. mkdir blog
  2. cd blog
  3. git init
  4. git remote add origin git@github.com:username/username.github.io.git
  5. git pull origin master
  6. git remote add saurus https://github.com/robotys/saurus.git
  7. git pull saurus master
  8. make changes
  9. git add -A
  10. git commit -m 'first post'
  11. git push origin master

Development Notes / Basic Concepts

Main idea is a fork of jeckyl. Saurus will generate a 'semi-static' website given a markdown directory full of articles in markdown format.

Semi Static Engine

Unlike jeckyl, Saurus WILL NOT generate the entirety of the html files. Meaning if you have like thousands of articles, it will not generate thousands of html file. That will be ridiculous!. I do not need extra hours everytime i need to publish new article just waiting the static files generate from my first of thousand post.

That is the main intention.

So, we achieve (more like we workaround) this target by leveraging ajax. We need semi-dynamic to achieve semi-static right?

Reading Data Flow

Everytime user call a post via hashbang routing, let say http://blogonsaurus.com/#/read/markdown-example, there will be a function that will fetch the slug part and compare with index in json.

From there, we call the file needed from mds directory, parse it through markdown-html parser written in js, and then display it in body content.

Saurus public generation

To generate the files and dirs, run gen.php from local Apache-PHP server. Can also frun from command line but where is the fun in that? Better to run in full Apache-PHP environment as we can check the files generated from localhost server directly before git the public directory to live server.

Saurus User Case

Author a post in markdown format -> save in post directory -> run gen.php -> check from localhost/public for the changes -> git it upstream to live server

License: MIT

About

Robotys Github Pages. Will be a blog

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

saurus logo

SAURUS

Git to Blog: Blog engine for web developer.

USAGE

We assume git and php has been installed and current directory is root of the localhost directory. Also assumed were we already has our own github.io page and we will deploy our blog there. Thus:

  1. mkdir blog
  2. cd blog
  3. git init
  4. git remote add origin git@github.com:username/username.github.io.git
  5. git pull origin master
  6. git remote add saurus https://github.com/robotys/saurus.git
  7. git pull saurus master
  8. make changes
  9. git add -A
  10. git commit -m 'first post'
  11. git push origin master

Development Notes / Basic Concepts

Main idea is a fork of jeckyl. Saurus will generate a 'semi-static' website given a markdown directory full of articles in markdown format.

Semi Static Engine

Unlike jeckyl, Saurus WILL NOT generate the entirety of the html files. Meaning if you have like thousands of articles, it will not generate thousands of html file. That will be ridiculous!. I do not need extra hours everytime i need to publish new article just waiting the static files generate from my first of thousand post.

That is the main intention.

So, we achieve (more like we workaround) this target by leveraging ajax. We need semi-dynamic to achieve semi-static right?

Reading Data Flow

Everytime user call a post via hashbang routing, let say http://blogonsaurus.com/#/read/markdown-example, there will be a function that will fetch the slug part and compare with index in json.

From there, we call the file needed from mds directory, parse it through markdown-html parser written in js, and then display it in body content.

Saurus public generation

To generate the files and dirs, run gen.php from local Apache-PHP server. Can also frun from command line but where is the fun in that? Better to run in full Apache-PHP environment as we can check the files generated from localhost server directly before git the public directory to live server.

Saurus User Case

Author a post in markdown format -> save in post directory -> run gen.php -> check from localhost/public for the changes -> git it upstream to live server

License: MIT

About

Robotys Github Pages. Will be a blog

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

saurus logo

SAURUS

Git to Blog: Blog engine for web developer.

USAGE

We assume git and php has been installed and current directory is root of the localhost directory. Also assumed were we already has our own github.io page and we will deploy our blog there. Thus:

  1. mkdir blog
  2. cd blog
  3. git init
  4. git remote add origin git@github.com:username/username.github.io.git
  5. git pull origin master
  6. git remote add saurus https://github.com/robotys/saurus.git
  7. git pull saurus master
  8. make changes
  9. git add -A
  10. git commit -m 'first post'
  11. git push origin master

Development Notes / Basic Concepts

Main idea is a fork of jeckyl. Saurus will generate a 'semi-static' website given a markdown directory full of articles in markdown format.

Semi Static Engine

Unlike jeckyl, Saurus WILL NOT generate the entirety of the html files. Meaning if you have like thousands of articles, it will not generate thousands of html file. That will be ridiculous!. I do not need extra hours everytime i need to publish new article just waiting the static files generate from my first of thousand post.

That is the main intention.

So, we achieve (more like we workaround) this target by leveraging ajax. We need semi-dynamic to achieve semi-static right?

Reading Data Flow

Everytime user call a post via hashbang routing, let say http://blogonsaurus.com/#/read/markdown-example, there will be a function that will fetch the slug part and compare with index in json.

From there, we call the file needed from mds directory, parse it through markdown-html parser written in js, and then display it in body content.

Saurus public generation

To generate the files and dirs, run gen.php from local Apache-PHP server. Can also frun from command line but where is the fun in that? Better to run in full Apache-PHP environment as we can check the files generated from localhost server directly before git the public directory to live server.

Saurus User Case

Author a post in markdown format -> save in post directory -> run gen.php -> check from localhost/public for the changes -> git it upstream to live server

License: MIT

About

Robotys Github Pages. Will be a blog

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages