Skip to content

Instantly share code, notes, and snippets.

@goosehub
Last active July 7, 2018 16:19
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save goosehub/0578867f7f5524d0b94ec13bbbf2cde2 to your computer and use it in GitHub Desktop.
Save goosehub/0578867f7f5524d0b94ec13bbbf2cde2 to your computer and use it in GitHub Desktop.
Convert URL into embeds
function convert_youtube(input) {
var pattern = /(?:http?s?:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(\S+)/g;
if (pattern.test(input)) {
var replacement = '<iframe width="420" height="345" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>';
var input = input.replace(pattern, replacement);
// For start time, turn get param & into ?
var input = input.replace('&amp;t=', '?t=');
}
return input;
}
function convert_vimeo(input) {
var pattern = /(?:http?s?:\/\/)?(?:www\.)?(?:vimeo\.com)\/?(\S+)/g;
if (pattern.test(input)) {
var replacement = '<iframe width="420" height="345" src="//player.vimeo.com/video/$1" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
var input = input.replace(pattern, replacement);
}
return input;
}
function convert_twitch(input) {
var pattern = /(?:http?s?:\/\/)?(?:www\.)?(?:twitch\.tv)\/?(\S+)/g;
if (pattern.test(input)) {
var replacement = '<iframe src="https://player.twitch.tv/?channel=$1&!autoplay" frameborder="0" allowfullscreen="true" scrolling="no" height="378" width="620"></iframe>';
var input = input.replace(pattern, replacement);
}
return input;
}
function convert_vocaroo(input) {
var pattern = /(?:http?s?:\/\/)?(?:www\.)?(?:vocaroo\.com\/i)\/?(\S+)/g;
if (pattern.test(input)) {
var replacement = '<object width="148" height="44"><param name="movie" value="http://vocaroo.com/player.swf?playMediaID=$1&autoplay=0"></param><param name="wmode" value="transparent"></param><embed src="http://vocaroo.com/player.swf?playMediaID=$1&autoplay=0" width="148" height="44" wmode="transparent" type="application/x-shockwave-flash"></embed></object>';
var input = input.replace(pattern, replacement);
}
return input;
}
function convert_video_url(input) {
var pattern = /([-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?(?:webm|mp4|ogv))/gi;
if (pattern.test(input)) {
var replacement = '<video controls="" loop="" controls src="$1" style="max-width: 960px; max-height: 676px;"></video>';
var input = input.replace(pattern, replacement);
}
return input;
}
function convert_image_url(input) {
var pattern = /([-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?(?:jpg|jpeg|gif|png))/gi;
if (pattern.test(input)) {
var replacement = '<a href="$1" target="_blank"><img class="sml" src="$1" /></a><br />';
var input = input.replace(pattern, replacement);
}
return input;
}
// Run this convert last
function convert_general_url(input) {
// Ignore " to not conflict with other converts
var pattern = /(?!.*")([-a-zA-Z0-9@:%_\+.~#?&//=;]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=;]*))/gi;
if (pattern.test(input)) {
var replacement = '<a href="$1" target="_blank">$1</a>';
var input = input.replace(pattern, replacement);
}
return input;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment