actionscript-book-WikiEditor-com-example-programmingas3-wikiEditor-URLParser.ax [swf] flex
package //com.example.programmingas3.wikiEditor {
A utility class that converts URL strings, such as "http://example.com" to HTML anchor links, such as "<a href='http://example.com'>http://example.com>.
public class @ax-actionscript-book-WikiEditor-com-example-programmingas3-wikiEditor-URLParser {
Converts HTTP and FTP URLs to anchor links. This function assembles a RegExp pattern out of multiple parts: protocol, urlPart, and optionalUrlPart.
public static function urlToATag(input:String):String {
Matches either http:// or ftp://. (?: indicates that the interior group is not a capturing group.
var protocol:String = "((?:http|ftp)://)";
For the URL http://foo.example.com/foo, matches foo.example.
var urlPart:String = "([a-z0-9_-]+\.[a-z0-9_-]+)";
For the URL http://example.com/foo, matches example.
var optionalUrlPart:String = "(\.[a-z0-9_-]*)";
Assembles the pattern from its component parts.
var urlPattern:RegExp = new RegExp (protocol + urlPart + optionalUrlPart, "ig");
Replaces matching URL strings with a replacement string. The call to the replace() method uses references to captured groups (such as $1) to assemble the replacement string.
var result:String = input.replace(urlPattern, "<a href='12$3'><u>12$3</u></a>");
Next, find e-mail patterns and replace them with <a> hyperlinks.
result = emailToATag(result); return result; }
Replaces an e-mail pattern with a corresponding HTML anchor hyperlink. Like the urlToATag() method, this method assembles a regular expression out of constituent parts.
public static function emailToATag(input:String):String {
Isolates the mailto: part of the string.
var protocol:String = "(mailto:)";
Matches the name and @ symbol, such as bob.fooman@.
var name:String = "([a-z0-9_-]+(?:\.[a-z0-9_-])*@)";
For the e-mail pattern bob.fooman@mail.example.com, matches mail.example. (including the trailing dot).
var domain:String = "((?:[a-z0-9_-].)*)";
Matches the superdomain, such as com, uk, or org., which is 2 - 4 letters.
var superDomain:String = "([a-z]{2,4})";
Assembles the matching regular expression out of constituent parts.
var emailPattern:RegExp = new RegExp (protocol + name + domain + superDomain, "ig");
Replaces matching e-mail strings with a replacement string. The call to the replace() method uses references to captured groups (such as $1) to assemble the replacement string.
var result:String = input.replace(emailPattern, "<a href='1234'><u>1234</u></a>"); return result; } } }
(C) Æliens 27/08/2009
You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.