From c7c22e3db1c826bcfb2bc66651ec480aae0d4ae0 Mon Sep 17 00:00:00 2001 From: yo mama Date: Sat, 4 Apr 2015 01:00:59 -0700 Subject: first --- server/chat/workers/messageParser.js | 145 +++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 server/chat/workers/messageParser.js (limited to 'server/chat/workers') diff --git a/server/chat/workers/messageParser.js b/server/chat/workers/messageParser.js new file mode 100644 index 0000000..3831f0e --- /dev/null +++ b/server/chat/workers/messageParser.js @@ -0,0 +1,145 @@ +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(); +} \ No newline at end of file -- cgit v1.2.3-70-g09d2