Skip to content

Commit e24f02d

Browse files
committed
Refactored defaultCallback function.
1 parent a7a9838 commit e24f02d

File tree

2 files changed

+95
-58
lines changed

2 files changed

+95
-58
lines changed

build/jquery.localize.js

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

src/jquery.localize.coffee

+40-28
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ normaliseLang = (lang) ->
1818
$.defaultLanguage = normaliseLang(navigator.language || navigator.userLanguage)
1919

2020
$.localize = (pkg, options = {}) ->
21-
wrappedSet = this
21+
wrappedSet = this
2222
intermediateLangData = {}
23-
fileExtension = options.fileExtension || "json"
23+
fileExtension = options.fileExtension || "json"
2424

2525
loadLanguage = (pkg, lang, level = 1) ->
2626
switch level
@@ -59,36 +59,44 @@ $.localize = (pkg, options = {}) ->
5959
ajaxOptions.error = (xhr) -> successFunc($.parseJSON(xhr.responseText))
6060
$.ajax(ajaxOptions)
6161

62+
notifyDelegateLanguageLoaded = (data) ->
63+
if options.callback?
64+
options.callback(data, defaultCallback)
65+
else
66+
defaultCallback(data)
67+
6268
defaultCallback = (data) ->
6369
$.localize.data[pkg] = data
6470
wrappedSet.each ->
65-
elem = $(this)
66-
key = elem.data("localize")
71+
elem = $(this)
72+
key = elem.data("localize")
6773
key ||= elem.attr("rel").match(/localize\[(.*?)\]/)[1]
6874
value = valueForKey(key, data)
69-
if elem.is('input')
70-
if elem.is("[placeholder]")
71-
elem.attr("placeholder", value)
72-
else
73-
elem.val(value)
74-
else if elem.is('optgroup')
75-
elem.attr("label", value)
76-
else if elem.is('img')
77-
applyValueToAttribute(key, "alt", data, elem)
78-
applyValueToAttribute(key, "src", data, elem)
79-
else unless $.isPlainObject(value)
80-
elem.html(value)
81-
82-
if $.isPlainObject(value)
83-
applyValueToAttribute(key, "title", data, elem)
84-
value = valueForKey("#{key}.text", data)
85-
elem.text(value) if value?
75+
localizeElement(elem, key, value)
8676

87-
notifyDelegateLanguageLoaded = (data) ->
88-
if options.callback?
89-
options.callback(data, defaultCallback)
77+
localizeElement = (elem, key, value) ->
78+
if elem.is('input') then localizeInputElement(elem, key, value)
79+
else if elem.is('img') then localizeImageElement(elem, key, value)
80+
else if elem.is('optgroup') then localizeOptgroupElement(elem, key, value)
81+
else unless $.isPlainObject(value) then elem.html(value)
82+
localizeForSpecialKeys(elem, value) if $.isPlainObject(value)
83+
84+
localizeInputElement = (elem, key, value) ->
85+
if elem.is("[placeholder]")
86+
elem.attr("placeholder", value)
9087
else
91-
defaultCallback(data)
88+
elem.val(value)
89+
90+
localizeForSpecialKeys = (elem, value) ->
91+
setAttrFromValueForKey(elem, "title", value)
92+
setTextFromValueForKey(elem, "text", value)
93+
94+
localizeOptgroupElement = (elem, key, value) ->
95+
elem.attr("label", value)
96+
97+
localizeImageElement = (elem, key, value) ->
98+
setAttrFromValueForKey(elem, "alt", value)
99+
setAttrFromValueForKey(elem, "src", value)
92100

93101
valueForKey = (key, data) ->
94102
keys = key.split(/\./)
@@ -97,9 +105,13 @@ $.localize = (pkg, options = {}) ->
97105
value = if value? then value[key] else null
98106
value
99107

100-
applyValueToAttribute = (key, attribute, data, elem) ->
101-
value = valueForKey("#{key}.#{attribute}", data)
102-
elem.attr(attribute, value) if value?
108+
setAttrFromValueForKey = (elem, key, value) ->
109+
value = valueForKey(key, value)
110+
elem.attr(key, value) if value?
111+
112+
setTextFromValueForKey = (elem, key, value) ->
113+
value = valueForKey(key, value)
114+
elem.text(value) if value?
103115

104116
regexify = (string_or_regex_or_array) ->
105117
if typeof(string_or_regex_or_array) == "string"

0 commit comments

Comments
 (0)