Skip to content

Instantly share code, notes, and snippets.

@lexuschert
Created December 13, 2019 06:56
Show Gist options
  • Save lexuschert/fa977d5da0c124ca53be80fd736b8459 to your computer and use it in GitHub Desktop.
Save lexuschert/fa977d5da0c124ca53be80fd736b8459 to your computer and use it in GitHub Desktop.
Js. Lang utils
// Helper >
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
// Helper />
function trim(text) {
return (text || '').replace(/^\s+|\s+$/g, '');
}
function stripHTML(text) {
return text ? text.replace(/<(?:.|\s)*?>/g, '') : '';
}
function escapeRE(s) {
return s ? s.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1') : '';
}
function langWordNumeric(num, words, arr) {
if (isArray(words) && num < words.length) {
return words[num];
}
return langNumeric(num, arr);
}
function langNumeric(count, vars, formatNum) {
if (!vars || !window.langConfig) { return count; }
var res;
if (!isArray(vars)) {
res = vars;
} else {
res = vars[1];
if(count != Math.floor(count)) {
res = vars[langConfig.numRules['float']];
} else {
each(langConfig.numRules['int'], function(i,v){
if (v[0] == '*') { res = vars[v[2]]; return false; }
var c = v[0] ? count % v[0] : count;
if(indexOf(v[1], c) != -1) { res = vars[v[2]]; return false; }
});
}
}
if (formatNum) {
var n = count.toString().split('.'), c = [];
for(var i = n[0].length - 3; i > -3; i -= 3) {
c.unshift(n[0].slice(i > 0 ? i : 0, i + 3));
}
n[0] = c.join(langConfig.numDel);
count = n.join(langConfig.numDec);
}
res = (res || '%s').replace('%s', count);
return res;
}
function parseLatin(text){
var outtext = text;
var lat1 = ['yo','zh','kh','ts','ch','sch','shch','sh','eh','yu','ya','YO','ZH','KH','TS','CH','SCH','SHCH','SH','EH','YU','YA',"'"];
var rus1 = ['ё', 'ж', 'х', 'ц', 'ч', 'щ', 'щ', 'ш', 'э', 'ю', 'я', 'Ё', 'Ж', 'Х', 'Ц', 'Ч', 'Щ', 'Щ', 'Ш', 'Э', 'Ю', 'Я', 'ь'];
for (var i = 0, l = lat1.length; i < l; i++) {
outtext = outtext.split(lat1[i]).join(rus1[i]);
}
var lat2 = 'abvgdezijklmnoprstufhcyABVGDEZIJKLMNOPRSTUFHCYёЁ';
var rus2 = 'абвгдезийклмнопрстуфхцыАБВГДЕЗИЙКЛМНОПРСТУФХЦЫеЕ';
for (var i = 0, l = lat2.length; i < l; i++) {
outtext = outtext.split(lat2.charAt(i)).join(rus2.charAt(i));
}
return (outtext == text) ? null : outtext;
}
function parseCyr(text) {
var outtext = text, i,
lat1 = ['yo','zh','kh','ts','ch','sch','shch','sh','eh','yu','ya','YO','ZH','KH','TS','CH','SCH','SHCH','SH','EH','YU','YA',"'"],
rus1 = ['ё', 'ж', 'х', 'ц', 'ч', 'щ', 'щ', 'ш', 'э', 'ю', 'я', 'Ё', 'Ж', 'Х', 'Ц', 'Ч', 'Щ', 'Щ', 'Ш', 'Э', 'Ю', 'Я', 'ь'],
lat2 = 'abvgdezijklmnoprstufhcyABVGDEZIJKLMNOPRSTUFHCYёЁ',
rus2 = 'абвгдезийклмнопрстуфхцыАБВГДЕЗИЙКЛМНОПРСТУФХЦЫеЕ';
for (i = 0; i < rus1.length; i++) {
outtext = outtext.split(rus1[i]).join(lat1[i]);
}
for (i = 0; i < rus2.length; i++) {
outtext = outtext.split(rus2.charAt(i)).join(lat2.charAt(i));
}
return (outtext == text) ? null : outtext;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment