diff --git a/js/WikiTextRules.js b/js/WikiTextRules.js
index 636724516..4fe54ee19 100755
--- a/js/WikiTextRules.js
+++ b/js/WikiTextRules.js
@@ -400,9 +400,10 @@ var rules = [
{
name: "typedBlock",
match: "^\\$\\$\\$(?:.*)\\n",
- lookaheadRegExp: /^\$\$\$(.*)\n((?:.|\n)*?)\$\$\$/mg,
+ lookaheadRegExp: /^\$\$\$(.*)\n((?:^[^\n]*\n)+?)(^\f*\$\$\$$\n?)/mg,
handler: function(w)
{
+ this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
// The wikitext parsing infrastructure is horribly unre-entrant
diff --git a/tiddlywiki5/tiddlers/TypedBlockTests.tid b/tiddlywiki5/tiddlers/TypedBlockTests.tid
index cd819bd11..e4b408940 100644
--- a/tiddlywiki5/tiddlers/TypedBlockTests.tid
+++ b/tiddlywiki5/tiddlers/TypedBlockTests.tid
@@ -1,11 +1,31 @@
title: TypedBlockTests
-Here's an example of a typed block containing JavaScript source code:
-$$$.js
-return 2+2;
+WikiText can include blocks of text that are rendered with an explicit MIME type like this:
+{{{
+$$$application/javascript
+//This is some JavaScript
+return 2 + "one";
+$$$
+}}}
+This renders as:
+
+$$$application/javascript
+//This is some JavaScript
+return 2 + "one";
$$$
-Here's an example of a typed block containing an SVG image:
+It is also possible to abbreviate the MIME type to a file extension. For example:
+
+{{{
+$$$.svg
+
+$$$
+}}}
+
+This renders as:
+
$$$image/svg+xml