entangle-doc
Version:
Reactive documents in markdown
84 lines (52 loc) • 1.82 kB
Markdown
# Entangle
Another attempt at writing [Tangle.js](http://worrydream.com/Tangle/) documents in markdown.
The main objective here was to keep the "explanation" part as readable as possible, without losing the power of javascript.
## Install
```shell
npm install -g entangle-doc
```
## Usage
```shell
entangle <source.entangle>
```
If you have trouble opening the output html in Mac Safari, try Firefox.
## Explanation
A "Entangle" document is split into three sections, separated by `---`:
1. the content (markdown)
2. the config (yaml)
3. the code (coffeescript)
The code is a single function, named `update`, that produces the dependent variables from the independent variables (i.e. the user controls). Entangle will bundle the content, script, and some styles (a la the original Tangle.js) into a standalone html file which you can open.
## Example
example/cookies.entangle:
```entangle
# Cookies
If you eat `${cookies} cookies`, you will consume `${calories} calories`, or `${percent}%` of your recommended daily intake.
---
cookies:
class: TKAdjustableNumber
min: 0
max: 10
initial: 3
percent:
format: "%.0f"
---
update = ({cookies}) ->
calories: cookies*50,
percent: cookies*2.38
```
Running...
```shell
entangle example/cookies.entangle
```
... will output ...

## API
I also included some hooks for parsing entangle code.
```javascript
import { parse } from "entangle-doc";
const { html, javascript } = parse(source);
```
The resulting html is a `div` element you can put anywhere in the HTML `body`. The resulting javascript needs to be encapsulated in a `<script>` tag, but after that you can put it anywhere.
## Similar projects
- https://github.com/jqhoogland/remark-tangle
- https://github.com/alecperkins/active-markdown