text: /**
   * Hash and escape <code> elements that should not be parsed as markdown
   */
  showdown.subParser('hashCodeTags', function (text, options, globals) {
    'use strict';
    text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);
  
    var repFunc = function (wholeMatch, match, left, right) {
      var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;
      return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';
    };
  
    // Hash naked <code>
    text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\b[^>]*>', '</code>', 'gim');
  
    text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);
    return text;
  });
  