|
|
|
@ -16,6 +16,7 @@ import ( |
|
|
|
|
"code.gitea.io/gitea/modules/analyze" |
|
|
|
|
"code.gitea.io/gitea/modules/log" |
|
|
|
|
"code.gitea.io/gitea/modules/setting" |
|
|
|
|
"github.com/alecthomas/chroma" |
|
|
|
|
"github.com/alecthomas/chroma/formatters/html" |
|
|
|
|
"github.com/alecthomas/chroma/lexers" |
|
|
|
|
"github.com/alecthomas/chroma/styles" |
|
|
|
@ -66,15 +67,18 @@ func Code(fileName, code string) string { |
|
|
|
|
htmlbuf := bytes.Buffer{} |
|
|
|
|
htmlw := bufio.NewWriter(&htmlbuf) |
|
|
|
|
|
|
|
|
|
var lexer chroma.Lexer |
|
|
|
|
if val, ok := highlightMapping[filepath.Ext(fileName)]; ok { |
|
|
|
|
//change file name to one with mapped extension so we look that up instead
|
|
|
|
|
fileName = "mapped." + val |
|
|
|
|
//use mapped value to find lexer
|
|
|
|
|
lexer = lexers.Get(val) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
lexer := lexers.Match(fileName) |
|
|
|
|
if lexer == nil { |
|
|
|
|
lexer = lexers.Match(fileName) |
|
|
|
|
if lexer == nil { |
|
|
|
|
lexer = lexers.Fallback |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
iterator, err := lexer.Tokenise(nil, string(code)) |
|
|
|
|
if err != nil { |
|
|
|
@ -114,19 +118,22 @@ func File(numLines int, fileName string, code []byte) map[int]string { |
|
|
|
|
htmlbuf := bytes.Buffer{} |
|
|
|
|
htmlw := bufio.NewWriter(&htmlbuf) |
|
|
|
|
|
|
|
|
|
var lexer chroma.Lexer |
|
|
|
|
if val, ok := highlightMapping[filepath.Ext(fileName)]; ok { |
|
|
|
|
fileName = "test." + val |
|
|
|
|
lexer = lexers.Get(val) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if lexer == nil { |
|
|
|
|
language := analyze.GetCodeLanguage(fileName, code) |
|
|
|
|
|
|
|
|
|
lexer := lexers.Get(language) |
|
|
|
|
lexer = lexers.Get(language) |
|
|
|
|
if lexer == nil { |
|
|
|
|
lexer = lexers.Match(fileName) |
|
|
|
|
if lexer == nil { |
|
|
|
|
lexer = lexers.Fallback |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
iterator, err := lexer.Tokenise(nil, string(code)) |
|
|
|
|
if err != nil { |
|
|
|
|