Last active
August 29, 2015 14:25
-
-
Save fogrew/8fbdd17f3f00bea08353 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define(function (require) { | |
var patternYouTube = /\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9_\-]+)/i; | |
var patternVimeo = /(http|https):\/\/(www\.)?vimeo.com\/(\d+)($|\/)/; | |
var patternSoundCloud = /https:\/\/(www\.)?soundcloud.com.*/; | |
var patternLink = /([-a-zA-Z0-9:%_\+.~#?&\/\/=]{2,256}\.[a-z]{2,4}\b(\/?[-a-zA-Z0-9:%_\+.~#?&\/\/=]*)?)/gi; | |
var pattern = { | |
url : /\s([a-z0-9а-я.-_]+)\.([a-z0-9а-я._-]{2,10})/gi, // первый символ пробел!! | |
email : /([a-z0-9а-я._-]+)@([a-z0-9а-я._-]+)\.([a-z0-9а-я._-]{2,10})/gi, | |
}; | |
return { | |
truncate:function(text, size, end) { | |
size = parseInt(size) || 150; | |
end = end || '...'; | |
var str = ''; | |
if (!text) return ''; | |
return (text.length > size ? (text.substr(0, size) + end) : text); | |
}, | |
embeddedVideo: function(link) { | |
//получаем ссылку | |
link = link.match(patternLink); | |
if (!link) return false; | |
if (link.length) link = link[0]; | |
// проверяем ссылку на правильность | |
var linkYoutube = link.match(patternYouTube); | |
var linkVimeo = link.match(patternVimeo); | |
var linkSoundCloud = link.match(patternSoundCloud); | |
if (linkYoutube&&linkYoutube[1].length==11) { | |
return { | |
'video' : 'http://www.youtube.com/embed/'+ linkYoutube[1] + '?wmode=transparent', | |
'image' : 'http://img.youtube.com/vi/' + linkYoutube[1] + '/0.jpg' | |
}; | |
} else if (linkVimeo) { | |
return ('<iframe src="http://player.vimeo.com/video/'+ linkVimeo[2] +'?title=0&byline=0&portrait=0&color=8f53b9" width="100%" height="260" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'); | |
} else if (linkSoundCloud) { | |
return ('<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url='+linkSoundCloud[0] +'&color=ff6600&auto_play=false&show_artwork=false"></iframe>'); | |
} else{ | |
return false; | |
} | |
}, | |
appendPhoneLink: function(text) { | |
if(!text) return; | |
var arr = text.split(','), | |
arrnum = [], | |
newText = ''; | |
//получаем разделенные запятой строки и парсим телефоны оттуда | |
_.each(arr,function(s, i){ | |
arrnum[i] = s.replace(/\D/gi, '');} | |
); | |
//теперь для каждого номера проверяем вхождение каждого числа номера и записываем в новую строку теги | |
_.each(arrnum, function(str, i){ | |
var arrF = arr[i]; | |
var offset = 0; | |
var first = 0; | |
var last = 0; | |
var phone = str.split(''); | |
_.each(phone,function(sym, j){ | |
var on = arrF.indexOf(sym, offset); | |
if(on !== -1) { | |
offset = on; | |
if(j === 0) first = (on === 0 ? 0 : (on-1)); | |
if(j === (phone.length-1)) last = (on + 2); | |
} | |
}); | |
var number = arrF.substr(first, last); | |
var numberArray = arrF.split(number, 2); | |
if(number) { | |
newText += numberArray[0] + '<a href="tel:' + str + '">' + number + '</a>' + numberArray[1] + ((arrnum.length-1 === i) ? '' : ', '); | |
} | |
}); | |
return (newText ? newText : text); | |
}, | |
parseLink: function(link) { | |
//получаем ссылку | |
link = link.match(patternLink); | |
if (!link) return false; | |
if (link.length) link = link[0]; | |
// проверяем ссылку на правильность | |
var linkYoutube = link.match(patternYouTube); | |
var linkVimeo = link.match(patternVimeo); | |
var linkSoundCloud = link.match(patternSoundCloud); | |
if (linkYoutube&&linkYoutube[1].length==11) { | |
return 'https://www.youtube.com/watch?v=' + linkYoutube[1]; | |
} else if (linkVimeo) { | |
return linkVimeo[0]; | |
} else if (linkSoundCloud) { | |
return linkSoundCloud[0]; | |
} else{ | |
return ''; | |
} | |
}, | |
stripTags: function(text) { | |
return text.replace(/<\/?[^>]+>/g, ''); | |
}, | |
_appendLink: function(text) { | |
//первое для email | |
text = text.replace(pattern.email,function(word){ | |
return '<a href="mailto:' + word + '">' + word + '</a>'; | |
}); | |
text = ' ' + text; | |
text = text.replace(pattern.url, function(word) { | |
word = word.replace(/\s/g,''); | |
var link = word; | |
if (link && !link.match(/^[a-zA-Z]+:\/\//)){ | |
link = 'http://' + link; | |
} | |
if (Plugins.deviceInfo.platform.toLowerCase()==='android') { | |
return ' <a href="' + link + '" onclick="event.preventDefault();navigator.app.loadUrl(this.href, {openExternal : true});">' + word + '</a>'; | |
} | |
return ' <a href="' + link + '" onclick="event.preventDefault();window.open(this.href,\'_system\',\'location=yes\');">' + word + '</a>'; | |
}); | |
return text; | |
}, | |
appendLink: function(text) { | |
if (!text) return ''; | |
return this._appendLink(text); | |
} | |
}; | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment