12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //
- // M80AttributedLabelURL.m
- // M80AttributedLabel
- //
- // Created by amao on 13-8-31.
- // Copyright (c) 2013年 www.xiangwangfeng.com. All rights reserved.
- //
- #import "M80AttributedLabelURL.h"
- static NSString *M80URLExpression = @"((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((:[0-9]+)?)((?:\\/[\\+~%\\/\\.\\w\\-]*)?\\??(?:[\\-\\+=&;%@\\.\\w]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)";
- static M80CustomDetectLinkBlock customDetectBlock = nil;
- static NSString *M80URLExpressionKey = @"M80URLExpressionKey";
- @implementation M80AttributedLabelURL
- + (M80AttributedLabelURL *)urlWithLinkData:(id)linkData
- range:(NSRange)range
- color:(UIColor *)color
- {
- M80AttributedLabelURL *url = [[M80AttributedLabelURL alloc]init];
- url.linkData = linkData;
- url.range = range;
- url.color = color;
- return url;
-
- }
- + (NSArray *)detectLinks:(NSString *)plainText
- {
- if (customDetectBlock)
- {
- return customDetectBlock(plainText);
- }
- else
- {
- NSMutableArray *links = nil;
- if ([plainText length])
- {
- links = [NSMutableArray array];
- NSRegularExpression *urlRegex = [M80AttributedLabelURL urlExpression];
- [urlRegex enumerateMatchesInString:plainText
- options:0
- range:NSMakeRange(0, [plainText length])
- usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
- NSRange range = result.range;
- NSString *text = [plainText substringWithRange:range];
- NSArray* tempArray = [[LCSaveData getTAppUrl] componentsSeparatedByString:@","];
- for (NSString* str in tempArray) {
- if([text rangeOfString:str].location !=NSNotFound) {
- M80AttributedLabelURL *link = [M80AttributedLabelURL urlWithLinkData:text range:range color:nil];
- [links addObject:link];
- }
- }
-
- }];
- }
- return links;
- }
- }
- + (NSRegularExpression *)urlExpression
- {
- NSMutableDictionary *dict = [[NSThread currentThread] threadDictionary];
- NSRegularExpression *exp = dict[M80URLExpressionKey];
- if (exp == nil)
- {
- exp = [NSRegularExpression regularExpressionWithPattern:M80URLExpression
- options:NSRegularExpressionCaseInsensitive
- error:nil];
- dict[M80URLExpressionKey] = exp;
- }
- return exp;
- }
- + (void)setCustomDetectMethod:(M80CustomDetectLinkBlock)block
- {
- customDetectBlock = [block copy];
- }
- @end
|