diff --git a/Source/MMSpanParser.m b/Source/MMSpanParser.m index c15b5c7..989a3ca 100644 --- a/Source/MMSpanParser.m +++ b/Source/MMSpanParser.m @@ -987,6 +987,7 @@ - (MMElement *)_parseInlineLinkWithScanner:(MMScanner *)scanner if (scanner.nextCharacter != '(') return nil; [scanner advance]; + [scanner skipWhitespace]; NSUInteger urlLocation = scanner.location; NSUInteger urlEnd = urlLocation; @@ -1017,6 +1018,13 @@ - (MMElement *)_parseInlineLinkWithScanner:(MMScanner *)scanner { if (level != 1) return nil; + + [scanner skipWhitespace]; + if (scanner.nextCharacter == ')') + { + [scanner advance]; + level -= 1; + } break; } urlEnd = scanner.location; @@ -1029,9 +1037,6 @@ - (MMElement *)_parseInlineLinkWithScanner:(MMScanner *)scanner // If the level is still 1, then we hit a space. if (level == 1) { - // skip the whitespace - [scanner skipCharactersFromSet:NSCharacterSet.whitespaceCharacterSet]; - // make sure there's a " if (scanner.nextCharacter != '"') return nil; @@ -1096,6 +1101,8 @@ - (MMElement *)_parseReferenceLinkWithScanner:(MMScanner *)scanner // Look for the second [] NSArray *idRanges = [self _parseLinkTextBodyWithScanner:scanner]; + if (!idRanges) + return nil; if (!idRanges.count) { idRanges = element.innerRanges; diff --git a/Tests/MMLinkTests.m b/Tests/MMLinkTests.m index 9087e74..ef06610 100644 --- a/Tests/MMLinkTests.m +++ b/Tests/MMLinkTests.m @@ -182,6 +182,16 @@ - (void)testInlineLinkWithImage ); } +- (void)testInlineLinkWithPadding +{ + MMAssertMarkdownEqualsHTML(@"[test]( http://www.test.com )", @"

test

"); +} + +- (void)testInlineLinkInsideBrackets +{ + MMAssertMarkdownEqualsHTML(@"[[test](http://www.test.com)]", @"

[test]

"); +} + #pragma mark - Reference Link Tests