Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 1 Nov 2026. What's built · Install 0.2.0
jadpo
Reference: Standard library

Standard types

RichTextSpan

On this page

A run of text in a block, never empty, with no control character but a tab or a line feed (a line break); its marks; and the address it links to, if any: https: with a host, or mailto:.

Text formats; not ordered; since Jadpo 0.1.0.

Make one

Build one from its fields, RichTextSpan { text: ... marks: ... }.

Fields

Field Type
text Text
marks List<RichTextMark>
link Text?

Text, JSON and storage

It has no single text form, so text.from and text.parse don't take it. JSON sends an object of its parts.

JSON
{"text":"Soup","marks":[]}
{"text":"today's soup","marks":["strong","emphasis"]}
{"text":"our site","marks":[],"link":"https://example.com/soups?day=mon#leek"}
{"text":"write to us","marks":["underline"],"link":"mailto:soup@example.com"}

It is stored in 3 columns, each named for the field, _ and its suffix. This is {"text":"our site","marks":[],"link":"https://example.com/soups?day=mon#leek"}:

Column Type Holds
<field>_text text 'our site'
<field>_marks text[] '{}'::text[]
<field>_link text 'https://example.com/soups?day=mon#leek'

Shown to people

text.format(value, locale:) shows it to people in their locale.

With locale: Locale.en_gb:

Value Shown
{"text":"Soup","marks":[]} Soup
{"text":"today's soup","marks":["strong","emphasis"]} today's soup
{"text":"our site","marks":[],"link":"https://example.com/soups?day=mon#leek"} our site
{"text":"write to us","marks":["underline"],"link":"mailto:soup@example.com"} write to us

Operations

It has the contract's own operations: text.format, json.read, json.write and ==. It isn't ordered, so < and sorting don't take it. Every standard type meets one contract says how they work.

Markdown for agents: /docs/types/type-rich-text-span.md.Built from Jadpo main at e00e61f.