diff --git a/Sources/HTMLRange.h b/Sources/HTMLRange.h index 5b34213..8e0fc95 100644 --- a/Sources/HTMLRange.h +++ b/Sources/HTMLRange.h @@ -82,6 +82,20 @@ typedef NS_ENUM(unsigned short, HTMLRangeComparisonMethod) */ - (instancetype)initWithDowcument:(HTMLDocument *)document; +/** + Initializes a new range instance for the given document and boundaries. + + @param document The HTML doucment for which the range will be constructed. + @param startContainer The node for the start boundary + @param startOffset The offset of the start boundary + @param endContainer The node for the end boundary + @param endOffset The offset of the end boundary + @return A new HTML Range instance. + */ +- (instancetype)initWithDowcument:(HTMLDocument *)document + startContainer:(HTMLNode *)startContainer startOffset:(NSUInteger)startOffset + endContainer:(HTMLNode *)endContainer endOffset:(NSUInteger)endOffset; + /** Sets the start boundary. diff --git a/Sources/HTMLRange.m b/Sources/HTMLRange.m index 5cc63e2..d60a56d 100644 --- a/Sources/HTMLRange.m +++ b/Sources/HTMLRange.m @@ -24,13 +24,20 @@ #pragma mark - Lifecycle - (instancetype)initWithDowcument:(HTMLDocument *)document +{ + return [self initWithDowcument:document startContainer:document startOffset:0 endContainer:document endOffset:0]; +} + +- (instancetype)initWithDowcument:(HTMLDocument *)document + startContainer:(HTMLNode *)startContainer startOffset:(NSUInteger)startOffset + endContainer:(HTMLNode *)endContainer endOffset:(NSUInteger)endOffset { self = [super init]; if (self) { _ownerDocument = document; [_ownerDocument attachRange:self]; - [self setStartNode:document startOffset:0]; - [self setEndNode:document endOffset:0]; + [self setStartNode:startContainer startOffset:startOffset]; + [self setEndNode:endContainer endOffset:endOffset]; } return self; }