From 1c8be332a433f424d63a97c8e3f029466ca4f4a7 Mon Sep 17 00:00:00 2001 From: iska Date: Fri, 1 Jun 2018 00:27:38 +0200 Subject: [PATCH] Add implementation for HTML Token sanitizing policy --- Sources/HTMLTokenPolicy.h | 9 +++++++++ Sources/HTMLTokenPolicy.m | 25 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/Sources/HTMLTokenPolicy.h b/Sources/HTMLTokenPolicy.h index 54ee6f9..519ea1a 100644 --- a/Sources/HTMLTokenPolicy.h +++ b/Sources/HTMLTokenPolicy.h @@ -7,7 +7,16 @@ // #import +#import "HTMLTokens.h" + +NS_ASSUME_NONNULL_BEGIN @interface HTMLTokenPolicy : NSObject ++ (instancetype)policy:(nullable HTMLToken * (^)(HTMLToken *))block; + +- (nullable HTMLToken *)apply:(HTMLToken *)token; + @end + +NS_ASSUME_NONNULL_END diff --git a/Sources/HTMLTokenPolicy.m b/Sources/HTMLTokenPolicy.m index c03bc98..06fb098 100644 --- a/Sources/HTMLTokenPolicy.m +++ b/Sources/HTMLTokenPolicy.m @@ -8,6 +8,31 @@ #import "HTMLTokenPolicy.h" +@interface HTMLTokenPolicy() +{ + HTMLToken * (^ _policyBlock)(HTMLToken *); +} +@end + @implementation HTMLTokenPolicy ++ (instancetype)policy:(HTMLToken * _Nullable (^)(HTMLToken * _Nonnull))block +{ + return [[HTMLTokenPolicy alloc] initWithBlock:block]; +} + +- (instancetype)initWithBlock:(HTMLToken * _Nullable (^)(HTMLToken * _Nonnull))block +{ + self = [super init]; + if (self) { + _policyBlock = block; + } + return self; +} + +- (HTMLToken *)apply:(HTMLToken *)token +{ + return _policyBlock(token); +} + @end