Boostport/mjml-go

View on GitHub
html_minifier_options.go

Summary

Maintainability
B
4 hrs
Test Coverage
A
100%
package mjml

type HTMLMinifierQuoteCharacter string

const (
    HTMLMinifierSingleQuote HTMLMinifierQuoteCharacter = "'"
    HTMLMinifierDoubleQuote HTMLMinifierQuoteCharacter = "\""
)

// HTMLMinifierOptions is used to construct HTMLMinifier options
// Detailed explanations of the options are here: https://github.com/kangax/html-minifier#options-quick-reference
type HTMLMinifierOptions interface {
    CaseSensitive(bool) HTMLMinifierOptions
    CollapseBooleanAttributes(bool) HTMLMinifierOptions
    CollapseInlineTagWhitespace(bool) HTMLMinifierOptions
    CollapseWhitespace(bool) HTMLMinifierOptions
    ConservativeCollapse(bool) HTMLMinifierOptions
    ContinueOnParseError(bool) HTMLMinifierOptions
    CustomAttrAssign([]string) HTMLMinifierOptions
    CustomAttrCollapse(string) HTMLMinifierOptions
    CustomAttrSurround([]string) HTMLMinifierOptions
    DecodeEntities(bool) HTMLMinifierOptions
    HTML5(bool) HTMLMinifierOptions
    IgnoreCustomComments([]string) HTMLMinifierOptions
    IgnoreCustomFragments([]string) HTMLMinifierOptions
    IncludeAutoGeneratedTags(bool) HTMLMinifierOptions
    KeepClosingSlash(bool) HTMLMinifierOptions
    MaxLineLength(lineLength uint) HTMLMinifierOptions
    MinifyCSS(bool) HTMLMinifierOptions
    MinifyURLs(bool) HTMLMinifierOptions
    PreserveLineBreaks(bool) HTMLMinifierOptions
    PreventAttributesEscaping(bool) HTMLMinifierOptions
    ProcessConditionalComments(bool) HTMLMinifierOptions
    ProcessScripts([]string) HTMLMinifierOptions
    QuoteCharacter(character HTMLMinifierQuoteCharacter) HTMLMinifierOptions
    RemoveAttributeQuotes(bool) HTMLMinifierOptions
    RemoveComments(bool) HTMLMinifierOptions
    RemoveEmptyAttributes(bool) HTMLMinifierOptions
    RemoveEmptyElements(bool) HTMLMinifierOptions
    RemoveOptionalTags(bool) HTMLMinifierOptions
    RemoveRedundantAttributes(bool) HTMLMinifierOptions
    RemoveScriptTypeAttributes(bool) HTMLMinifierOptions
    RemoveStyleLinkTypeAttributes(bool) HTMLMinifierOptions
    RemoveTagWhitespace(bool) HTMLMinifierOptions
    SortAttributes(bool) HTMLMinifierOptions
    SortClassName(bool) HTMLMinifierOptions
    TrimCustomFragments(bool) HTMLMinifierOptions
    UseShortDoctype(bool) HTMLMinifierOptions
}

type htmlMinifierOptions struct {
    data map[string]interface{}
}

func (o *htmlMinifierOptions) CaseSensitive(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["caseSensitive"] = b
    return &ret
}

func (o *htmlMinifierOptions) CollapseBooleanAttributes(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["collapseBooleanAttributes"] = b
    return &ret
}

func (o *htmlMinifierOptions) CollapseInlineTagWhitespace(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["collapseInlineTagWhitespace"] = b
    return &ret
}

func (o *htmlMinifierOptions) CollapseWhitespace(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["collapseWhitespace"] = b
    return &ret
}

func (o *htmlMinifierOptions) ConservativeCollapse(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["conservativeCollapse"] = b
    return &ret
}

func (o *htmlMinifierOptions) ContinueOnParseError(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["continueOnParseError"] = b
    return &ret
}

func (o *htmlMinifierOptions) CustomAttrAssign(regexes []string) HTMLMinifierOptions {
    ret := *o
    ret.data["customAttrAssign"] = regexes
    return &ret
}

func (o *htmlMinifierOptions) CustomAttrCollapse(regex string) HTMLMinifierOptions {
    ret := *o
    ret.data["customAttrCollapse"] = regex
    return &ret
}

func (o *htmlMinifierOptions) CustomAttrSurround(regexes []string) HTMLMinifierOptions {
    ret := *o
    ret.data["customAttrSurround"] = regexes
    return &ret
}

func (o *htmlMinifierOptions) DecodeEntities(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["decodeEntities"] = b
    return &ret
}

func (o *htmlMinifierOptions) HTML5(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["html5"] = b
    return &ret
}

func (o *htmlMinifierOptions) IgnoreCustomComments(regexes []string) HTMLMinifierOptions {
    ret := *o
    ret.data["ignoreCustomComments"] = regexes
    return &ret
}

func (o *htmlMinifierOptions) IgnoreCustomFragments(regexes []string) HTMLMinifierOptions {
    ret := *o
    ret.data["ignoreCustomFragments"] = regexes
    return &ret
}

func (o *htmlMinifierOptions) IncludeAutoGeneratedTags(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["includeAutoGeneratedTags"] = b
    return &ret
}

func (o *htmlMinifierOptions) KeepClosingSlash(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["keepClosingSlash"] = b
    return &ret
}

func (o *htmlMinifierOptions) MaxLineLength(lineLength uint) HTMLMinifierOptions {
    ret := *o
    ret.data["maxLineLength"] = lineLength
    return &ret
}

func (o *htmlMinifierOptions) MinifyCSS(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["minifyCSS"] = b
    return &ret
}

func (o *htmlMinifierOptions) MinifyURLs(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["minifyURLs"] = b
    return &ret
}

func (o *htmlMinifierOptions) PreserveLineBreaks(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["preserveLineBreaks"] = b
    return &ret
}

func (o *htmlMinifierOptions) PreventAttributesEscaping(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["preventAttributesEscaping"] = b
    return &ret
}

func (o *htmlMinifierOptions) ProcessConditionalComments(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["processConditionalComments"] = b
    return &ret
}

func (o *htmlMinifierOptions) ProcessScripts(scriptTypes []string) HTMLMinifierOptions {
    ret := *o
    ret.data["processScripts"] = scriptTypes
    return &ret
}

func (o *htmlMinifierOptions) QuoteCharacter(quoteCharacter HTMLMinifierQuoteCharacter) HTMLMinifierOptions {
    ret := *o
    ret.data["quoteCharacter"] = quoteCharacter
    return &ret
}

func (o *htmlMinifierOptions) RemoveAttributeQuotes(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeAttributeQuotes"] = b
    return &ret
}

func (o *htmlMinifierOptions) RemoveComments(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeComments"] = b
    return &ret
}

func (o *htmlMinifierOptions) RemoveEmptyAttributes(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeEmptyAttributes"] = b
    return &ret
}

func (o *htmlMinifierOptions) RemoveEmptyElements(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeEmptyElements"] = b
    return &ret
}

func (o *htmlMinifierOptions) RemoveOptionalTags(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeOptionalTags"] = b
    return &ret
}

func (o *htmlMinifierOptions) RemoveRedundantAttributes(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeRedundantAttributes"] = b
    return &ret
}

func (o *htmlMinifierOptions) RemoveScriptTypeAttributes(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeScriptTypeAttributes"] = b
    return &ret
}

func (o *htmlMinifierOptions) RemoveStyleLinkTypeAttributes(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeStyleLinkTypeAttributes"] = b
    return &ret
}

func (o *htmlMinifierOptions) RemoveTagWhitespace(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["removeTagWhitespace"] = b
    return &ret
}

func (o *htmlMinifierOptions) SortAttributes(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["sortAttributes"] = b
    return &ret
}

func (o *htmlMinifierOptions) SortClassName(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["sortClassName"] = b
    return &ret
}

func (o *htmlMinifierOptions) TrimCustomFragments(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["trimCustomFragments"] = b
    return &ret
}

func (o *htmlMinifierOptions) UseShortDoctype(b bool) HTMLMinifierOptions {
    ret := *o
    ret.data["useShortDoctype"] = b
    return &ret
}

func NewHTMLMinifierOptions() HTMLMinifierOptions {
    return &htmlMinifierOptions{
        data: map[string]interface{}{},
    }
}