Skip to content

Commit

Permalink
added border-radius validation
Browse files Browse the repository at this point in the history
  • Loading branch information
lksnmnn committed Aug 15, 2015
1 parent c7771ac commit 0e8c163
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 5 deletions.
Expand Up @@ -7,6 +7,11 @@
//

#import "HTMLPurifier_AttrDef_CSS_BorderRadius.h"
#import "HTMLPurifier_AttrDef_Enum.h"
#import "HTMLPurifier_AttrDef_CSS_Composite.h"
#import "HTMLPurifier_AttrDef_CSS_Length.h"
#import "HTMLPurifier_AttrDef_CSS_Percentage.h"
#import "HTMLPurifier_AttrDef_CSS_Multiple.h"
#import "BasicPHP.h"


Expand All @@ -20,6 +25,33 @@ @implementation HTMLPurifier_AttrDef_CSS_BorderRadius
*/
- (NSString*)validateWithString:(NSString*)string config:(HTMLPurifier_Config*)config context:(HTMLPurifier_Context*)context
{
string = [self parseCDATAWithString:string];

if ([string isEqual:@"initial"]) {
return @"initial";
}

NSArray* bits = explode(@"/",string);

if (bits.count == 0) {
return nil;
}

HTMLPurifier_AttrDef_CSS_Composite* validate = [[HTMLPurifier_AttrDef_CSS_Composite alloc] initWithDefs:@[[[HTMLPurifier_AttrDef_CSS_Multiple alloc] initWithSingle:[HTMLPurifier_AttrDef_CSS_Length new] max:4],[[HTMLPurifier_AttrDef_CSS_Multiple alloc] initWithSingle:[HTMLPurifier_AttrDef_CSS_Percentage new] max:4]]];

if (bits.count == 1) {
return [validate validateWithString:bits[0] config:config context:context];
}

if (bits.count == 2) {
NSString* part1 = [validate validateWithString:bits[0] config:config context:context];
NSString* part2 = [validate validateWithString:bits[1] config:config context:context];

if (part1 != nil && part2 != nil) {
return [NSString stringWithFormat:@"%@ / %@",part1,part2];
}
}

return nil;
}

Expand Down
16 changes: 11 additions & 5 deletions HTMLPurifierTests/CSSTest.m
Expand Up @@ -425,33 +425,39 @@ - (void)testImportant

// Added some test for allowing more css in order to display newsletters nicely

-(void)testMaxWidth
- (void)testMaxWidth
{

NSString* css = @"max-width: 40px;width:100%;";
[self assertDef:css expected:@"max-width:40px;width:100%;"];

}

-(void)testBorderRadius
- (void)testBorderRadius
{
NSString* css = @"border-radius: 20px;";
[self assertDef:css expected:@"border-radius:20px;"];
}

-(void)testBorderRadiusBogus
- (void)testBorderRadiusDetailed
{
NSString* css = @"border-radius: 20px 5px 2px 7px / 3em 0.5px;";
[self assertDef:css expected:@"border-radius:20px 5px 2px 7px / 3em .5px;"];
}

- (void)testBorderRadiusBogus
{
NSString* css = @"border-radius: <script>;";
[self assertDef:css expected:nil];
}

-(void)testClip
- (void)testClip
{
NSString* css = @"clip: rect(20px,auto, 5px, 3em);";
[self assertDef:css expected:@"clip:rect(20px,auto,5px,3em);"];
}

-(void)testClipBogus
- (void)testClipBogus
{
NSString* css = @"clip: rect(20px, , 5px, 3em);";
[self assertDef:css expected:nil];
Expand Down

0 comments on commit 0e8c163

Please sign in to comment.