]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
LinkPreview: flesh out stub JS code a bit. URL splitting doesn't quite match core...
authorBrion Vibber <brion@pobox.com>
Tue, 16 Nov 2010 21:16:25 +0000 (13:16 -0800)
committerBrion Vibber <brion@pobox.com>
Tue, 16 Nov 2010 21:16:25 +0000 (13:16 -0800)
plugins/LinkPreview/linkpreview.js

index 37710e7d5ffda51dd9cc5c3c3c87532bee73971c..f6a4dc34f0d985904e31f817fd0c28be465b9280 100644 (file)
@@ -3,8 +3,53 @@
  */
 
 $(function() {
+    /**
+     * Find URL links from the source text that may be interesting.
+     *
+     * @param {String} text
+     * @return {Array} list of URLs
+     */
+    function findLinks(text)
+    {
+        // @fixme match this to core code
+        var re = /(?:^| )(https?:\/\/.+?\/.+?)(?= |$)/g;
+        var links = [];
+        var matches;
+        while ((matches = re.exec(text)) !== null) {
+            links.push(matches[1]);
+        }
+        return links;
+    }
+
+    /**
+     * Start looking up info for a link preview...
+     * May start async data loads.
+     *
+     * @param {String} id
+     * @param {String} url
+     */
+    function prepLinkPreview(id, url)
+    {
+        console.log(id, url);
+    }
+
+    /**
+     * Update the live preview section with links found in the given text.
+     * May start async data loads.
+     *
+     * @param {String} text: free-form input text
+     */
+    function previewLinks(text)
+    {
+        var links = findLinks(text);
+        for (var i = 0; i < links.length; i++) {
+            var id = 'link-preview-' + i;
+            prepLinkPreview(id, links[i]);
+        }
+    }
+
     $('#notice_data-text').change(function() {
        var text = $(this).val();
-       alert(text);
+       previewLinks(text);
     });
 });