Find a file
Timur Demin bcc3d8b730
Implement a generic links & text extractor
Before this, links would only be scraped from paragraphs and
rendered as a block after parent paragraph. This replaces this logic
with a generic links extractor that would recursively collect every link
from any parent node, including footnotes, blockquotes, and lists.

The renderer splits links block in three separate blocks, one
containing footnotes, the second containing images, and the third
links. Blocks are separated by a single line break.

This also makes the renderer skip link-only lists from rendering,
making them behave like links-only paragraphs (which are already
rendered as a series of consecutive links). The old behavior of
extracting links from links-only paragraphs (where the paragraph
itself is treated as just a set of links) remains, and can be still used.

The text extraction is also now unified across headings, paragraphs,
table headings, blockquotes, and other elements where it was used.
This fixes a number of bugs (like panicking on links inside headings)
and shortcomings where renderer would render text differently
based on container element type.

Fixes #17 and #23.
2021-09-03 20:48:32 +05:00
.github/workflows Migrate to GitHub 2021-08-01 04:11:04 +05:00
cmd Support Hugo headless page bundle leaf nodes 2021-09-01 00:06:23 +05:00
internal Implement a generic links & text extractor 2021-09-03 20:48:32 +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 Update to Go v1.16 2021-08-01 04:15:32 +05:00
go.mod Integrate sprig v3 for improved templating (#9) 2021-08-16 20:29:13 +05:00
go.sum Integrate sprig v3 for improved templating (#9) 2021-08-16 20:29:13 +05:00
README.md Migrate to GitHub 2021-08-01 04:11:04 +05:00
render.go Support Hugo headless page bundle leaf nodes 2021-09-01 00:06:23 +05:00

Hugo-to-Gemini converter

PkgGoDev

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 is somewhat hasty, and is NOT supposed to be able to convert the entirety of possible Markdown to Gemtext (as it's not possible to do so, considering Gemtext is a lot simpler than Markdown), but instead a selected subset of it, enough for conveying your mind in Markdown.

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.

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.

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.