diff --git a/.gitignore b/.gitignore index 52d85dc..acc0be2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea +.iml node_modules -*-converted.js -*.log +test/test-output +*.log \ No newline at end of file diff --git a/index.js b/index.js index ddc28c3..4ffcb86 100644 --- a/index.js +++ b/index.js @@ -27,7 +27,14 @@ function native2ascii(str) { function ascii2native(str) { - return unescape(str.split('\\').join('%')); + if(str.indexOf('\\\\u')>-1){ + // fix err js minify string + return ascii2native.call(null, str.replace(/\\(\\u(\w+){4})/g, function (all, key) { + return key; + })); + }else{ + return unescape(str.split('\\').join('%')); + } } diff --git a/package.json b/package.json index 5cd046d..ddca520 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "gulp-native2ascii", "description": "native2ascii plugin for gulp", - "version": "0.0.3", + "version": "0.0.4", "homepage": "https://github.com/adamme/gulp-native2ascii", "author": { "name": "Adam Lau", @@ -29,15 +29,14 @@ "gulp", "native2ascii" ], - "scripts": { - "test": "node test/test.js" - }, + "scripts": { + "test": "node test/test.js" + }, "dependencies": { "gulp-util": "^2.2.14", "through2": "^0.4.1" }, "devDependencies": { - "gulp-mocha": "^0.4.1", - "gulp-rename": "^1.1.0" + "del": "^0.1.3" } } diff --git a/test/cases/default.js b/test/cases/default.js new file mode 100644 index 0000000..21d54d1 --- /dev/null +++ b/test/cases/default.js @@ -0,0 +1 @@ +console.log('你好,世界!'); diff --git a/test/cases/errMinify.js b/test/cases/errMinify.js new file mode 100644 index 0000000..8ec0d38 --- /dev/null +++ b/test/cases/errMinify.js @@ -0,0 +1 @@ +console.log('\\u7f16\\u7801\\u8f6c\\u6362'); \ No newline at end of file diff --git a/test/reverse.js b/test/cases/reverse.js similarity index 100% rename from test/reverse.js rename to test/cases/reverse.js diff --git a/test/default.js b/test/default.js deleted file mode 100644 index e48d21e..0000000 --- a/test/default.js +++ /dev/null @@ -1 +0,0 @@ -alert('你好,世界!'); diff --git a/test/test.js b/test/test.js index 1fbe116..229b8a0 100644 --- a/test/test.js +++ b/test/test.js @@ -1,20 +1,37 @@ -var n2a = require('../'); -var rename = require('gulp-rename'); -var gulp = require('gulp'); +var gulp = require('gulp'), + n2a = require('../'), + del = require('del'); +const TEST_CASE = './test/cases/'; +const OUTPUT = './test/test-output/'; -gulp.src('./**/default.js', {buffer: false}) - .pipe(n2a()) - .pipe(rename(function (path) { - path.basename += "-converted"; - })) - .pipe(gulp.dest('./')); +/** 1. clean up output files. **/ +del([OUTPUT], function (err) { + if (err) { + console.error("clean up output files failed."); + } else { + testCase(); + } +}); -gulp.src('./**/reverse.js') - .pipe(n2a({ - reverse: true - })) - .pipe(rename(function (path) { - path.basename += "-converted"; - })) - .pipe(gulp.dest('./')); +function testCase() { + /** 2. convert unicode to ascii. **/ + gulp.src(TEST_CASE + 'default.js', {buffer: false}) + .pipe(n2a()) + .pipe(gulp.dest(OUTPUT)); + + /** 3. convert ascii to unicode. **/ + gulp.src(TEST_CASE + 'reverse.js') + .pipe(n2a({ + reverse: true + })) + .pipe(gulp.dest(OUTPUT)); + + /** 4. fixs error uglify ascii string to unicode **/ + gulp.src(TEST_CASE + 'errMinify.js') + .pipe(n2a({ + reverse: true + })) + .pipe(gulp.dest(OUTPUT)); + +}