diff options
Diffstat (limited to 'markup/highlight/highlight.go')
-rw-r--r-- | markup/highlight/highlight.go | 34 |
1 files changed, 8 insertions, 26 deletions
diff --git a/markup/highlight/highlight.go b/markup/highlight/highlight.go index e9cbeb3c9..6013ba1c8 100644 --- a/markup/highlight/highlight.go +++ b/markup/highlight/highlight.go @@ -18,7 +18,6 @@ import ( gohtml "html" "html/template" "io" - "strconv" "strings" "github.com/alecthomas/chroma" @@ -98,6 +97,10 @@ func (h chromaHighlighter) HighlightCodeBlock(ctx hooks.CodeblockContext, opts i return HightlightResult{}, err } + if err := applyOptionsFromCodeBlockContext(ctx, &cfg); err != nil { + return HightlightResult{}, err + } + err := highlight(&b, ctx.Code(), ctx.Lang(), attributes, cfg) if err != nil { return HightlightResult{}, err @@ -116,6 +119,10 @@ func (h chromaHighlighter) RenderCodeblock(w hugio.FlexiWriter, ctx hooks.Codebl return err } + if err := applyOptionsFromCodeBlockContext(ctx, &cfg); err != nil { + return err + } + return highlight(w, ctx.Code(), ctx.Lang(), attributes, cfg) } @@ -133,31 +140,6 @@ func (h HightlightResult) Highlighted() template.HTML { return h.Body } -func (h chromaHighlighter) toHighlightOptionsAttributes(ctx hooks.CodeblockContext) (map[string]interface{}, map[string]interface{}) { - attributes := ctx.Attributes() - if attributes == nil || len(attributes) == 0 { - return nil, nil - } - - options := make(map[string]interface{}) - attrs := make(map[string]interface{}) - - for k, v := range attributes { - klow := strings.ToLower(k) - if chromaHightlightProcessingAttributes[klow] { - options[klow] = v - } else { - attrs[k] = v - } - } - const lineanchorsKey = "lineanchors" - if _, found := options[lineanchorsKey]; !found { - // Set it to the ordinal. - options[lineanchorsKey] = strconv.Itoa(ctx.Ordinal()) - } - return options, attrs -} - func highlight(w hugio.FlexiWriter, code, lang string, attributes []attributes.Attribute, cfg Config) error { var lexer chroma.Lexer if lang != "" { |