87 lines
1.8 KiB
Go
87 lines
1.8 KiB
Go
// Package templates contains the valyala/quicktemplate based code generation
|
|
// templates used by chromedp-gen.
|
|
package templates
|
|
|
|
import (
|
|
"strings"
|
|
"unicode"
|
|
|
|
"github.com/knq/chromedp/cmd/chromedp-gen/internal"
|
|
"github.com/knq/snaker"
|
|
)
|
|
|
|
const (
|
|
commentWidth = 80
|
|
commentPrefix = `// `
|
|
)
|
|
|
|
var toUpper = map[string]bool{
|
|
"DOM": true,
|
|
"X": true,
|
|
"Y": true,
|
|
}
|
|
|
|
var keep = map[string]bool{
|
|
"JavaScript": true,
|
|
}
|
|
|
|
var badHTMLReplacer = strings.NewReplacer(
|
|
"<", "<",
|
|
">", ">",
|
|
">", ">",
|
|
)
|
|
|
|
// formatComment formats a comment.
|
|
func formatComment(s, chop, newstr string) string {
|
|
s = strings.TrimPrefix(s, chop)
|
|
s = strings.TrimSpace(internal.CodeRE.ReplaceAllString(s, ""))
|
|
s = badHTMLReplacer.Replace(s)
|
|
|
|
l := len(s)
|
|
if newstr != "" && l > 0 {
|
|
if i := strings.IndexFunc(s, unicode.IsSpace); i != -1 {
|
|
firstWord, remaining := s[:i], s[i:]
|
|
if snaker.IsInitialism(firstWord) || toUpper[firstWord] {
|
|
s = strings.ToUpper(firstWord)
|
|
} else if keep[firstWord] {
|
|
s = firstWord
|
|
} else {
|
|
s = strings.ToLower(firstWord[:1]) + firstWord[1:]
|
|
}
|
|
s += remaining
|
|
}
|
|
}
|
|
s = newstr + strings.TrimSuffix(s, ".")
|
|
if l < 1 {
|
|
s += "[no description]"
|
|
}
|
|
s += "."
|
|
|
|
s, _ = internal.MisspellReplacer.Replace(s)
|
|
|
|
return wrap(s, commentWidth-len(commentPrefix), commentPrefix)
|
|
}
|
|
|
|
// wrap wraps a line of text to the specified width, and adding the prefix to
|
|
// each wrapped line.
|
|
func wrap(s string, width int, prefix string) string {
|
|
words := strings.Fields(strings.TrimSpace(s))
|
|
if len(words) == 0 {
|
|
return s
|
|
}
|
|
|
|
wrapped := prefix + words[0]
|
|
spaceLeft := width - len(wrapped)
|
|
for _, word := range words[1:] {
|
|
if len(word)+1 > spaceLeft {
|
|
wrapped += "\n" + prefix + word
|
|
spaceLeft = width - len(word)
|
|
} else {
|
|
wrapped += " " + word
|
|
spaceLeft -= 1 + len(word)
|
|
}
|
|
}
|
|
|
|
return wrapped
|
|
}
|