Skip to main content

Crate nematic

Crate nematic 

Source
Expand description

§Nematic

Portable smolweb engine for the mere browser — renders Gemini, Gopher, static HTML, Markdown, RSS/Atom, and other lightweight protocols where content can be rendered with minimal layout cost.

The name nematic is borrowed from liquid-crystal physics: a nematic phase has orientational order without positional order — rod-shaped molecules all point the same way but otherwise flow freely. Light passes through aligned nematic crystals coherently; that’s the basis of LCDs. The metaphor for a smolweb rendering engine: organized-but-flowing, threads aligned, the reader sees through to the meaning without layout-noise getting in the way.

§Engines

Nematic implements concrete inker::Engines. Currently shipped:

  • MarkdownEngine — CommonMark via pulldown-cmark
  • GemtextEngine — Gemini’s text/gemini line-oriented format
  • GopherEngine — RFC 1436 gopher menu parser
  • FeedEngine — RSS 2.0, Atom 1.0, and JSON Feed 1.x syndication feeds
  • TextEngine — plain text with paragraph splitting
  • FileEngine — extension-based dispatch for file:// content
  • FingerEngine — RFC 1288 finger protocol responses
  • KnotEngine — Mere’s native note / clip format (frontmatter + markdown)
  • ScrollEngine — Scroll smolweb body (gemtext or markdown)
  • SpartanEngine — Spartan smolweb body (gemtext or markdown)
  • TitanEngine — Titan response body (gemtext; upload is transport-side)
  • MisfinEngine — Misfin gemini-style mail body (gemtext)
  • NexEngine — Nex directory listings + content
  • GuppyEngine — Guppy UDP-smolweb body (gemtext)

Use engines to get a Vec<Box<dyn Engine>> of all default nematic engines for one-call registration with inker::EngineRegistry.

§Status

Pre-1.0. All seven smolweb / file / text protocol lanes shipped. Reader- mode HTML simplification (a separate concern from full-web rendering, which Serval owns) is the only major lane still pending.

Re-exports§

pub use feed::ENGINE_ID as ENGINE_FEED;
pub use feed::FeedEngine;
pub use file::ENGINE_ID as ENGINE_FILE;
pub use file::FileEngine;
pub use finger::ENGINE_ID as ENGINE_FINGER;
pub use finger::FingerEngine;
pub use gemtext::ENGINE_ID as ENGINE_GEMTEXT;
pub use gemtext::GemtextEngine;
pub use gopher::ENGINE_ID as ENGINE_GOPHER;
pub use gopher::GopherEngine;
pub use guppy::ENGINE_ID as ENGINE_GUPPY;
pub use guppy::GuppyEngine;
pub use knot::ENGINE_ID as ENGINE_KNOT;
pub use knot::KnotEngine;
pub use knot::djot::DjotKnotEngine;
pub use knot::djot::ENGINE_ID as ENGINE_KNOT_DJOT;
pub use markdown::ENGINE_ID as ENGINE_MARKDOWN;
pub use markdown::MarkdownEngine;
pub use misfin::ENGINE_ID as ENGINE_MISFIN;
pub use misfin::MisfinEngine;
pub use nex::ENGINE_ID as ENGINE_NEX;
pub use nex::NexEngine;
pub use scroll::ENGINE_ID as ENGINE_SCROLL;
pub use scroll::ScrollEngine;
pub use spartan::ENGINE_ID as ENGINE_SPARTAN;
pub use spartan::SpartanEngine;
pub use text::ENGINE_ID as ENGINE_TEXT;
pub use text::TextEngine;
pub use titan::ENGINE_ID as ENGINE_TITAN;
pub use titan::TitanEngine;

Modules§

feed
Feed engine — RSS 2.0, Atom 1.0, and JSON Feed 1.x into a portable document.
file
File viewer engine.
finger
Finger engine — RFC 1288 finger protocol responses.
gemtext
Gemtext engine — Gemini’s text/gemini content type.
gopher
Gopher menu engine — parses RFC 1436 gopher menus into a portable document.
guppy
Guppy engine — body-shape parser for Guppy (guppy://), the UDP-based smolweb protocol (https://guppy.mozz.us).
knot
Knot — Mere’s native note / clip format.
markdown
Markdown engine.
misfin
Misfin engine — body-shape parser for Misfin (misfin://) gemini-style peer-to-peer mail (https://misfin.org).
nex
Nex engine — parser for Nex (nex://), the minimal smolweb protocol (https://nex.nightfall.city).
scroll
Scroll engine — body-shape parser for the Scroll smolweb protocol (https://scroll.mozz.us).
spartan
Spartan engine — body-shape parser for Spartan (spartan://), a deliberately-simpler sibling of Gemini (https://spartan.mozz.us).
text
Plain text engine.
titan
Titan engine — render side of Titan (titan://), the write/upload companion to Gemini (https://transjovian.org/titan).

Constants§

STAGE
Lifecycle stage marker.
VERSION
Crate version.

Functions§

engines
All default nematic engines, ready to register with an inker::EngineRegistry.