diff --git a/HTMLKit/HTMLListOfActiveFormattingElements.h b/HTMLKit/HTMLListOfActiveFormattingElements.h
index 7b4446d..9b7d7b4 100644
--- a/HTMLKit/HTMLListOfActiveFormattingElements.h
+++ b/HTMLKit/HTMLListOfActiveFormattingElements.h
@@ -27,6 +27,8 @@
- (void)addMarker;
- (void)clearUptoLastMarker;
+- (HTMLElement *)formattingElementWithTagName:(NSString *)tagName;
+
- (NSUInteger)count;
- (BOOL)isEmpty;
diff --git a/HTMLKit/HTMLListOfActiveFormattingElements.m b/HTMLKit/HTMLListOfActiveFormattingElements.m
index 6994d05..74e5791 100644
--- a/HTMLKit/HTMLListOfActiveFormattingElements.m
+++ b/HTMLKit/HTMLListOfActiveFormattingElements.m
@@ -88,6 +88,17 @@
[_list removeLastObject];
}
+- (HTMLElement *)formattingElementWithTagName:(NSString *)tagName
+{
+ for (HTMLElement *element in _list.reverseObjectEnumerator) {
+ if ([element isEqual:[HTMLMarker marker]]) return nil;
+ if ([element.tagName isEqualToString:tagName]) {
+ return element;
+ }
+ }
+ return nil;
+}
+
#pragma mark - Count
- (NSUInteger)count
diff --git a/HTMLKit/HTMLParser.m b/HTMLKit/HTMLParser.m
index e187069..5888865 100644
--- a/HTMLKit/HTMLParser.m
+++ b/HTMLKit/HTMLParser.m
@@ -410,16 +410,7 @@
for (int outerLoopCounter = 0; outerLoopCounter < 8; outerLoopCounter++) {
- HTMLElement *formattingElement = ^ HTMLElement * {
- for (HTMLElement *element in _listOfActiveFormattingElements.reverseObjectEnumerator) {
- if ([element isEqualTo:[HTMLMarker marker]]) return nil;
- if ([element.tagName isEqualTo:tagName]) {
- return element;
- }
- }
- return nil;
- }();
-
+ HTMLElement *formattingElement = [_listOfActiveFormattingElements formattingElementWithTagName:tagName];
if (formattingElement == nil) {
return YES;
}
@@ -440,16 +431,7 @@
}
NSUInteger formattingElementIndex = [_stackOfOpenElements indexOfElement:formattingElement];
-
- HTMLElement *furthestBlock = ^ HTMLElement * {
- for (NSUInteger i = formattingElementIndex; i < _stackOfOpenElements.count; i++) {
- HTMLElement *element = _stackOfOpenElements[i];
- if (IsSpecialElement(element)) {
- return element;
- }
- }
- return nil;
- }();
+ HTMLElement *furthestBlock = [_stackOfOpenElements furthestBlockAfterIndex:formattingElementIndex];
if (furthestBlock == nil) {
[_stackOfOpenElements popElementsUntilElementPopped:formattingElement];
diff --git a/HTMLKit/HTMLStackOfOpenElements.h b/HTMLKit/HTMLStackOfOpenElements.h
index 725276c..5417a15 100644
--- a/HTMLKit/HTMLStackOfOpenElements.h
+++ b/HTMLKit/HTMLStackOfOpenElements.h
@@ -40,6 +40,7 @@
- (HTMLElement *)hasElementInButtonScopeWithTagName:(NSString *)tagName;
- (HTMLElement *)hasElementInTableScopeWithTagName:(NSString *)tagName;
- (HTMLElement *)hasElementInSelectScopeWithTagName:(NSString *)tagName;
+- (HTMLElement *)furthestBlockAfterIndex:(NSUInteger)index;
- (NSUInteger)count;
- (BOOL)isEmpy;
diff --git a/HTMLKit/HTMLStackOfOpenElements.m b/HTMLKit/HTMLStackOfOpenElements.m
index 6d2ae52..a12e341 100644
--- a/HTMLKit/HTMLStackOfOpenElements.m
+++ b/HTMLKit/HTMLStackOfOpenElements.m
@@ -8,6 +8,7 @@
#import "HTMLStackOfOpenElements.h"
#import "NSString+HTMLKit.h"
+#import "HTMLElementTypes.h"
@interface HTMLStackOfOpenElements ()
{
@@ -227,6 +228,17 @@
return nil;
}
+- (HTMLElement *)furthestBlockAfterIndex:(NSUInteger)index
+{
+ for (NSUInteger i = index; i < _stack.count; i++) {
+ HTMLElement *element = _stack[i];
+ if (IsSpecialElement(element)) {
+ return element;
+ }
+ }
+ return nil;
+}
+
#pragma mark - Count
- (NSUInteger)count