Skip to content

Commit d55b25f

Browse files
committed
Switches ajax to async.
This required upgrading QUnit to 2.x, adding deferred/promise support, and rewriting every test. [Fixes #81]
1 parent 0e493bd commit d55b25f

13 files changed

+4453
-2011
lines changed

Gruntfile.coffee

-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ module.exports = (grunt) ->
2424
files:
2525
"dist/<%= pkg.name %>.js": "src/*.coffee"
2626
"test/localize_test.js": "test/localize_test.coffee"
27-
"test/qunit_setup.js": "test/qunit_setup.coffee"
2827

2928
uglify:
3029
options:

dist/jquery.localize.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@ http://keith-wood.name/localisation.html
1818
};
1919
$.defaultLanguage = normaliseLang(navigator.languages && navigator.languages.length > 0 ? navigator.languages[0] : navigator.language || navigator.userLanguage);
2020
$.localize = function(pkg, options) {
21-
var defaultCallback, fileExtension, intermediateLangData, jsonCall, lang, loadLanguage, localizeElement, localizeForSpecialKeys, localizeImageElement, localizeInputElement, localizeOptgroupElement, notifyDelegateLanguageLoaded, regexify, setAttrFromValueForKey, setTextFromValueForKey, valueForKey, wrappedSet;
21+
var defaultCallback, deferred, fileExtension, intermediateLangData, jsonCall, lang, loadLanguage, localizeElement, localizeForSpecialKeys, localizeImageElement, localizeInputElement, localizeOptgroupElement, notifyDelegateLanguageLoaded, regexify, setAttrFromValueForKey, setTextFromValueForKey, valueForKey, wrappedSet;
2222
if (options == null) {
2323
options = {};
2424
}
2525
wrappedSet = this;
2626
intermediateLangData = {};
2727
fileExtension = options.fileExtension || "json";
28+
deferred = $.Deferred();
2829
loadLanguage = function(pkg, lang, level) {
2930
var file;
3031
if (level == null) {
@@ -46,6 +47,8 @@ http://keith-wood.name/localisation.html
4647
case 3:
4748
file = "" + pkg + "-" + (lang.split('-').slice(0, 2).join('-')) + "." + fileExtension;
4849
return jsonCall(file, pkg, lang, level);
50+
default:
51+
return deferred.resolve();
4952
}
5053
};
5154
jsonCall = function(file, pkg, lang, level) {
@@ -68,7 +71,7 @@ http://keith-wood.name/localisation.html
6871
ajaxOptions = {
6972
url: file,
7073
dataType: "json",
71-
async: false,
74+
async: true,
7275
timeout: options.timeout != null ? options.timeout : 500,
7376
success: successFunc,
7477
error: errorFunc
@@ -178,9 +181,12 @@ http://keith-wood.name/localisation.html
178181
}
179182
};
180183
lang = normaliseLang(options.language ? options.language : $.defaultLanguage);
181-
if (!(options.skipLanguage && lang.match(regexify(options.skipLanguage)))) {
184+
if (options.skipLanguage && lang.match(regexify(options.skipLanguage))) {
185+
deferred.resolve();
186+
} else {
182187
loadLanguage(pkg, lang, 1);
183188
}
189+
wrappedSet.localizePromise = deferred;
184190
return wrappedSet;
185191
};
186192
$.fn.localize = $.localize;

dist/jquery.localize.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)