Files
sift/vendor/github.com/JohannesKaufmann/html-to-markdown/v2/plugin/commonmark/validation.go
T
kyle 9444a35322 p1: /v2/scrape, /v1/fetch, auth, CLI, contract tests
Single Fetcher.Fetch on the Guard that holds DenyPrefixes. skipTlsVerification
is ignored. No 502. keys add writes the secret only to --out. Release binary
has no -test-allow-prefix.
2026-09-22 21:54:01 -07:00

102 lines
2.8 KiB
Go

package commonmark
import (
"fmt"
"strings"
)
func contains(values []string, searchVal string) bool {
for _, val := range values {
if val == searchVal {
return true
}
}
return false
}
// TODO: should this be with the commonmark package? Or more general?
// TODO: Maybe make it an interface? And also have a GetPluginName function?
type ValidateConfigError struct {
Key string
Value string
// By default is "Key:Value" but can be
// overriden to e.g. "--key=value"
KeyWithValue string
patternDescription string
}
func (e *ValidateConfigError) setDefaultKeyWithValue() {
e.KeyWithValue = fmt.Sprintf("%s:%q", e.Key, e.Value)
}
func (e *ValidateConfigError) Error() string {
if e.KeyWithValue == "" {
e.setDefaultKeyWithValue()
}
return fmt.Sprintf("invalid value for %s must be %s", e.KeyWithValue, e.patternDescription)
}
func validateConfig(cfg *config) error {
if strings.Count(cfg.EmDelimiter, "_") != 1 && strings.Count(cfg.EmDelimiter, "*") != 1 {
return &ValidateConfigError{
Key: "EmDelimiter",
Value: cfg.EmDelimiter,
patternDescription: `exactly 1 character of "*" or "_"`,
}
}
if strings.Count(cfg.StrongDelimiter, "_") != 2 && strings.Count(cfg.StrongDelimiter, "*") != 2 {
return &ValidateConfigError{
Key: "StrongDelimiter",
Value: cfg.StrongDelimiter,
patternDescription: `exactly 2 characters of "**" or "__"`,
}
}
if strings.Count(cfg.HorizontalRule, "*") < 3 &&
strings.Count(cfg.HorizontalRule, "_") < 3 &&
strings.Count(cfg.HorizontalRule, "-") < 3 {
return &ValidateConfigError{
Key: "HorizontalRule",
Value: cfg.HorizontalRule,
patternDescription: `at least 3 characters of "*", "_" or "-"`,
}
}
if !contains([]string{"-", "+", "*"}, cfg.BulletListMarker) {
return &ValidateConfigError{
Key: "BulletListMarker",
Value: cfg.BulletListMarker,
patternDescription: `one of "-", "+" or "*"`,
}
}
if !contains([]string{"```", "~~~"}, cfg.CodeBlockFence) {
return &ValidateConfigError{
Key: "CodeBlockFence",
Value: cfg.CodeBlockFence,
patternDescription: "one of \"```\" or \"~~~\"",
}
}
if !contains([]string{"atx", "setext"}, string(cfg.HeadingStyle)) {
return &ValidateConfigError{
Key: "HeadingStyle",
Value: string(cfg.HeadingStyle),
patternDescription: `one of "atx" or "setext"`,
}
}
possibleLinkStyles := []string{string(LinkStyleInlined), string(LinkStyleReferencedIndex), string(LinkStyleReferencedShort)}
if !contains(possibleLinkStyles, string(cfg.LinkStyle)) {
return &ValidateConfigError{
Key: "LinkStyle",
Value: string(cfg.LinkStyle),
patternDescription: `one of "inlined", "referenced_index" or "referenced_short"`,
}
}
return nil
}