all repos — grayfriday @ 67002b01b615af4456e1bb362d11002a57e32c1f

blackfriday fork with a few changes

Use HTML5 recommended style of language on code blocks

For code blocks that contain a certain language of code, the recommended
attribute structure is <pre><code class="language-foo">. This also
corresponds to the behavior expected by various JS syntax highlighters.

The GitHub code block implementation was obsolete, and identical to the
normal implementation except for its attribute structure, so it was
removed.

Closes #108.
tummychow tummychow@users.noreply.github.com
Wed, 27 Aug 2014 23:26:20 -0400
commit

67002b01b615af4456e1bb362d11002a57e32c1f

parent

2e7d690972283d45aadc7a5ea304841e26529433

1 files changed, 1 insertions(+), 53 deletions(-)

jump to
M html.gohtml.go

@@ -36,7 +36,6 @@ HTML_HREF_TARGET_BLANK // add a blank target

HTML_TOC // generate a table of contents HTML_OMIT_CONTENTS // skip the main contents (for a standalone table of contents) HTML_COMPLETE_PAGE // generate a complete HTML page - HTML_GITHUB_BLOCKCODE // use github fenced code rendering rules HTML_USE_XHTML // generate XHTML output instead of HTML HTML_USE_SMARTYPANTS // enable smart punctuation substitutions HTML_SMARTYPANTS_FRACTIONS // enable smart fractions (with HTML_USE_SMARTYPANTS)

@@ -232,14 +231,6 @@ out.WriteString(options.closeTag)

} func (options *Html) BlockCode(out *bytes.Buffer, text []byte, lang string) { - if options.flags&HTML_GITHUB_BLOCKCODE != 0 { - options.BlockCodeGithub(out, text, lang) - } else { - options.BlockCodeNormal(out, text, lang) - } -} - -func (options *Html) BlockCodeNormal(out *bytes.Buffer, text []byte, lang string) { doubleSpace(out) // parse out the language names/classes

@@ -252,7 +243,7 @@ if len(elt) == 0 {

continue } if count == 0 { - out.WriteString("<pre><code class=\"") + out.WriteString("<pre><code class=\"language-") } else { out.WriteByte(' ') }

@@ -264,49 +255,6 @@ if count == 0 {

out.WriteString("<pre><code>") } else { out.WriteString("\">") - } - - attrEscape(out, text) - out.WriteString("</code></pre>\n") -} - -// GitHub style code block: -// -// <pre lang="LANG"><code> -// ... -// </code></pre> -// -// Unlike other parsers, we store the language identifier in the <pre>, -// and don't let the user generate custom classes. -// -// The language identifier in the <pre> block gets postprocessed and all -// the code inside gets syntax highlighted with Pygments. This is much safer -// than letting the user specify a CSS class for highlighting. -// -// Note that we only generate HTML for the first specifier. -// E.g. -// ~~~~ {.python .numbered} => <pre lang="python"><code> -func (options *Html) BlockCodeGithub(out *bytes.Buffer, text []byte, lang string) { - doubleSpace(out) - - // parse out the language name - count := 0 - for _, elt := range strings.Fields(lang) { - if elt[0] == '.' { - elt = elt[1:] - } - if len(elt) == 0 { - continue - } - out.WriteString("<pre lang=\"") - attrEscape(out, []byte(elt)) - out.WriteString("\"><code>") - count++ - break - } - - if count == 0 { - out.WriteString("<pre><code>") } attrEscape(out, text)