// // HTMLNodeVisitor.m // HTMLKit // // Created by Iska on 30.07.19. // Copyright © 2019 BrainCookie. All rights reserved. // #import "HTMLNodeVisitor.h" #pragma mark - Block Visitor @interface HTMLNodeVisitorBlock () { void (^ _enter)(HTMLNode *); void (^ _leave)(HTMLNode *); } @end @implementation HTMLNodeVisitorBlock + (instancetype)visitorWithEnterBlock:(void (^)(HTMLNode * _Nonnull))enterBlock leaveBlock:(void (^)(HTMLNode * _Nonnull))leaveBlock { return [[HTMLNodeVisitorBlock alloc] initWithEnterBlock:enterBlock leaveBlock:leaveBlock]; } - (instancetype)initWithEnterBlock:(void (^)(HTMLNode * _Nonnull))enterBlock leaveBlock:(void (^)(HTMLNode * _Nonnull))leaveBlock { self = [super init]; if (self) { _enter = [enterBlock copy]; _leave = [leaveBlock copy]; } return self; } - (void)enter:(HTMLNode *)node { if (_enter) { _enter(node); } } - (void)leave:(HTMLNode *)node { if (_leave) { _leave(node); } } @end