56 lines
1.6 KiB
Markdown
56 lines
1.6 KiB
Markdown
# 🫐 bberry
|
|
|
|
Super simple parser and "compiler" for turning a lisp-like DSL into HTML.
|
|
|
|
Here's a small example:
|
|
|
|
```lisp
|
|
(text "<!DOCTYPE html>") ; using a raw string for the doctype is fine
|
|
(html
|
|
(head
|
|
; everything that belongs in the head element
|
|
(title (text "Document"))
|
|
|
|
(meta ("charset" "UTF-8"))
|
|
(meta ("name" "viewport") ("content" "width=device-width, initial-scale=1.0"))
|
|
(meta ("http-equiv" "X-UA-Compatible") ("content" "ie=edge"))
|
|
|
|
(link ("rel" "stylesheet") ("href" "#")))
|
|
|
|
(body
|
|
; the actual body only starts here
|
|
(span ("style" "color: red") (text "Hello, world!"))))
|
|
```
|
|
|
|
This yields:
|
|
|
|
```html
|
|
<!-- formatted to for viewing ease... this comment is also not included -->
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Document</title>
|
|
<meta charset="UTF-8" />
|
|
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
|
|
<meta content="ie=edge" http-equiv="X-UA-Compatible" />
|
|
<link rel="stylesheet" href="#" />
|
|
</head>
|
|
<body>
|
|
<span style="color: red">Hello, world!</span>
|
|
</body>
|
|
</html>
|
|
```
|
|
|
|
# Syntax
|
|
|
|
bberry has some super simple syntax helpers:
|
|
|
|
- You can create raw HTML elements using `(text "...")` or `(tag' "...")`
|
|
- You can add attributes using `(attr "key" "value")` or `("key" "value")`
|
|
- Whitespace is ignored (except for in parenthesis), so you can format however you'd like
|
|
- The only formatting rule is there must be a space after tag names, and everything must be in parenthesis!
|
|
- Parenthesis and strings must also be properly closed
|
|
|
|
# License
|
|
|
|
bberry is licensed under the [AGPL-3.0](./LICENSE).
|