FLEXArgumentInputStringView.m 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //
  2. // FLEXArgumentInputStringView.m
  3. // Flipboard
  4. //
  5. // Created by Ryan Olson on 6/28/14.
  6. // Copyright (c) 2014 Flipboard. All rights reserved.
  7. //
  8. #import "FLEXArgumentInputStringView.h"
  9. #import "FLEXRuntimeUtility.h"
  10. @implementation FLEXArgumentInputStringView
  11. - (instancetype)initWithArgumentTypeEncoding:(const char *)typeEncoding
  12. {
  13. self = [super initWithArgumentTypeEncoding:typeEncoding];
  14. if (self) {
  15. self.targetSize = FLEXArgumentInputViewSizeLarge;
  16. }
  17. return self;
  18. }
  19. - (void)setInputValue:(id)inputValue
  20. {
  21. if ([inputValue isKindOfClass:[NSString class]]) {
  22. self.inputTextView.text = inputValue;
  23. }
  24. // TODO: support NSValue coontaining char *
  25. }
  26. - (id)inputValue
  27. {
  28. // Interpret empty string as nil. We loose the ability to set empty string as a string value,
  29. // but we accept that tradeoff in exchange for not having to type quotes for every string.
  30. return self.inputTextView.text.length > 0 ? [self.inputTextView.text copy] : nil;
  31. }
  32. // TODO: Support using object address for strings, as in the object arg view.
  33. #pragma mark -
  34. + (BOOL)supportsObjCType:(const char *)type withCurrentValue:(id)value
  35. {
  36. NSParameterAssert(type);
  37. BOOL typeIsString = strcmp(type, FLEXEncodeClass(NSString)) == 0;
  38. BOOL valueIsNilOrString = (!value || [value isKindOfClass:[NSString class]]);
  39. return typeIsString && valueIsNilOrString;
  40. }
  41. @end