All Projects → PataphysicalSociety → soupault

PataphysicalSociety / soupault

Licence: MIT License
Static website generator based on HTML element tree rewriting

Programming Languages

ocaml
1615 projects

Projects that are alternatives of or similar to soupault

minimal
Website and blog generator for Go, Node.js or Python
Stars: ✭ 94 (-56.07%)
Mutual labels:  static-site-generator
metalsmith
An extremely simple, pluggable static site generator.
Stars: ✭ 7,721 (+3507.94%)
Mutual labels:  static-site-generator
awesome-gridsome
A curated list of awesome things related to Gridsome
Stars: ✭ 66 (-69.16%)
Mutual labels:  static-site-generator
hugo-travelify-theme
Port of Aigars Silkalns's Wordpress theme Travelify to Hugo. Demo -
Stars: ✭ 34 (-84.11%)
Mutual labels:  static-site-generator
doctave
A batteries-included developer documentation site generator
Stars: ✭ 349 (+63.08%)
Mutual labels:  static-site-generator
bookworm-light
Bookworm is a clean and modern Hugo blog theme focused on high speed and support multiple authors.
Stars: ✭ 59 (-72.43%)
Mutual labels:  static-site-generator
snipcart-hugo-integration
Hugo Website Tutorial with a Live Static E-Commerce Example
Stars: ✭ 38 (-82.24%)
Mutual labels:  static-site-generator
jigsaw-blog-template
Starter template for a blog, using Jigsaw by Tighten
Stars: ✭ 75 (-64.95%)
Mutual labels:  static-site-generator
Cheaty
PDF Cheat Sheet generation made easy
Stars: ✭ 15 (-92.99%)
Mutual labels:  static-site-generator
Documentor
Super intuitive documentation generator, from markdown files to a single html file (style, scripts, images, search engine embedded) 📖
Stars: ✭ 32 (-85.05%)
Mutual labels:  static-site-generator
nera
A lightweight static site generator
Stars: ✭ 12 (-94.39%)
Mutual labels:  static-site-generator
jschr.io
The static website generator service behind jschr.io.
Stars: ✭ 70 (-67.29%)
Mutual labels:  static-site-generator
astro
Build fast websites, faster. 🚀🧑‍🚀✨
Stars: ✭ 11,024 (+5051.4%)
Mutual labels:  static-site-generator
uzu
Uzu is a static site generator with built-in web server, file modification watcher, live reload, i18n, themes, multi-page support, inject external data via local Raku module, and external pre/post command execution.
Stars: ✭ 30 (-85.98%)
Mutual labels:  static-site-generator
sbt-hepek
Sbt plugin for rendering Scala objects to files. And more!
Stars: ✭ 17 (-92.06%)
Mutual labels:  static-site-generator
cards.py
Generate Print-and-Play cards for your board games
Stars: ✭ 16 (-92.52%)
Mutual labels:  static-site-generator
contentz
Create Content, Get a Highly Optimized Website
Stars: ✭ 57 (-73.36%)
Mutual labels:  static-site-generator
logya
Logya is a static site generator written in Python designed to be easy to use and flexible.
Stars: ✭ 16 (-92.52%)
Mutual labels:  static-site-generator
tinystatic
A tiny static website generator which is flexible and easy to use
Stars: ✭ 36 (-83.18%)
Mutual labels:  static-site-generator
slipbox
A static site generator for Zettelkasten notes
Stars: ✭ 32 (-85.05%)
Mutual labels:  static-site-generator

soupault

Build GitHub all releases

Soupault is an HTML manipulation tool. It can be any of:

  • static site generator
  • HTML processor
  • metadata extractor

or all of them at the same time.

Soupault works with the HTML element tree of the page, so it can do many things that traditionally could be done with client-side JS: inject new HTML into existing complete pages, create a table of contents that preserves the id elements of HTML headings and more.

It also doesn't use front matter and extracts metadata from HTML instead, using a CSS3 selector to metadata field mapping, so even hand-written static pages can be indexed rather than treated as assets. For example:

[index.fields.title]
  # Try to find <h1 id="post-title"> if it exists,
  # else use the first <h1> 
  selector = ["h1#post-title", "h1"]

[index.fields.excerpt]
  selector = ["p#post-excerpt", "p"]

[index.fields.date]
  selector = ["time#post-date", "time"]
  extract_attribute = "datetime"
  fallback_to_content = true

Extracted metadata can then be rendered and injected into pages:

[index.views.blog]
  # Insert rendered data into the element that matches "#blog-index" CSS selector.
  index_selector = "#blog-index"
  index_item_template = """
    <h2><a href="{{url}}">{{title}}</a></h2>
    <p><strong>Last update:</strong> {{date}}.</p>
    <p>{{excerpt}}</p>
    <a href="{{url}}">Read more</a>
  """

Soupault is...

  • Eternal: it comes as a statically-linked binary with no dependencies.
  • Extensible: you can bring your own page preprocessors (e.g. Markdown to HTML convertors), pipe HTML elements through external programs, and load Lua plugins.
  • Flexible: most options are configurable and most built-in features can be reimplemented as Lua plugins.

Soupault is named after the French dadaist and surrealist writer Philippe Soupault because it's based on the lambdasoup library.

Visit https://www.soupault.app for details.

For support and discussion, write a message to the mailing list.

Installation

Pre-built binaries are available for Linux, Windows, and macOS. You can download them from https://files.baturin.org/software/soupault and from Github releases (https://github.com/dmbaturin/soupault/releases).

You can verify release archive integrity using this signify/minisign key: RWRfW+gkhk/+iA7dOUtTio6G6KeJCiAEp4Zfozw7eqv2shN90+5z20Cy.

You can also install stable release versions from OPAM:

opam install soupault

Finally, you can build the latest development version with:

opam pin add git+https://github.com/dmbaturin/soupault

Contributing

Bug reports and patches are always welcome. Feature requests and new features are also welcome, but please consider discussing them with the maintainer first.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].