YamYam

Markdown Language

YamYam

YamYam is a simple kind of markdown compiler.

Basic things

# Headline
 
## Headline 2
 
Text, *Text with accent*, _more of this_
and even **more**... (and `code`)
 
* list item
* list item
 * list item
 
[ ] check list item
[X] check list item
 
( ) radio list item
(*) radio list item
 
http://www.google.com
[google](http://www.google.com)
 
a block of code with ```
 
| A table | B1
| A2 | B2 |
| A3
 | B3

YamYam supports annotations in the markdown, which can be used for app-specific things

[section-annotation name="value" name2=value2 name3='value3']
 
Annotations with following empty line mark sections of the document
 
[annotation name = value]
[annotation name = value2]
Annotations direct before a element annotated it.
Multiple annotations supported
var YamYam = require("YamYam");
 
// YamYam.parse(source, function(err, result) { 
// YamYam.parse(source, options, function(err, result) { 
YamYam.parse(source, options, formater, function(errresult) {
    // ... 
});
var options = {
    parser: {
        // Nothing yet 
    },
    format: {
        // Options for the formater 
        // depend on the used formater 
    }
}
 
var formatOptions = { // For HtmlFormater (default) 
    annotations: {
        // maps annotation name to a function proccessing this type 
        // example: 
        "@annotation"function(attrsannotation) {
            // annotation.name === "@annotation" 
            attrs["class"] = annotation.params["class"];
        }
    },
    block: , // specify how sections are handled 
    /*
        block: false
            the sections are emitted
            [ { annotations: [ ... ],
                content: "..." }, ... ]
        block: 4 // number
            only section number X will be returned
        block: "..." // string
            only sections which has an annotation named "..."
        block: function(section, number) { ... } // function
            true, sections is included
    */
    inline: false, // true, use only inline tags, no block level 
    /* Tags config:
        { tag: "a", href: "http://www.google.com" } // full config
    or: "a" // only tagname
    or: { // things with power: *xx*, `xx`, # xx
            "1": { tag: "em", ... },
            "2": "strong",
            "default": "em" // "default" is required!
        }
    or: "" // no tag
    */
    // Example for list 
    "list": "ul",
    "listItem", "li",
    // other tag config options: 
    /*
        # elements
        text: simple text
        checklist, checklistItem
        radiolist, radiolistItem
        code
        codeContainer
        codeLine
        codeText
        headline
        headlineText
        table, tableBody, tableHead
        tableRow, tableCell, tableHeadCell
        line: a line when multiline is possible (text, tableCell)
        # Inline
        textItem
        link
        accent
        codeItem
        img
    */
    /* advanced options:
        line: { tag:"", _prepend: "<br/>", _prependStart: "" }
        "checklistItem", {tag: "div", _prependContent: function(buffer, item) {
            buffer.push(item.checked?"&#9745;":"&#9744;");
            buffer.push("&nbsp;");
        }}
    */
    /* see lib/HtmlFormater.js for defaults */
}