205 lines
6.7 KiB
Plaintext
205 lines
6.7 KiB
Plaintext
layout layout.njk
|
||
title Terrace - A simple structured data language
|
||
description
|
||
A simple structured data syntax for configuration, content authoring, and DSLs.
|
||
Terrace gets out of your way to let you just write
|
||
|
||
Section light
|
||
class pt-24 flex flex-col gap-16 md:flex-row lg:gap-48
|
||
Block
|
||
class flex flex-col gap-8 w-full items-start
|
||
Logo light
|
||
class hidden lg:flex
|
||
|
||
Markdown
|
||
class prose-ul:list-none
|
||
A simple structured data syntax for
|
||
- **Configuration**
|
||
- **Content authoring**
|
||
- **DSLs**
|
||
|
||
Terrace gets out of your way to let you
|
||
- **just write**
|
||
Button primary
|
||
href /docs/javascript/#getting-started
|
||
Get Started
|
||
|
||
CodeExample
|
||
height 350px
|
||
terrace
|
||
title Terrace - A simple structured data language
|
||
description
|
||
A simple structured data syntax for configuration, content authoring, and DSLs.
|
||
Terrace gets out of your way to let you just write
|
||
markdown
|
||
A simple structured data syntax for
|
||
- **Configuration**
|
||
- **Content authoring**
|
||
- **DSLs**
|
||
|
||
Terrace gets out of your way to let you
|
||
- **just write**
|
||
json
|
||
{
|
||
"title": "Terrace - A simple structured data language",
|
||
"description": "A simple structured data syntax for configuration, content authoring, and DSLs.\nTerrace gets out of your way to let you just write",
|
||
"markdown": "A simple structured data syntax for\n - **Configuration**\n - **Content authoring**\n - **DSLs**\n\nTerrace gets out of your way to let you\n - **just write**"
|
||
}
|
||
yaml
|
||
title: Terrace - A simple structured data language
|
||
description: |
|
||
A simple structured data syntax for configuration, content authoring, and DSLs.
|
||
Terrace gets out of your way to let you just write
|
||
markdown: |
|
||
A simple structured data syntax for
|
||
- **Configuration**
|
||
- **Content authoring**
|
||
- **DSLs**
|
||
|
||
Terrace gets out of your way to let you
|
||
- **just write**
|
||
toml
|
||
title = "Terrace - A simple structured data language"
|
||
description = """
|
||
A simple structured data syntax for configuration, content authoring, and DSLs.
|
||
Terrace gets out of your way to let you just write"""
|
||
markdown = """
|
||
A simple structured data syntax for
|
||
- **Configuration**
|
||
- **Content authoring**
|
||
- **DSLs**
|
||
|
||
Terrace gets out of your way to let you
|
||
- **just write**"""
|
||
|
||
Section dark
|
||
Heading 2 Uses
|
||
|
||
Block
|
||
class flex flex-col space-between gap-16 md:flex-row lg:gap-48
|
||
|
||
Block
|
||
class max-w-prose
|
||
Block
|
||
class flex gap-4 items-center mb-4
|
||
Icon settings
|
||
Heading 3 Configuration
|
||
class mb-0
|
||
Markdown
|
||
Terrace’s concise syntax (or lack thereof)
|
||
makes it a great fit for configuration files.
|
||
Less verbose than JSON without the wild unpredictability and hidden syntax pitfalls that come with YAML.
|
||
|
||
If you wish, you can build in your own input validation and type casting while parsing configuration files.
|
||
|
||
Block
|
||
class max-w-prose
|
||
Block
|
||
class flex gap-4 items-center mb-4
|
||
Icon feather
|
||
Heading 3 Content Authoring
|
||
class mb-0
|
||
Markdown
|
||
An unopinionated, indent-based syntax allows fulls blocks of plain-text or markup languages (such as markdown) to be embedded inside of Terrace documents.
|
||
|
||
This enables effortless mixing of data, prose, and functional blocks in human-written documents. No more need for clumsy frontmatter or custom Markdown extensions!
|
||
|
||
Block
|
||
class max-w-prose
|
||
Block
|
||
class flex gap-4 items-center mb-4
|
||
Icon code
|
||
Heading 3 Domain-Specific Languages
|
||
class mb-0
|
||
Markdown
|
||
Terrace documents, at their core, are effectively their own AST (Abstract Syntax Tree). Every time you parse a Terrace document you’ve essentially parsed your own DSL.
|
||
|
||
The core libraries are designed with this in mind, exposing ergonomic tools while getting out of your way as much as possible, so you can make Terrace your own.
|
||
|
||
Button primary
|
||
class inline-block mt-8
|
||
See Examples
|
||
|
||
Section light
|
||
Heading 2 Core
|
||
|
||
Block
|
||
class flex flex-col space-between gap-16 md:flex-row lg:gap-48
|
||
|
||
Block
|
||
Heading 3 Tiny - <strong>Really Tiny</strong>
|
||
class mb-4
|
||
Markdown
|
||
The C version of the core parser is ~30 lines. Most other implementations are of comparable size.
|
||
|
||
Heading 3 Easy to Implement
|
||
class mb-4 mt-16
|
||
Markdown
|
||
Need to use Terrace in another runtime? The tiny core and reliance on rudimentary control structures makes that a cinch!
|
||
|
||
Block
|
||
Heading 3 Zero Dependencies
|
||
class mb-4
|
||
Markdown
|
||
All Terrace implementations rely only on the built-ins of their language. The header-only C core has no dependencies, not even libc.
|
||
|
||
Heading 3 No Dynamic Memory
|
||
class mb-4 mt-16
|
||
Markdown
|
||
Terrace allocates no dynamic memory of its own, working entirely on the stack. A great fit for resource-constrained environments.
|
||
|
||
Block
|
||
Heading 3 Unopinionated
|
||
class mb-4
|
||
Markdown
|
||
Terrace makes as few assumptions as possible about how you intend to use it, leaving you with the tools you need to use it as you see fit.
|
||
|
||
Heading 3 Available in 3+ languages
|
||
class mb-4 mt-16
|
||
Markdown
|
||
At launch, Terrace has a reference C implementation, a TypeScript/JavaScript implementation, and a Python version available as well. We’ll be adding more as time permits!
|
||
|
||
Button primary
|
||
class inline-block mt-8
|
||
Add a Language
|
||
|
||
Section dark
|
||
Heading 2 Learn More
|
||
|
||
Block
|
||
class flex flex-col space-between gap-16 md:flex-row lg:gap-48
|
||
|
||
Block
|
||
class max-w-prose
|
||
Block
|
||
class flex gap-4 items-center mb-4
|
||
Icon info
|
||
Heading 3 About
|
||
href /about/
|
||
class mb-0
|
||
Markdown
|
||
Why does Terrace exist? What is it based on? What are the development goals?
|
||
|
||
Block
|
||
class max-w-prose
|
||
Block
|
||
class flex gap-4 items-center mb-4
|
||
Icon file-text
|
||
Heading 3 Documentation
|
||
href /docs/javascript/
|
||
class mb-0
|
||
Markdown
|
||
Setup instructions, API documentation, and recipes for how to perform common tasks with Terrace.
|
||
|
||
Block
|
||
class max-w-prose
|
||
Block
|
||
class flex gap-4 items-center mb-4
|
||
Icon users
|
||
Heading 3 Contribute
|
||
class mb-0
|
||
Markdown
|
||
Join the community! Help out by answering issues, expanding documentation, or building additional language implementations!
|
||
|
||
Footer
|