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);
+ }));
+
});
});