shithub: hugo

Download patch

ref: 2c54f1ad48fe2a2f7504117d351d45abc89dcb1f
parent: eb15ac37ef6668e298c0c4d8062726cd545da576
author: Bjørn Erik Pedersen <[email protected]>
date: Mon Apr 2 04:49:54 EDT 2018

docshelper: List Chroma lexers

Fixes #4554

--- /dev/null
+++ b/helpers/docshelper.go
@@ -1,0 +1,60 @@
+package helpers
+
+import (
+	"fmt"
+	"path/filepath"
+	"sort"
+	"strings"
+
+	"github.com/alecthomas/chroma/lexers"
+	"github.com/gohugoio/hugo/docshelper"
+)
+
+// This is is just some helpers used to create some JSON used in the Hugo docs.
+func init() {
+
+	docsProvider := func() map[string]interface{} {
+		docs := make(map[string]interface{})
+
+		var chromaLexers []interface{}
+
+		sort.Sort(lexers.Registry.Lexers)
+
+		for _, l := range lexers.Registry.Lexers {
+
+			config := l.Config()
+
+			var filenames []string
+			filenames = append(filenames, config.Filenames...)
+			filenames = append(filenames, config.AliasFilenames...)
+
+			aliases := config.Aliases
+
+			for _, filename := range filenames {
+				alias := strings.TrimSpace(strings.TrimPrefix(filepath.Ext(filename), "."))
+				if alias != "" {
+					aliases = append(aliases, alias)
+				}
+			}
+
+			sort.Strings(aliases)
+			aliases = UniqueStrings(aliases)
+
+			lexerEntry := struct {
+				Name    string
+				Aliases []string
+			}{
+				config.Name,
+				aliases,
+			}
+
+			chromaLexers = append(chromaLexers, lexerEntry)
+
+			docs["lexers"] = chromaLexers
+		}
+		return docs
+
+	}
+
+	docshelper.AddDocProvider("chroma", docsProvider)
+}