1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/rocketchat_ynh.git synced 2024-09-03 20:16:25 +02:00
rocketchat_ynh/sources/programs/server/packages/raix_handlebar-helpers.js
2016-04-29 16:32:48 +02:00

102 lines
9.7 KiB
JavaScript

(function () {
/* Imports */
var Meteor = Package.meteor.Meteor;
var _ = Package.underscore._;
/* Package-scope variables */
var Helpers;
(function(){
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/raix_handlebar-helpers/common.js //
// //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Helper scope // 1
if (typeof Helpers === 'undefined') { // 2
Helpers = {}; // 3
} // 4
// 5
var languageText = {}; // 6
// 7
// expects an array: languageText['say.hello.to.me']['en'] = 'Say hello to me:)'; // 8
// ex.: // 9
// getText('Say.Hello.To.Me') == 'say hello to me:)'; // lowercase // 10
// getText('SAY.HELLO.TO.ME') == 'SAY HELLO TO ME:)'; // uppercase // 11
// getText('Say.hello.to.me') == 'Say hello to me:)'; // uppercase first letter, rest lowercase // 12
// getText('Say.Hello.To.Me') == 'Say Hello To Me:)'; // camelCase // 13
// getText('SAy.hello.to.me') == 'Say hello To me:)'; // ignore case sensitivity // 14
// 15
var _languageDeps = (Meteor.isClient) ? new Deps.Dependency() : null; // 16
var currentLanguage = 'en'; // 17
// 18
// language = 'en' // 19
Helpers.setLanguage = function (language) { // 20
if (language && language !== currentLanguage) { // 21
currentLanguage = language; // 22
if (Meteor.isClient) _languageDeps.changed(); // 23
} // 24
}; // 25
// 26
Helpers.language = function () { // 27
if (Meteor.isClient) _languageDeps.depend(); // 28
return currentLanguage; // 29
}; // 30
// 31
Helpers.setDictionary = function(dict) { // 32
languageText = dict; // 33
}; // 34
// 35
Helpers.addDictionary = function(dict) { // 36
_.extend(languageText, dict); // 37
}; // 38
// 39
// handleCase will mimic text Case making src same case as text // 40
var handleCase = function (text, src) { // 41
// Return lowercase // 42
if (text == text.toLowerCase()) // 43
return src.toLowerCase(); // 44
// Return uppercase // 45
if (text == text.toUpperCase()) // 46
return src.toUpperCase(); // 47
// Return uppercase first letter, rest lowercase // 48
if (text.substr(1) == text.substr(1).toLowerCase()) // 49
return src.substr(0, 1).toUpperCase() + src.substr(1).toLowerCase(); // 50
// Return src withour changes // 51
if (text.substr(0, 2) == text.substr(0, 2).toUpperCase()) // 52
return src; // 53
// Return CamelCase // 54
return src.replace(/( [a-z])/g, function ($1) { // 55
return $1.toUpperCase(); // 56
}); // 57
}; // 58
// 59
/** // 60
* // 61
* @param {string} text // 62
* @param {string} [lang] // 63
* @return {string} // 64
*/ // 65
Helpers.getText = function (text, lang) { // 66
var txt = text.toLowerCase(); // 67
var langText = languageText && languageText[txt]; // 68
var langKey = (typeof lang === 'string') ? lang : Helpers.language(); // 69
return handleCase(text, (langText) ? ( (langText[langKey]) ? langText[langKey] : langText.en) : '[' + text + ']');
}; // 71
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
/* Exports */
if (typeof Package === 'undefined') Package = {};
Package['raix:handlebar-helpers'] = {
Helpers: Helpers
};
})();
//# sourceMappingURL=raix_handlebar-helpers.js.map