forked from mysterioustrousers/MTStringAttributes
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMTStringParser.m
More file actions
103 lines (79 loc) · 2.5 KB
/
MTStringParser.m
File metadata and controls
103 lines (79 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
//
// MTString.m
// MTStringAttributes
//
// Created by Adam Kirk on 2/12/13.
// Copyright (c) 2013 Mysterious Trousers. All rights reserved.
//
#import "MTStringParser.h"
#import <SLSMarkupParser.h>
@interface MTStringParser ()
@property (strong, nonatomic) NSMutableDictionary *styles;
@end
@implementation MTStringParser
- (id)init
{
self = [super init];
if (self) {
_styles = [NSMutableDictionary dictionary];
}
return self;
}
+ (MTStringParser *)sharedParser
{
static MTStringParser *__parser = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
__parser = [[MTStringParser alloc] init];
});
return __parser;
}
#pragma mark - Set Styles
- (void)setDefaultAttributes:(MTStringAttributes *)attributes
{
_styles[@"$default"] = [attributes dictionary];
}
- (void)setAttributes:(MTStringAttributes *)attributes forTag:(NSString *)tag
{
_styles[tag] = [attributes dictionary];
}
#pragma mark - Convenience
- (void)addStyleWithTagName:(NSString *)tagName font:(id)font
{
MTStringAttributes *attributes = [[MTStringAttributes alloc] init];
attributes.font = font;
[self setAttributes:attributes forTag:tagName];
}
- (void)addStyleWithTagName:(NSString *)tagName
font:(id)font
color:(id)color
{
MTStringAttributes *attributes = [[MTStringAttributes alloc] init];
attributes.font = font;
attributes.textColor = color;
[self setAttributes:attributes forTag:tagName];
}
- (void)addStyleWithTagName:(NSString *)tagName
font:(id)font
color:(id)color
backgroundColor:(id)backgroundColor
strikethrough:(BOOL)strikethrough
underline:(BOOL)underline
{
MTStringAttributes *attributes = [[MTStringAttributes alloc] init];
attributes.font = font;
attributes.textColor = color;
attributes.backgroundColor = backgroundColor;
attributes.strikethrough = strikethrough;
attributes.underline = underline;
[self setAttributes:attributes forTag:tagName];
}
#pragma mark - Parse Markup To Attributed String
- (NSAttributedString *)attributedStringFromMarkup:(NSString *)markup
{
NSError *error = nil;
NSAttributedString *string = [SLSMarkupParser attributedStringWithMarkup:markup style:_styles error:&error];
if (error) NSLog(@"%@", [error localizedDescription]);
return string;
}
@end