-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathENRMSpoilerRenderer.m
More file actions
42 lines (34 loc) · 1.29 KB
/
ENRMSpoilerRenderer.m
File metadata and controls
42 lines (34 loc) · 1.29 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
#import "ENRMSpoilerRenderer.h"
#import "ENRMSpoilerTapUtils.h"
#import "MarkdownASTNode.h"
#import "RenderContext.h"
#import "RendererFactory.h"
@implementation ENRMSpoilerRenderer {
__weak RendererFactory *_rendererFactory;
}
- (instancetype)initWithRendererFactory:(id)rendererFactory config:(__unused id)config
{
if (self = [super init]) {
_rendererFactory = rendererFactory;
}
return self;
}
- (void)renderNode:(MarkdownASTNode *)node into:(NSMutableAttributedString *)output context:(RenderContext *)context
{
NSUInteger start = output.length;
[_rendererFactory renderChildrenOfNode:node into:output context:context];
NSRange range = NSMakeRange(start, output.length - start);
if (range.length == 0)
return;
[output addAttribute:SpoilerAttributeName value:@YES range:range];
[output enumerateAttribute:NSForegroundColorAttributeName
inRange:range
options:0
usingBlock:^(id value, NSRange subRange, BOOL *stop) {
if (value) {
[output addAttribute:SpoilerOriginalColorAttributeName value:value range:subRange];
}
}];
[output addAttribute:NSForegroundColorAttributeName value:[RCTUIColor colorWithWhite:0 alpha:0] range:range];
}
@end