Terrace/docs/pages/index.tce
2023-03-04 22:36:08 -05:00

205 lines
6.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
Terraces 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 youve 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. Well 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