Find a file
mntn 3110ac629c
Update default templates to use new metadata
This updates default gmnhg templates to new field names
after changes introduced after recent major refactoring.

Fixup 9778ada128.
2021-09-20 03:19:29 +05:00
.github/workflows Bump Go and external deps versions 2021-09-17 22:42:28 +05:00
cmd Update default templates to use new metadata 2021-09-20 03:19:29 +05:00
internal Update heading renderer to latest Gemini spec 2021-09-17 23:02:46 +05:00
.gitignore Ignore test files from Git 2020-11-08 17:38:15 +05:00
.golangci.yml Add golangci-lint config 2021-08-13 09:08:45 +05:00
.goreleaser.yml Migrate to GitHub 2021-08-01 04:11:04 +05:00
COPYING Add README and license code under GPLv3 2020-11-08 18:27:38 +05:00
Dockerfile Bump Go and external deps versions 2021-09-17 22:42:28 +05:00
go.mod Bump dependencies update 2021-09-17 22:42:45 +05:00
go.sum Bump dependencies update 2021-09-17 22:42:45 +05:00
README.md Update README.md 2021-09-17 23:15:20 +05:00
render.go Parse metadata in all Hugo formats 2021-09-17 22:34:03 +05:00

Hugo-to-Gemini converter

PkgGoDev Go Report Card Push to GHCR

This repo holds a converter of Hugo Markdown posts to text/gemini (also named Gemtext in this README). The converter is supposed to make people using Hugo's entrance to Project Gemini, the alternate web, somewhat simpler.

The renderer uses the gomarkdown library for parsing Markdown. gomarkdown has a few quirks at this time, the most notable one being unable to parse links/images inside other links.

At this time, gmnhg can convert these Markdown elements to Gemtext:

  • paragraphs, converting them to soft wrap as per Gemini spec p. 5.4.1;
  • inline text formatting (bold, emphasis, strikethrough, code, subscript, superscript), which stays in the text to preserve stylistic context;
  • headings;
  • blockquotes;
  • preformatted blocks;
  • tables, displayed as ASCII preformatted blocks;
  • lists (as Gemini doesn't allow lists of level >= 2, those will be reflected with an extra indentation level): ordered, numbered, definition;
  • links and images, rendered as Gemtext links (inline links are rendered after their parent paragraph or other block element in a links block sorted by element type);
  • footnotes, rendered as paragraphs;
  • horizontal rules.

The renderer will also treat lists of links and paragraphs consisting of links only the special way: it will render only the links block for them.

gmnhg

This program converts Hugo Markdown content files from content/ in accordance with templates found in gmnhg/ to the output dir. It also copies static files from static/ to the output dir.

For more details about the rendering process, see the doc attached to the program.

Usage of gmnhg:
  -output string
        output directory (will be created if missing) (default "output/")
  -working string
        working directory (defaults to current directory)

md2gmn

This program reads Markdown input from either text file (if -f filename is given), or stdin. The resulting Gemtext goes to stdout.

Usage of md2gmn:
  -f string
        input file

md2gmn is mainly made to facilitate testing the Gemtext renderer but can be used as a standalone program as well.

Site configuration

For RSS feeds to use correct URLs, you should define geminiBaseURL in Hugo's configuration file (config.toml, config.yaml, or config.json).

Other attributes from this file, such as site title, will also be used during RSS feed generation if they are defined.

License

This program is redistributed under the terms and conditions of the GNU General Public License, more specifically version 3 of the License. For details, see COPYING.