From 3ce8b1a1c819f8508ea1b04bcf97636bf953336a Mon Sep 17 00:00:00 2001 From: Alex Akers Date: Mon, 15 Jun 2015 12:05:04 -0700 Subject: [PATCH] [React Native] Implement -(recursiveD|d)escription for RCT(Shadow)View --- Libraries/Text/RCTShadowRawText.m | 6 ++++++ Libraries/Text/RCTShadowText.m | 6 ++++++ React/Views/RCTShadowView.m | 28 ++++++++++++++++++++++++++++ React/Views/RCTView.m | 8 ++++++++ 4 files changed, 48 insertions(+) diff --git a/Libraries/Text/RCTShadowRawText.m b/Libraries/Text/RCTShadowRawText.m index 87bfe9fa6..e99e1187b 100644 --- a/Libraries/Text/RCTShadowRawText.m +++ b/Libraries/Text/RCTShadowRawText.m @@ -20,4 +20,10 @@ } } +- (NSString *)description +{ + NSString *superDescription = super.description; + return [[superDescription substringToIndex:superDescription.length - 1] stringByAppendingFormat:@"; text: %@>", self.text]; +} + @end diff --git a/Libraries/Text/RCTShadowText.m b/Libraries/Text/RCTShadowText.m index 2dc275912..65bee774e 100644 --- a/Libraries/Text/RCTShadowText.m +++ b/Libraries/Text/RCTShadowText.m @@ -54,6 +54,12 @@ static css_dim_t RCTMeasure(void *context, float width) return self; } +- (NSString *)description +{ + NSString *superDescription = super.description; + return [[superDescription substringToIndex:superDescription.length - 1] stringByAppendingFormat:@"; text: %@>", [self attributedString].string]; +} + - (NSDictionary *)processUpdatedProperties:(NSMutableSet *)applierBlocks parentProperties:(NSDictionary *)parentProperties { diff --git a/React/Views/RCTShadowView.m b/React/Views/RCTShadowView.m index b9343895f..9d56bb906 100644 --- a/React/Views/RCTShadowView.m +++ b/React/Views/RCTShadowView.m @@ -364,6 +364,34 @@ static void RCTProcessMetaProps(const float metaProps[META_PROP_COUNT], float st return self.reactTag; } +- (NSString *)description +{ + NSString *description = super.description; + description = [[description substringToIndex:description.length - 1] stringByAppendingFormat:@"; viewName: %@; reactTag: %@; frame: %@>", self.viewName, self.reactTag, NSStringFromCGRect(self.frame)]; + return description; +} + +- (void)addRecursiveDescriptionToString:(NSMutableString *)string atLevel:(NSUInteger)level +{ + for (NSUInteger i = 0; i < level; i++) { + [string appendString:@" | "]; + } + + [string appendString:self.description]; + [string appendString:@"\n"]; + + for (RCTShadowView *subview in _reactSubviews) { + [subview addRecursiveDescriptionToString:string atLevel:level + 1]; + } +} + +- (NSString *)recursiveDescription +{ + NSMutableString *description = [NSMutableString string]; + [self addRecursiveDescriptionToString:description atLevel:0]; + return description; +} + // Margin #define RCT_MARGIN_PROPERTY(prop, metaProp) \ diff --git a/React/Views/RCTView.m b/React/Views/RCTView.m index a5cecb7a5..a151efb5c 100644 --- a/React/Views/RCTView.m +++ b/React/Views/RCTView.m @@ -185,6 +185,14 @@ RCT_NOT_IMPLEMENTED(-initWithCoder:unused) } } +- (NSString *)description +{ + NSString *superDescription = super.description; + NSRange semicolonRange = [superDescription rangeOfString:@";"]; + NSString *replacement = [NSString stringWithFormat:@"; reactTag: %@;", self.reactTag]; + return [superDescription stringByReplacingCharactersInRange:semicolonRange withString:replacement]; +} + #pragma mark - Statics for dealing with layoutGuides + (void)autoAdjustInsetsForView:(UIView *)parentView