💾 Archived View for rawtext.club › ~sloum › geminilist › 002366.gmi captured on 2020-09-24 at 03:10:11. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2020-09-24)
-=-=-=-=-=-=-
Luke Emmet luke at marmaladefoo.com
Fri Jul 31 18:54:09 BST 2020
- - - - - - - - - - - - - - - - - - -
On 31-Jul-2020 14:34, Matthew Graybosch wrote:
Aside from all of the other stuff I want to do, I've been curious about
learning Go for a while. I'm tempted to take your code and see if I can
turn it around to generate HTML from gemini text.
There's no reason I shouldn't be able to do it; the existence of
portal.mozz.us proves that converting text/gemini to text/html is
possible. It's just a matter of implementing the function as a tool I
could use in a makefile.Hello Matthew
Gemini is a couple of orders of magnitude simpler than HTML, so you don't need to start from such a complex base as looking at an HTML parser and sanitiser. It is *much* simpler to go from Gemini to HTML.
Here is a very simple pseudocode for a gemini to html converter, you can tart it up as you wish:
for each line in linesif the line starts with heading marker (#, ##, ###), output: <h1> {{line}} </h1> (for #, use h2 and h3 accordingly)if the line starts with bullet marker (*) , output: <div> • {{line}}</div>if the line starts with link marker, split the line and output: <div><a href="{{target}}">{{display}}</a></div>if the line starts ```, toggle a flag and output <pre> if the flag is now on, or </pre> if the flag is offotherwise output: <div>{{line}}</div> unless the line is empty, otherwise <div> </div>next
You'll need to escape the content (e.g. &, <,> etc)
You can play around with CSS styling if you want to make it look pretty.
voila!
Best Wishes
- Luke
P.S. I have a more detailed version of a gemini to html converter here, used within GemiNaut, it might be of interest to look at. But its not in Go, but Rebol:
https://github.com/LukeEmmet/GemiNaut/blob/master/GemiNaut/GmiConverters/GmiToHtml.r3