diff --git a/bower.json b/bower.json
index f3fa718..8a78061 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
{
"name": "showdown",
- "description": "JavaScript port of Markdown",
+ "description": "A Markdown to HTML converter written in Javascript",
"homepage": "https://github.com/showdownjs/showdown",
"authors": [
"John Fraser",
diff --git a/compressed/extensions/github.min.js b/compressed/extensions/github.min.js
index 48bbf1e..a515aaf 100644
--- a/compressed/extensions/github.min.js
+++ b/compressed/extensions/github.min.js
@@ -1,2 +1,27 @@
-/*! showdown 27-05-2015 */
-!function(){var a=function(a){return[{type:"lang",regex:"(~T){2}([^~]+)(~T){2}",replace:function(a,b,c,d){return""+c+""}}]};"undefined"!=typeof window&&window.Showdown&&window.Showdown.extensions&&(window.Showdown.extensions.github=a),"undefined"!=typeof module&&(module.exports=a)}();
\ No newline at end of file
+//
+// Github Extension (WIP)
+// ~~strike-through~~ -> strike-through
+//
+
+(function(){
+ var github = function(converter) {
+ return [
+ {
+ // strike-through
+ // NOTE: showdown already replaced "~" with "~T", so we need to adjust accordingly.
+ type : 'lang',
+ regex : '(~T){2}([^~]+)(~T){2}',
+ replace : function(match, prefix, content, suffix) {
+ return '' + content + '';
+ }
+ }
+ ];
+ };
+
+ // Client-side export
+ if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.github = github; }
+ // Server-side export
+ if (typeof module !== 'undefined') module.exports = github;
+}());
+
+//# sourceMappingURL=github.min.js.map
\ No newline at end of file
diff --git a/compressed/extensions/prettify.min.js b/compressed/extensions/prettify.min.js
index 1e057cf..0c615d7 100644
--- a/compressed/extensions/prettify.min.js
+++ b/compressed/extensions/prettify.min.js
@@ -1,2 +1,31 @@
-/*! showdown 27-05-2015 */
-!function(){var a=function(a){return[{type:"output",filter:function(a){return a.replace(/(
)?/gi,function(a,b){return b?'':''})}}]};"undefined"!=typeof window&&window.Showdown&&window.Showdown.extensions&&(window.Showdown.extensions.prettify=a),"undefined"!=typeof module&&(module.exports=a)}();
\ No newline at end of file
+//
+// Google Prettify
+// A showdown extension to add Google Prettify (http://code.google.com/p/google-code-prettify/)
+// hints to showdown's HTML output.
+//
+
+(function(){
+
+ var prettify = function(converter) {
+ return [
+ { type: 'output', filter: function(source){
+
+ return source.replace(/()?/gi, function(match, pre) {
+ if (pre) {
+ return '';
+ } else {
+ return '';
+ }
+ });
+ }}
+ ];
+ };
+
+ // Client-side export
+ if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.prettify = prettify; }
+ // Server-side export
+ if (typeof module !== 'undefined') module.exports = prettify;
+
+}());
+
+//# sourceMappingURL=prettify.min.js.map
\ No newline at end of file
diff --git a/compressed/extensions/table.min.js b/compressed/extensions/table.min.js
index 7547c8f..ca998b7 100644
--- a/compressed/extensions/table.min.js
+++ b/compressed/extensions/table.min.js
@@ -1,2 +1,108 @@
-/*! showdown 27-05-2015 */
-!function(){var a=function(a){var b,c={},d="text-align:left;";return c.th=function(a){if(""===a.trim())return"";var b=a.trim().replace(/ /g,"_").toLowerCase();return''+a+" "},c.td=function(b){return''+a.makeHtml(b)+" "},c.ths=function(){var a="",b=0,d=[].slice.apply(arguments);for(b;b\n",a+=c.ths.apply(this,b),a+="\n",a+="\n"},c.tr=function(){var a,b=[].slice.apply(arguments);return a="\n",a+=c.tds.apply(this,b),a+=" \n"},b=function(a){var b,d,e=0,f=a.split("\n"),g=[];for(e;e"),d=b.substring(1,b.length-1).split("|"),h.push(c.thead.apply(this,d)),b=f[++e],b.trim().match(/^[|]{1}[-=|: ]+[|]{1}$/)){for(b=f[++e],h.push("");b.trim().match(/^[|]{1}.*[|]{1}$/);)b=b.trim(),h.push(c.tr.apply(this,b.substring(1,b.length-1).split("|"))),b=f[++e];h.push(""),h.push(""),g.push(h.join("\n"));continue}b=f[--e]}g.push(b)}return g.join("\n")},[{type:"lang",filter:b}]};"undefined"!=typeof window&&window.Showdown&&window.Showdown.extensions&&(window.Showdown.extensions.table=a),"undefined"!=typeof module&&(module.exports=a)}();
\ No newline at end of file
+/*global module:true*/
+/*
+ * Basic table support with re-entrant parsing, where cell content
+ * can also specify markdown.
+ *
+ * Tables
+ * ======
+ *
+ * | Col 1 | Col 2 |
+ * |======== |====================================================|
+ * |**bold** | ![Valid XHTML] (http://w3.org/Icons/valid-xhtml10) |
+ * | Plain | Value |
+ *
+ */
+
+(function(){
+ var table = function(converter) {
+ var tables = {}, style = 'text-align:left;', filter;
+ tables.th = function(header){
+ if (header.trim() === "") { return "";}
+ var id = header.trim().replace(/ /g, '_').toLowerCase();
+ return '' + header + ' ';
+ };
+ tables.td = function(cell) {
+ return '' + converter.makeHtml(cell) + ' ';
+ };
+ tables.ths = function(){
+ var out = "", i = 0, hs = [].slice.apply(arguments);
+ for (i;i\n";
+ out += tables.ths.apply(this, hs);
+ out += "\n";
+ out += "\n";
+ return out;
+ };
+ tables.tr = function() {
+ var out, i = 0, cs = [].slice.apply(arguments);
+ out = "\n";
+ out += tables.tds.apply(this, cs);
+ out += " \n";
+ return out;
+ };
+ filter = function(text) {
+ var i=0, lines = text.split('\n'), line, hs, rows, out = [];
+ for (i; i');
+ hs = line.substring(1, line.length -1).split('|');
+ tbl.push(tables.thead.apply(this, hs));
+ line = lines[++i];
+ if (!line.trim().match(/^[|]{1}[-=|: ]+[|]{1}$/)) {
+ // not a table rolling back
+ line = lines[--i];
+ }
+ else {
+ line = lines[++i];
+ tbl.push('');
+ while (line.trim().match(/^[|]{1}.*[|]{1}$/)) {
+ line = line.trim();
+ tbl.push(tables.tr.apply(this, line.substring(1, line.length -1).split('|')));
+ line = lines[++i];
+ }
+ tbl.push('');
+ tbl.push('');
+ // we are done with this table and we move along
+ out.push(tbl.join('\n'));
+ continue;
+ }
+ }
+ out.push(line);
+ }
+ return out.join('\n');
+ };
+ return [
+ {
+ type: 'lang',
+ filter: filter
+ }
+ ];
+ };
+
+ // Client-side export
+ if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.table = table; }
+ // Server-side export
+ if (typeof module !== 'undefined') {
+ module.exports = table;
+ }
+}());
+
+//# sourceMappingURL=table.min.js.map
\ No newline at end of file
diff --git a/compressed/extensions/twitter.min.js b/compressed/extensions/twitter.min.js
index 257f82f..ea0b3e0 100644
--- a/compressed/extensions/twitter.min.js
+++ b/compressed/extensions/twitter.min.js
@@ -1,2 +1,44 @@
-/*! showdown 27-05-2015 */
-!function(){var a=function(a){return[{type:"lang",regex:"\\B(\\\\)?@([\\S]+)\\b",replace:function(a,b,c){return"\\"===b?a:'@'+c+""}},{type:"lang",regex:"\\B(\\\\)?#([\\S]+)\\b",replace:function(a,b,c){return"\\"===b?a:'#'+c+""}},{type:"lang",regex:"\\\\@",replace:"@"}]};"undefined"!=typeof window&&window.Showdown&&window.Showdown.extensions&&(window.Showdown.extensions.twitter=a),"undefined"!=typeof module&&(module.exports=a)}();
\ No newline at end of file
+//
+// Twitter Extension
+// @username -> @username
+// #hashtag -> #hashtag
+//
+
+(function(){
+
+ var twitter = function(converter) {
+ return [
+
+ // @username syntax
+ { type: 'lang', regex: '\\B(\\\\)?@([\\S]+)\\b', replace: function(match, leadingSlash, username) {
+ // Check if we matched the leading \ and return nothing changed if so
+ if (leadingSlash === '\\') {
+ return match;
+ } else {
+ return '@' + username + '';
+ }
+ }},
+
+ // #hashtag syntax
+ { type: 'lang', regex: '\\B(\\\\)?#([\\S]+)\\b', replace: function(match, leadingSlash, tag) {
+ // Check if we matched the leading \ and return nothing changed if so
+ if (leadingSlash === '\\') {
+ return match;
+ } else {
+ return '#' + tag + '';
+ }
+ }},
+
+ // Escaped @'s
+ { type: 'lang', regex: '\\\\@', replace: '@' }
+ ];
+ };
+
+ // Client-side export
+ if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.twitter = twitter; }
+ // Server-side export
+ if (typeof module !== 'undefined') module.exports = twitter;
+
+}());
+
+//# sourceMappingURL=twitter.min.js.map
\ No newline at end of file
diff --git a/package.json b/package.json
index 77c817b..833102f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,7 @@
{
"name": "showdown",
- "version": "0.5.3",
+ "version": "0.5.4",
+ "description": "A Markdown to HTML converter written in Javascript",
"author": "John Fraser",
"contributors": [
"John Gruber",