diff options
Diffstat (limited to 'libgo/go/html/template/js.go')
-rw-r--r-- | libgo/go/html/template/js.go | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/libgo/go/html/template/js.go b/libgo/go/html/template/js.go index f6d166b..6434fa3 100644 --- a/libgo/go/html/template/js.go +++ b/libgo/go/html/template/js.go @@ -162,14 +162,14 @@ func jsValEscaper(args ...interface{}) string { // a division operator it is not turned into a line comment: // x/{{y}} // turning into - // x//* error marshalling y: + // x//* error marshaling y: // second line of error message */null return fmt.Sprintf(" /* %s */null ", strings.Replace(err.Error(), "*/", "* /", -1)) } // TODO: maybe post-process output to prevent it from containing // "<!--", "-->", "<![CDATA[", "]]>", or "</script" - // in case custom marshallers produce output containing those. + // in case custom marshalers produce output containing those. // TODO: Maybe abbreviate \u00ab to \xab to produce more compact output. if len(b) == 0 { @@ -362,3 +362,43 @@ func isJSIdentPart(r rune) bool { } return false } + +// isJSType returns true if the given MIME type should be considered JavaScript. +// +// It is used to determine whether a script tag with a type attribute is a javascript container. +func isJSType(mimeType string) bool { + // per + // https://www.w3.org/TR/html5/scripting-1.html#attr-script-type + // https://tools.ietf.org/html/rfc7231#section-3.1.1 + // https://tools.ietf.org/html/rfc4329#section-3 + // https://www.ietf.org/rfc/rfc4627.txt + + // discard parameters + if i := strings.Index(mimeType, ";"); i >= 0 { + mimeType = mimeType[:i] + } + mimeType = strings.TrimSpace(mimeType) + switch mimeType { + case + "application/ecmascript", + "application/javascript", + "application/json", + "application/x-ecmascript", + "application/x-javascript", + "text/ecmascript", + "text/javascript", + "text/javascript1.0", + "text/javascript1.1", + "text/javascript1.2", + "text/javascript1.3", + "text/javascript1.4", + "text/javascript1.5", + "text/jscript", + "text/livescript", + "text/x-ecmascript", + "text/x-javascript": + return true + default: + return false + } +} |