0.3.0 • Published 13 years ago
YamYam v0.3.0
YamYam
YamYam is a simple kind of markdown compiler.
Syntax
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 ```
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
API
var YamYam = require("YamYam");
// YamYam.parse(source, function(err, result) {
// YamYam.parse(source, options, function(err, result) {
YamYam.parse(source, options, formater, function(err, result) {
// ...
});
options
var options = {
parser: {
// Nothing yet
},
formater: {
// Options for the formater
// depend on the used formater
}
}
var formaterOptions = { // For HtmlFormater (default)
annotations: {
// maps annotation name to a function proccessing this type
// example:
"@annotation": function(attrs, annotation) {
// annotation.name === "@annotation"
attrs["class"] = annotation.params["class"];
}
},
block: undefined, // 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,
linesSeperator: "<br/>",
// text
textTagname: "p", // inline: "span"
textOptionalPrepend: "<br/><br/>", // only inline
// list
listTagname: "ul", // inline: "span"
listInnerTagname: "li", // inline: "span"
listOptionalPrepend: "<br/><br/>", // only inline
listItemsSeperator: ", ", // only inline
subListPrepend: " (", // only inline
subListAppend: ")", // only inline
// checklist
checklistTagname: "div", // inline: "span"
checklistInnerTagname: "div", // inline: "span"
checklistOptionalPrepend: "<br/><br/>", // only inline
checklistItemsSeperator: ", ", // only inline
subChecklistPrepend: " (", // only inline
subChecklistAppend: ")", // only inline
// radiolist
radiolistTagname: "div", // inline: "span"
radiolistInnerTagname: "div", // inline: "span"
radiolistOptionalPrepend: "<br/><br/>", // only inline
radiolistItemsSeperator: ", ", // only inline
subRadiolistPrepend: " (", // only inline
subRadiolistAppend: ")", // only inline
// headline
headlineSubTagname: "small",
// code
codeTagname: "div", // inline: span
codeInnerTagname: "pre", // inline: code
codeTextTagname: "p", // inline: span
// formating
accents: {
"1": "em", // _xxx_
"2": "em", // *xxx*
"3": "strong", // __xxx__
"4": "strong", // **xxx**
"default": ["em", "strong"] // others
},
code: {
// same schema like accents
// 1 = `xxx`, 2 = ``xxx``, ...
"default": "code"
}
}