// Copyright 2018 The Gitea 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 markup import ( "bytes" "html" "io" "strconv" "code.gitea.io/gitea/modules/csv" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" ) func init() { markup.RegisterParser(Parser{}) } // Parser implements markup.Parser for csv files type Parser struct { } // Name implements markup.Parser func (Parser) Name() string { return "csv" } // Extensions implements markup.Parser func (Parser) Extensions() []string { return []string{".csv", ".tsv"} } // Render implements markup.Parser func (Parser) Render(rawBytes []byte, urlPrefix string, metas map[string]string, isWiki bool) []byte { var tmpBlock bytes.Buffer if setting.UI.CSV.MaxFileSize != 0 && setting.UI.CSV.MaxFileSize < int64(len(rawBytes)) { tmpBlock.WriteString("
")
		tmpBlock.WriteString(html.EscapeString(string(rawBytes)))
		tmpBlock.WriteString("")
		return tmpBlock.Bytes()
	}
	rd := csv.CreateReaderAndGuessDelimiter(rawBytes)
	writeField := func(element, class, field string) {
		tmpBlock.WriteString("<")
		tmpBlock.WriteString(element)
		if len(class) > 0 {
			tmpBlock.WriteString(" class=\"")
			tmpBlock.WriteString(class)
			tmpBlock.WriteString("\"")
		}
		tmpBlock.WriteString(">")
		tmpBlock.WriteString(html.EscapeString(field))
		tmpBlock.WriteString("")
		tmpBlock.WriteString(element)
		tmpBlock.WriteString(">")
	}
	tmpBlock.WriteString(`