summaryrefslogtreecommitdiffhomepage
path: root/helpers/docshelper.go
diff options
context:
space:
mode:
Diffstat (limited to 'helpers/docshelper.go')
-rw-r--r--helpers/docshelper.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/helpers/docshelper.go b/helpers/docshelper.go
new file mode 100644
index 000000000..742b7bcf0
--- /dev/null
+++ b/helpers/docshelper.go
@@ -0,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)
+}