From f834358c6c2b3577ba70cd93f08e4186f8df3096 Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 25 Apr 2014 16:22:03 -0600 Subject: [PATCH 1/2] Allow Uglify beautifier options in configuration. --- .../minified/js/uglify/UglifyJsResourceMapper.groovy | 2 +- .../resource/minified/js/uglify/UglifyEngine.groovy | 4 +++- .../resource/minified/js/uglify/UglifyEngineTests.groovy | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/grails-app/resourceMappers/org/grails/plugin/resource/minified/js/uglify/UglifyJsResourceMapper.groovy b/grails-app/resourceMappers/org/grails/plugin/resource/minified/js/uglify/UglifyJsResourceMapper.groovy index b9b175a..3bb862d 100644 --- a/grails-app/resourceMappers/org/grails/plugin/resource/minified/js/uglify/UglifyJsResourceMapper.groovy +++ b/grails-app/resourceMappers/org/grails/plugin/resource/minified/js/uglify/UglifyJsResourceMapper.groovy @@ -38,7 +38,7 @@ class UglifyJsResourceMapper implements GrailsApplicationAware { try { Date start = new Date() - def output = new UglifyEngine().minify(original.text, [filename: original.name, noMunge: config?.noMunge ?: false]) + def output = new UglifyEngine().minify(original.text, [filename: original.name] + config) target.write(output) resource.processedFile = target diff --git a/src/groovy/org/grails/plugin/resource/minified/js/uglify/UglifyEngine.groovy b/src/groovy/org/grails/plugin/resource/minified/js/uglify/UglifyEngine.groovy index aef74bc..9dae520 100644 --- a/src/groovy/org/grails/plugin/resource/minified/js/uglify/UglifyEngine.groovy +++ b/src/groovy/org/grails/plugin/resource/minified/js/uglify/UglifyEngine.groovy @@ -1,5 +1,6 @@ package org.grails.plugin.resource.minified.js.uglify +import grails.converters.JSON import org.springframework.core.io.ClassPathResource import org.mozilla.javascript.Context import org.mozilla.javascript.Scriptable @@ -66,8 +67,9 @@ class UglifyEngine { compressedAst.mangle_names() """ + def printOptions = (options?.beautifierOptions ?: [:]) as JSON uglifyCommand += """\ - return compressedAst.print_to_string() + return compressedAst.print_to_string($printOptions) }()) """ diff --git a/test/unit/org/grails/plugins/resource/minified/js/uglify/UglifyEngineTests.groovy b/test/unit/org/grails/plugins/resource/minified/js/uglify/UglifyEngineTests.groovy index 2a15641..3ab50fd 100644 --- a/test/unit/org/grails/plugins/resource/minified/js/uglify/UglifyEngineTests.groovy +++ b/test/unit/org/grails/plugins/resource/minified/js/uglify/UglifyEngineTests.groovy @@ -33,5 +33,14 @@ class UglifyEngineTests extends GrailsUnitTestCase { assert output.contains("Private") assert !output.contains("comment") } + + void testBeautifier() { + def input = "var unicodeChar = '\u24b6';" + def output = uglifyEngine.minify(input, [filename: "In memory file"]) + assert !output.contains("u24b6") + + output = uglifyEngine.minify(input, [filename: "In memory file", beautifierOptions: [ascii_only: true]]) + assert output.contains("u24b6") + } } From 0394ac4fe9bdfb828e56563f00ce649a7ba0e8fb Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 28 Apr 2014 09:49:29 -0600 Subject: [PATCH 2/2] Switch to JsonBuilder since JSON marshallers aren't initialized at this point. --- .../plugin/resource/minified/js/uglify/UglifyEngine.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/groovy/org/grails/plugin/resource/minified/js/uglify/UglifyEngine.groovy b/src/groovy/org/grails/plugin/resource/minified/js/uglify/UglifyEngine.groovy index 9dae520..0a11cce 100644 --- a/src/groovy/org/grails/plugin/resource/minified/js/uglify/UglifyEngine.groovy +++ b/src/groovy/org/grails/plugin/resource/minified/js/uglify/UglifyEngine.groovy @@ -1,6 +1,6 @@ package org.grails.plugin.resource.minified.js.uglify -import grails.converters.JSON +import groovy.json.JsonBuilder import org.springframework.core.io.ClassPathResource import org.mozilla.javascript.Context import org.mozilla.javascript.Scriptable @@ -67,7 +67,7 @@ class UglifyEngine { compressedAst.mangle_names() """ - def printOptions = (options?.beautifierOptions ?: [:]) as JSON + def printOptions = new JsonBuilder(options?.beautifierOptions ?: [:]).toString() uglifyCommand += """\ return compressedAst.print_to_string($printOptions) }())