Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/reporting/exporters/markdown/util/markdown_utils.go
2072 views
1
package util
2
3
import (
4
"bytes"
5
"fmt"
6
"strings"
7
8
"github.com/projectdiscovery/utils/errkit"
9
)
10
11
func CreateLink(title string, url string) string {
12
return fmt.Sprintf("[%s](%s)", title, url)
13
}
14
15
func MakeBold(text string) string {
16
return "**" + text + "**"
17
}
18
19
func CreateTable(headers []string, rows [][]string) (string, error) {
20
builder := &bytes.Buffer{}
21
headerSize := len(headers)
22
if headers == nil || headerSize == 0 {
23
return "", errkit.New("No headers provided")
24
}
25
26
builder.WriteString(CreateTableHeader(headers...))
27
28
for _, row := range rows {
29
rowSize := len(row)
30
if rowSize == headerSize {
31
builder.WriteString(CreateTableRow(row...))
32
} else if rowSize < headerSize {
33
extendedRows := make([]string, headerSize)
34
copy(extendedRows, row)
35
builder.WriteString(CreateTableRow(extendedRows...))
36
} else {
37
return "", errkit.New("Too many columns for the given headers")
38
}
39
}
40
41
return builder.String(), nil
42
}
43
44
func CreateTableHeader(headers ...string) string {
45
headerSize := len(headers)
46
if headers == nil || headerSize == 0 {
47
return ""
48
}
49
50
return CreateTableRow(headers...) +
51
"|" + strings.Repeat(" --- |", headerSize) + "\n"
52
}
53
54
func CreateTableRow(elements ...string) string {
55
return fmt.Sprintf("| %s |\n", strings.Join(elements, " | "))
56
}
57
58
func CreateHeading3(text string) string {
59
return "### " + text + "\n"
60
}
61
62
func CreateHorizontalLine() string {
63
// for regular markdown 3 dashes are enough, but for Jira the minimum is 4
64
return "----\n"
65
}
66
67