code2html

in src/_plugins/prettify_core.rb [33:69]


    def code2html(code, lang: nil, context: 'markdown', tag_specifier: 'pre', user_classes: nil)
      tag = _get_real_tag(tag_specifier || 'pre')
      css_classes = _css_classes(lang, user_classes)
      class_attr = css_classes.empty? ? '' : " class=\"#{css_classes.join(' ')}\""

      out = "<#{tag}#{class_attr}>"
      out += '<code>' if tag_specifier == 'pre+code'

      code = context == 'markdown' ?
                 Util.block_trim_leading_whitespace(code.split(/\n/)).join("\n") :
                 Util.trim_min_leading_space(code)
      
      code.strip!
      code = CGI.escapeHTML(code)

      if tag_specifier == 'code+br'
        code.gsub!(/\n[ \t]*/) { |s|
          "<br>\n#{'&nbsp;' * (s.length - 1)}"
        }
      end

      
      code.gsub!(/\[\[([\w-]+)\]\]/, '<span class="\1">')
      code.gsub!(/\[\[\/([\w-]*)\]\]/, '</span>')

      
      code.gsub!(/\/\*\*([\w-]+)\*\//, '<span class="\1">')
      code.gsub!(/\/\*-([\w-]*)\*\//, '</span>')

      code.gsub!('[!', '<span class="highlight">')
      code.gsub!('!]', '</span>')

      out += code
      out += '</code>' if tag_specifier == 'pre+code'
      out += "</#{tag}>"
    end