diff options
Diffstat (limited to 'vendor/github.com/tdewolff/minify/js/js.go')
-rw-r--r-- | vendor/github.com/tdewolff/minify/js/js.go | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/vendor/github.com/tdewolff/minify/js/js.go b/vendor/github.com/tdewolff/minify/js/js.go index 1f6c0b8..7d995e1 100644 --- a/vendor/github.com/tdewolff/minify/js/js.go +++ b/vendor/github.com/tdewolff/minify/js/js.go @@ -48,29 +48,38 @@ func (o *Minifier) Minify(_ *minify.M, w io.Writer, r io.Reader, _ map[string]st lineTerminatorQueued = true } else if tt == js.WhitespaceToken { whitespaceQueued = true - } else if tt == js.CommentToken { + } else if tt == js.SingleLineCommentToken || tt == js.MultiLineCommentToken { if len(data) > 5 && data[1] == '*' && data[2] == '!' { if _, err := w.Write(data[:3]); err != nil { return err } - comment := parse.TrimWhitespace(parse.ReplaceMultipleWhitespace(data[3 : len(data)-2])) + comment := parse.ReplaceMultipleWhitespace(data[3 : len(data)-2]) + if tt != js.MultiLineCommentToken { + // don't trim newlines in multiline comments as that might change ASI + // (we could do a more expensive check post-factum but it's not worth it) + comment = parse.TrimWhitespace(comment) + } if _, err := w.Write(comment); err != nil { return err } if _, err := w.Write(data[len(data)-2:]); err != nil { return err } + } else if tt == js.MultiLineCommentToken { + lineTerminatorQueued = true + } else { + whitespaceQueued = true } } else { first := data[0] - if (prev == js.IdentifierToken || prev == js.NumericToken || prev == js.PunctuatorToken || prev == js.StringToken || prev == js.RegexpToken) && - (tt == js.IdentifierToken || tt == js.NumericToken || tt == js.StringToken || tt == js.PunctuatorToken || tt == js.RegexpToken) { + if (prev == js.IdentifierToken || prev == js.NumericToken || prev == js.PunctuatorToken || prev == js.StringToken || prev == js.TemplateToken || prev == js.RegexpToken) && + (tt == js.IdentifierToken || tt == js.NumericToken || tt == js.StringToken || tt == js.TemplateToken || tt == js.PunctuatorToken || tt == js.RegexpToken) { if lineTerminatorQueued && (prev != js.PunctuatorToken || prevLast == '}' || prevLast == ']' || prevLast == ')' || prevLast == '+' || prevLast == '-' || prevLast == '"' || prevLast == '\'') && (tt != js.PunctuatorToken || first == '{' || first == '[' || first == '(' || first == '+' || first == '-' || first == '!' || first == '~') { if _, err := w.Write(newlineBytes); err != nil { return err } - } else if whitespaceQueued && (prev != js.StringToken && prev != js.PunctuatorToken && tt != js.PunctuatorToken || (prevLast == '+' || prevLast == '-') && first == prevLast) { + } else if whitespaceQueued && (prev != js.StringToken && prev != js.PunctuatorToken && tt != js.PunctuatorToken || (prevLast == '+' || prevLast == '-' || prevLast == '/') && first == prevLast) { if _, err := w.Write(spaceBytes); err != nil { return err } |