From e851882f964c9eaa1cdd73f028fd09dd9acba734 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Tue, 16 Nov 2010 13:16:25 -0800 Subject: [PATCH] LinkPreview: flesh out stub JS code a bit. URL splitting doesn't quite match core, note. --- plugins/LinkPreview/linkpreview.js | 47 +++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/plugins/LinkPreview/linkpreview.js b/plugins/LinkPreview/linkpreview.js index 37710e7d5f..f6a4dc34f0 100644 --- a/plugins/LinkPreview/linkpreview.js +++ b/plugins/LinkPreview/linkpreview.js @@ -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); }); });