var URLExp = /(https?:\/\/[^\s,]+)/ig, emailExp= /\"([^\"]+)\"\s+\<([^\>]+)\>/ig; var types={ img : { jpg : true, jpeg: true, gif : true, png : true, bmp : true, svg : true, tiff: true, webp: true, wbmp: true }, audio : { mp3 : true, wav : true, aac : true }, video : { ogg : true, webm: true, mp4 : true } } function convertToHTML(url){ if(url.match('@')) return [ '', url, '' ].join(''); var data=url.split('.'); var extention=data.slice(-1); if(types.img[extention]) return formatToImg(url,extention); if(types.video[extention]) return formatToVideo(url,extention); if(types.audio[extention]){ postMessage( { fetchAudio:url } ); return formatToAudio(url); } return formatToIFrame(url); } function formatToImg(url,extention){ return [ '' ].join(''); } function formatToAudio(url,extention){ return [ '
', '', '
' ].join(''); } function formatToVideo(url,extention){ return [ '
', '', '
' ].join(''); } function formatToEmail(url){ return [ '', url, '' ].join(''); } function formatToLink(url){ return [ '', url, '' ].join(''); } function formatToIFrame(url){ return [ '
', url, '', '
' ].join(''); } onmessage=function(data){ var msg = data.data.msg, urls = msg.match(URLExp), emails = msg.match(emailExp); if(!urls){ postMessage(msg); return; } for(i in urls){ msg=msg.replace( urls[i], convertToHTML(urls[i]) ) } for(i in emails){ msg=msg.replace( emails[i], convertToHTML(emails[i]) ) } postMessage(msg); close(); }