(function() {
  Discourse.Dialect.inlineBetween({
    start: "[color=",
    stop:  "[/color]",
    rawContents: true,
    emitter: function(contents) {
      var matches = contents.match(/(.+)](.*)/);
      if (matches) {
        return ['font', {color: matches[1]}, matches[2]];
      }
    }
  });
  Discourse.Markdown.whiteListTag('font', 'color', /\w+/);
  Discourse.Markdown.whiteListTag('font', 'color', /#[0-9A-Fa-f]+/);
})();

@@ -190,16 +190,17 @@
 .+)%5D(.*)
+$
 /);%0A    
@@ -259,18 +259,44 @@
 ches%5B1%5D%7D
-, 
+%5D.concat(this.processInline(
 matches%5B
@@ -297,17 +297,18 @@
 tches%5B2%5D
-%5D
+))
 ;%0A      

Support recursion in color tags