diff --git a/js/plugins.js b/js/plugins.js index 31f7b79..fd9bf51 100644 --- a/js/plugins.js +++ b/js/plugins.js @@ -391,8 +391,28 @@ plugins.factory('userPlugins', function() { ); tweetPlugin.name = 'Tweet'; + /* + * Vine plugin + */ + var vinePlugin = new Plugin(function(message) { + + var regexp = /https?:\/\/(www\.)?vine.co\/v\/([a-zA-Z0-9]+)(\/.*)?/g; + var content = []; + var match; + + // Iterate over all matches + while ((match = regexp.exec(message)) !== null) { + var id = match[2]; + var embedurl = "https://vine.co/v/" + id + "/embed/simple?audio=1"; + content.push(''); + } + + return content; + }); + vinePlugin.name = "Vine"; + return { - plugins: [youtubePlugin, dailymotionPlugin, allocinePlugin, imagePlugin, spotifyPlugin, cloudmusicPlugin, googlemapPlugin, asciinemaPlugin, yrPlugin, gistPlugin, tweetPlugin] + plugins: [youtubePlugin, dailymotionPlugin, allocinePlugin, imagePlugin, spotifyPlugin, cloudmusicPlugin, googlemapPlugin, asciinemaPlugin, yrPlugin, gistPlugin, tweetPlugin, vinePlugin] }; diff --git a/test/unit/plugins.js b/test/unit/plugins.js index a8b79f7..af3229c 100644 --- a/test/unit/plugins.js +++ b/test/unit/plugins.js @@ -138,5 +138,14 @@ describe('filter', function() { plugins); })); + it('should recognize vines', inject(function(plugins) { + expectTheseMessagesToContain([ + 'https://vine.co/v/hWh262H9HM5', + 'https://vine.co/v/hWh262H9HM5/embed', + ], + 'Vine', + plugins); + })); + }); });