Skip to content

Commit

Permalink
Refactored defaultCallback function.
Browse files Browse the repository at this point in the history
  • Loading branch information
coderifous committed Jun 15, 2012
1 parent a7a9838 commit e24f02d
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 58 deletions.
85 changes: 55 additions & 30 deletions build/jquery.localize.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

68 changes: 40 additions & 28 deletions src/jquery.localize.coffee
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ normaliseLang = (lang) ->
$.defaultLanguage = normaliseLang(navigator.language || navigator.userLanguage) $.defaultLanguage = normaliseLang(navigator.language || navigator.userLanguage)


$.localize = (pkg, options = {}) -> $.localize = (pkg, options = {}) ->
wrappedSet = this wrappedSet = this
intermediateLangData = {} intermediateLangData = {}
fileExtension = options.fileExtension || "json" fileExtension = options.fileExtension || "json"


loadLanguage = (pkg, lang, level = 1) -> loadLanguage = (pkg, lang, level = 1) ->
switch level switch level
Expand Down Expand Up @@ -59,36 +59,44 @@ $.localize = (pkg, options = {}) ->
ajaxOptions.error = (xhr) -> successFunc($.parseJSON(xhr.responseText)) ajaxOptions.error = (xhr) -> successFunc($.parseJSON(xhr.responseText))
$.ajax(ajaxOptions) $.ajax(ajaxOptions)


notifyDelegateLanguageLoaded = (data) ->
if options.callback?
options.callback(data, defaultCallback)
else
defaultCallback(data)

defaultCallback = (data) -> defaultCallback = (data) ->
$.localize.data[pkg] = data $.localize.data[pkg] = data
wrappedSet.each -> wrappedSet.each ->
elem = $(this) elem = $(this)
key = elem.data("localize") key = elem.data("localize")
key ||= elem.attr("rel").match(/localize\[(.*?)\]/)[1] key ||= elem.attr("rel").match(/localize\[(.*?)\]/)[1]
value = valueForKey(key, data) value = valueForKey(key, data)
if elem.is('input') localizeElement(elem, key, value)
if elem.is("[placeholder]")
elem.attr("placeholder", value)
else
elem.val(value)
else if elem.is('optgroup')
elem.attr("label", value)
else if elem.is('img')
applyValueToAttribute(key, "alt", data, elem)
applyValueToAttribute(key, "src", data, elem)
else unless $.isPlainObject(value)
elem.html(value)

if $.isPlainObject(value)
applyValueToAttribute(key, "title", data, elem)
value = valueForKey("#{key}.text", data)
elem.text(value) if value?


notifyDelegateLanguageLoaded = (data) -> localizeElement = (elem, key, value) ->
if options.callback? if elem.is('input') then localizeInputElement(elem, key, value)
options.callback(data, defaultCallback) else if elem.is('img') then localizeImageElement(elem, key, value)
else if elem.is('optgroup') then localizeOptgroupElement(elem, key, value)
else unless $.isPlainObject(value) then elem.html(value)
localizeForSpecialKeys(elem, value) if $.isPlainObject(value)

localizeInputElement = (elem, key, value) ->
if elem.is("[placeholder]")
elem.attr("placeholder", value)
else else
defaultCallback(data) elem.val(value)

localizeForSpecialKeys = (elem, value) ->
setAttrFromValueForKey(elem, "title", value)
setTextFromValueForKey(elem, "text", value)

localizeOptgroupElement = (elem, key, value) ->
elem.attr("label", value)

localizeImageElement = (elem, key, value) ->
setAttrFromValueForKey(elem, "alt", value)
setAttrFromValueForKey(elem, "src", value)


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


applyValueToAttribute = (key, attribute, data, elem) -> setAttrFromValueForKey = (elem, key, value) ->
value = valueForKey("#{key}.#{attribute}", data) value = valueForKey(key, value)
elem.attr(attribute, value) if value? elem.attr(key, value) if value?

setTextFromValueForKey = (elem, key, value) ->
value = valueForKey(key, value)
elem.text(value) if value?


regexify = (string_or_regex_or_array) -> regexify = (string_or_regex_or_array) ->
if typeof(string_or_regex_or_array) == "string" if typeof(string_or_regex_or_array) == "string"
Expand Down

0 comments on commit e24f02d

Please sign in to comment.