From 6a52deec7df0e9e9b8de0cee869bc2047c7c42a8 Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Sun, 3 Oct 2010 23:48:56 +0400 Subject: [PATCH] Add function for finding urls in string https://bugzilla.gnome.org/show_bug.cgi?id=610219 --- js/Makefile.am | 1 + js/misc/utils.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 js/misc/utils.js diff --git a/js/Makefile.am b/js/Makefile.am index b7632b472..47fac8237 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -8,6 +8,7 @@ nobase_dist_js_DATA = \ misc/gnomeSession.js \ misc/params.js \ misc/telepathy.js \ + misc/utils.js \ perf/core.js \ prefs/clockPreferences.js \ ui/altTab.js \ diff --git a/js/misc/utils.js b/js/misc/utils.js new file mode 100644 index 000000000..0b7d6c02b --- /dev/null +++ b/js/misc/utils.js @@ -0,0 +1,19 @@ +/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ + +/* http://daringfireball.net/2010/07/improved_regex_for_matching_urls */ +const _urlRegexp = /\b(([a-z][\w-]+:(\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)([^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/gi; + +// findUrls: +// @str: string to find URLs in +// +// Searches @str for URLs and returns an array of objects with %url +// properties showing the matched URL string, and %pos properties indicating +// the position within @str where the URL was found. +// +// Return value: the list of match objects, as described above +function findUrls(str) { + let res = [], match; + while ((match = _urlRegexp.exec(str))) + res.push({ url: match[0], pos: match.index }); + return res; +}