| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | 
							- // Copyright 2015 The Gogs Authors. All rights reserved.
 
- // Use of this source code is governed by a MIT-style
 
- // license that can be found in the LICENSE file.
 
- package highlight
 
- import (
 
- 	"path"
 
- 	"strings"
 
- 	"gogs.io/gogs/internal/conf"
 
- )
 
- var (
 
- 	// File name should ignore highlight.
 
- 	ignoreFileNames = map[string]bool{
 
- 		"license": true,
 
- 		"copying": true,
 
- 	}
 
- 	// File names that are representing highlight classes.
 
- 	highlightFileNames = map[string]bool{
 
- 		"cmakelists.txt": true,
 
- 		"dockerfile":     true,
 
- 		"makefile":       true,
 
- 	}
 
- 	// Extensions that are same as highlight classes.
 
- 	highlightExts = map[string]bool{
 
- 		".arm":    true,
 
- 		".as":     true,
 
- 		".sh":     true,
 
- 		".cs":     true,
 
- 		".cpp":    true,
 
- 		".c":      true,
 
- 		".css":    true,
 
- 		".cmake":  true,
 
- 		".bat":    true,
 
- 		".dart":   true,
 
- 		".patch":  true,
 
- 		".elixir": true,
 
- 		".erlang": true,
 
- 		".go":     true,
 
- 		".html":   true,
 
- 		".xml":    true,
 
- 		".hs":     true,
 
- 		".ini":    true,
 
- 		".json":   true,
 
- 		".java":   true,
 
- 		".js":     true,
 
- 		".less":   true,
 
- 		".lua":    true,
 
- 		".php":    true,
 
- 		".py":     true,
 
- 		".rb":     true,
 
- 		".scss":   true,
 
- 		".sql":    true,
 
- 		".scala":  true,
 
- 		".swift":  true,
 
- 		".ts":     true,
 
- 		".vb":     true,
 
- 		".r":      true,
 
- 		".sas":    true,
 
- 		".tex":    true,
 
- 		".yaml":   true,
 
- 	}
 
- 	// Extensions that are not same as highlight classes.
 
- 	highlightMapping = map[string]string{
 
- 		".txt": "nohighlight",
 
- 	}
 
- )
 
- func NewContext() {
 
- 	keys := conf.File.Section("highlight.mapping").Keys()
 
- 	for i := range keys {
 
- 		highlightMapping[keys[i].Name()] = keys[i].Value()
 
- 	}
 
- }
 
- // FileNameToHighlightClass returns the best match for highlight class name
 
- // based on the rule of highlight.js.
 
- func FileNameToHighlightClass(fname string) string {
 
- 	fname = strings.ToLower(fname)
 
- 	if ignoreFileNames[fname] {
 
- 		return "nohighlight"
 
- 	}
 
- 	if highlightFileNames[fname] {
 
- 		return fname
 
- 	}
 
- 	ext := path.Ext(fname)
 
- 	if highlightExts[ext] {
 
- 		return ext[1:]
 
- 	}
 
- 	name, ok := highlightMapping[ext]
 
- 	if ok {
 
- 		return name
 
- 	}
 
- 	return ""
 
- }
 
 
  |