Skip to content

Instantly share code, notes, and snippets.

@sebald
Forked from dmajda/gist:7688943
Last active December 31, 2015 01:49
Show Gist options
  • Save sebald/7917136 to your computer and use it in GitHub Desktop.
Save sebald/7917136 to your computer and use it in GitHub Desktop.
Content =
all:(Element / Text)* {
return all.join("").replace(/\n$/, '');
}
Element =
startTag:StartTag content:Content endTag:EndTag {
if (startTag != endTag) {
throw new Error(
"Expected </" + startTag + "> but </" + endTag + "> found."
);
}
switch (startTag) {
case 'em':
case 'i':
return '*'+content+'*';
case 'b':
case 'strong':
return '**'+content+'**';
case 'div':
case 'p':
return content+'\n';
case 'sup':
case 'sub':
return '<' + startTag + '>' + content + '</' + endTag + '>';
default:
return content;
}
}
StartTag =
"<" name:TagName ">" { return name; }
EndTag =
"</" name:TagName ">" { return name; }
TagName = chars:[a-z]+ { return chars.join(""); }
Text = chars:[^<]+ { return chars.join(""); }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment