31 lines
1.1 KiB
HTML
31 lines
1.1 KiB
HTML
<article>
|
|
<p>I've been playing with an exciting feature of HTML5 that I hadn't heard of: the <code class="language-html">contentEditable</code> attribute. It's magical! It just makes anything suddenly be editable in-browser! It also finally provides me with the thing I've been wanting ever since growing dissatisfied with text editors: A way to build a <em>new</em> text editor, <em>without</em> having to actually code up the guts of text movement, manipulation, and entry. Oh, happy day!</p>
|
|
<p>More on this as the situation progresses.</p>
|
|
/*
|
|
* This is my parser.
|
|
* It's not much, but it's mine.
|
|
*/
|
|
|
|
blocks = code:(if_block / lines)* { return code; }
|
|
|
|
if_block =
|
|
"if" ws "(" cond:string ")" ws "{" result:lines "}"
|
|
{ return {type: "if", condition: cond, body: result }; }
|
|
|
|
/*
|
|
while_block = "while" ws "(" cond:string ")" ws "{" result:lines "}"
|
|
{ return {type: "while", condition: cond, body: result }; }
|
|
*/
|
|
|
|
lines = lines:line+ ws?
|
|
{ return lines; }
|
|
|
|
line = ws? contents:string ";"
|
|
{ return contents; }
|
|
|
|
ws = (" " / "\n")+ { return ""; }
|
|
|
|
string = characters:([A-Za-z]+ [A-Za-z ]*) { return characters.join(""); }
|
|
|
|
</article>
|