├── LiveAutoLayout.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── freedom.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── freedom.xcuserdatad │ └── xcschemes │ ├── LiveAutoLayout.xcscheme │ └── xcschememanagement.plist ├── LiveAutoLayout.xcworkspace ├── contents.xcworkspacedata ├── xcshareddata │ └── LiveAutoLayout.xccheckout └── xcuserdata │ └── freedom.xcuserdatad │ └── UserInterfaceState.xcuserstate ├── LiveAutoLayout ├── AppDelegate.h ├── AppDelegate.m ├── Base.lproj │ ├── LaunchScreen.xib │ └── Main.storyboard ├── Images.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Info.plist ├── LiveView.h ├── LiveView.m ├── ViewController.h ├── ViewController.m ├── main.m ├── stylesheet.cas └── variable.cas ├── LiveAutoLayoutTests ├── Info.plist └── LiveAutoLayoutTests.m ├── Podfile ├── Podfile.lock ├── Pods ├── Classy │ ├── Classy │ │ ├── Additions │ │ │ ├── CASStyleableItem.h │ │ │ ├── NSObject+CASSwizzle.h │ │ │ ├── NSObject+CASSwizzle.m │ │ │ ├── NSRegularExpression+CASAdditions.h │ │ │ ├── NSRegularExpression+CASAdditions.m │ │ │ ├── NSString+CASAdditions.h │ │ │ ├── NSString+CASAdditions.m │ │ │ ├── UIBarItem+CASAdditions.h │ │ │ ├── UIBarItem+CASAdditions.m │ │ │ ├── UIColor+CASAdditions.h │ │ │ ├── UIColor+CASAdditions.m │ │ │ ├── UINavigationBar+CASAdditions.h │ │ │ ├── UINavigationBar+CASAdditions.m │ │ │ ├── UISlider+CASAdditions.h │ │ │ ├── UISlider+CASAdditions.m │ │ │ ├── UITabBar+CASAdditions.h │ │ │ ├── UITabBar+CASAdditions.m │ │ │ ├── UITextField+CASAdditions.h │ │ │ ├── UITextField+CASAdditions.m │ │ │ ├── UIToolbar+CASAdditions.h │ │ │ ├── UIToolbar+CASAdditions.m │ │ │ ├── UIView+CASAdditions.h │ │ │ ├── UIView+CASAdditions.m │ │ │ ├── UIViewController+CASAdditions.h │ │ │ └── UIViewController+CASAdditions.m │ │ ├── Classy.h │ │ ├── Parser │ │ │ ├── CASDeviceOSVersionItem.h │ │ │ ├── CASDeviceOSVersionItem.m │ │ │ ├── CASDeviceSelector.h │ │ │ ├── CASDeviceSelector.m │ │ │ ├── CASDeviceSelectorItem.h │ │ │ ├── CASDeviceTypeItem.h │ │ │ ├── CASDeviceTypeItem.m │ │ │ ├── CASExpressionSolver.h │ │ │ ├── CASExpressionSolver.m │ │ │ ├── CASInvocation.h │ │ │ ├── CASInvocation.m │ │ │ ├── CASLexer.h │ │ │ ├── CASLexer.m │ │ │ ├── CASParser.h │ │ │ ├── CASParser.m │ │ │ ├── CASStyleNode.h │ │ │ ├── CASStyleNode.m │ │ │ ├── CASStyleProperty.h │ │ │ ├── CASStyleProperty.m │ │ │ ├── CASStyleSelector.h │ │ │ ├── CASStyleSelector.m │ │ │ ├── CASStyler.h │ │ │ ├── CASStyler.m │ │ │ ├── CASTextAttributes.h │ │ │ ├── CASTextAttributes.m │ │ │ ├── CASToken.h │ │ │ ├── CASToken.m │ │ │ ├── CASUnitToken.h │ │ │ ├── CASUnitToken.m │ │ │ ├── CASUtilities.h │ │ │ └── CASUtilities.m │ │ └── Reflection │ │ │ ├── CASArgumentDescriptor.h │ │ │ ├── CASArgumentDescriptor.m │ │ │ ├── CASObjectClassDescriptor.h │ │ │ ├── CASObjectClassDescriptor.m │ │ │ ├── CASPropertyDescriptor.h │ │ │ ├── CASPropertyDescriptor.m │ │ │ ├── CASRuntimeExtensions.h │ │ │ └── CASRuntimeExtensions.m │ ├── LICENSE │ └── README.md ├── ClassyLiveLayout │ ├── ClassyLiveLayout │ │ ├── ClassyLiveLayout.h │ │ ├── SHPAbstractCollectionViewCell.h │ │ ├── SHPAbstractCollectionViewCell.m │ │ ├── SHPAbstractScrollView.h │ │ ├── SHPAbstractScrollView.m │ │ ├── SHPAbstractTableViewCell.h │ │ ├── SHPAbstractTableViewCell.m │ │ ├── SHPAbstractView.h │ │ ├── SHPAbstractView.m │ │ ├── UIView+ClassyLayoutProperties.h │ │ └── UIView+ClassyLayoutProperties.m │ ├── LICENSE.md │ └── README.md ├── Headers │ ├── Private │ │ ├── Classy │ │ │ ├── CASArgumentDescriptor.h │ │ │ ├── CASDeviceOSVersionItem.h │ │ │ ├── CASDeviceSelector.h │ │ │ ├── CASDeviceSelectorItem.h │ │ │ ├── CASDeviceTypeItem.h │ │ │ ├── CASExpressionSolver.h │ │ │ ├── CASInvocation.h │ │ │ ├── CASLexer.h │ │ │ ├── CASObjectClassDescriptor.h │ │ │ ├── CASParser.h │ │ │ ├── CASPropertyDescriptor.h │ │ │ ├── CASRuntimeExtensions.h │ │ │ ├── CASStyleNode.h │ │ │ ├── CASStyleProperty.h │ │ │ ├── CASStyleSelector.h │ │ │ ├── CASStyleableItem.h │ │ │ ├── CASStyler.h │ │ │ ├── CASTextAttributes.h │ │ │ ├── CASToken.h │ │ │ ├── CASUnitToken.h │ │ │ ├── CASUtilities.h │ │ │ ├── Classy.h │ │ │ ├── NSObject+CASSwizzle.h │ │ │ ├── NSRegularExpression+CASAdditions.h │ │ │ ├── NSString+CASAdditions.h │ │ │ ├── UIBarItem+CASAdditions.h │ │ │ ├── UIColor+CASAdditions.h │ │ │ ├── UINavigationBar+CASAdditions.h │ │ │ ├── UISlider+CASAdditions.h │ │ │ ├── UITabBar+CASAdditions.h │ │ │ ├── UITextField+CASAdditions.h │ │ │ ├── UIToolbar+CASAdditions.h │ │ │ ├── UIView+CASAdditions.h │ │ │ └── UIViewController+CASAdditions.h │ │ ├── ClassyLiveLayout │ │ │ ├── ClassyLiveLayout.h │ │ │ ├── SHPAbstractCollectionViewCell.h │ │ │ ├── SHPAbstractScrollView.h │ │ │ ├── SHPAbstractTableViewCell.h │ │ │ ├── SHPAbstractView.h │ │ │ └── UIView+ClassyLayoutProperties.h │ │ └── Masonry │ │ │ ├── MASCompositeConstraint.h │ │ │ ├── MASConstraint+Private.h │ │ │ ├── MASConstraint.h │ │ │ ├── MASConstraintMaker.h │ │ │ ├── MASLayoutConstraint.h │ │ │ ├── MASUtilities.h │ │ │ ├── MASViewAttribute.h │ │ │ ├── MASViewConstraint.h │ │ │ ├── Masonry.h │ │ │ ├── NSArray+MASAdditions.h │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ ├── View+MASAdditions.h │ │ │ └── View+MASShorthandAdditions.h │ └── Public │ │ ├── Classy │ │ ├── CASArgumentDescriptor.h │ │ ├── CASDeviceOSVersionItem.h │ │ ├── CASDeviceSelector.h │ │ ├── CASDeviceSelectorItem.h │ │ ├── CASDeviceTypeItem.h │ │ ├── CASExpressionSolver.h │ │ ├── CASInvocation.h │ │ ├── CASLexer.h │ │ ├── CASObjectClassDescriptor.h │ │ ├── CASParser.h │ │ ├── CASPropertyDescriptor.h │ │ ├── CASRuntimeExtensions.h │ │ ├── CASStyleNode.h │ │ ├── CASStyleProperty.h │ │ ├── CASStyleSelector.h │ │ ├── CASStyleableItem.h │ │ ├── CASStyler.h │ │ ├── CASTextAttributes.h │ │ ├── CASToken.h │ │ ├── CASUnitToken.h │ │ ├── CASUtilities.h │ │ ├── Classy.h │ │ ├── NSObject+CASSwizzle.h │ │ ├── NSRegularExpression+CASAdditions.h │ │ ├── NSString+CASAdditions.h │ │ ├── UIBarItem+CASAdditions.h │ │ ├── UIColor+CASAdditions.h │ │ ├── UINavigationBar+CASAdditions.h │ │ ├── UISlider+CASAdditions.h │ │ ├── UITabBar+CASAdditions.h │ │ ├── UITextField+CASAdditions.h │ │ ├── UIToolbar+CASAdditions.h │ │ ├── UIView+CASAdditions.h │ │ └── UIViewController+CASAdditions.h │ │ ├── ClassyLiveLayout │ │ ├── ClassyLiveLayout.h │ │ ├── SHPAbstractCollectionViewCell.h │ │ ├── SHPAbstractScrollView.h │ │ ├── SHPAbstractTableViewCell.h │ │ ├── SHPAbstractView.h │ │ └── UIView+ClassyLayoutProperties.h │ │ └── Masonry │ │ ├── MASCompositeConstraint.h │ │ ├── MASConstraint+Private.h │ │ ├── MASConstraint.h │ │ ├── MASConstraintMaker.h │ │ ├── MASLayoutConstraint.h │ │ ├── MASUtilities.h │ │ ├── MASViewAttribute.h │ │ ├── MASViewConstraint.h │ │ ├── Masonry.h │ │ ├── NSArray+MASAdditions.h │ │ ├── NSArray+MASShorthandAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── View+MASAdditions.h │ │ └── View+MASShorthandAdditions.h ├── Manifest.lock ├── Masonry │ ├── LICENSE │ ├── Masonry │ │ ├── MASCompositeConstraint.h │ │ ├── MASCompositeConstraint.m │ │ ├── MASConstraint+Private.h │ │ ├── MASConstraint.h │ │ ├── MASConstraint.m │ │ ├── MASConstraintMaker.h │ │ ├── MASConstraintMaker.m │ │ ├── MASLayoutConstraint.h │ │ ├── MASLayoutConstraint.m │ │ ├── MASUtilities.h │ │ ├── MASViewAttribute.h │ │ ├── MASViewAttribute.m │ │ ├── MASViewConstraint.h │ │ ├── MASViewConstraint.m │ │ ├── Masonry.h │ │ ├── NSArray+MASAdditions.h │ │ ├── NSArray+MASAdditions.m │ │ ├── NSArray+MASShorthandAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.m │ │ ├── View+MASAdditions.h │ │ ├── View+MASAdditions.m │ │ └── View+MASShorthandAdditions.h │ └── README.md ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── freedom.xcuserdatad │ │ └── xcschemes │ │ ├── Pods-Classy.xcscheme │ │ ├── Pods-ClassyLiveLayout.xcscheme │ │ ├── Pods-Masonry.xcscheme │ │ ├── Pods.xcscheme │ │ └── xcschememanagement.plist └── Target Support Files │ ├── Pods-Classy │ ├── Pods-Classy-Private.xcconfig │ ├── Pods-Classy-dummy.m │ ├── Pods-Classy-prefix.pch │ └── Pods-Classy.xcconfig │ ├── Pods-ClassyLiveLayout │ ├── Pods-ClassyLiveLayout-Private.xcconfig │ ├── Pods-ClassyLiveLayout-dummy.m │ ├── Pods-ClassyLiveLayout-prefix.pch │ └── Pods-ClassyLiveLayout.xcconfig │ ├── Pods-Masonry │ ├── Pods-Masonry-Private.xcconfig │ ├── Pods-Masonry-dummy.m │ ├── Pods-Masonry-prefix.pch │ └── Pods-Masonry.xcconfig │ └── Pods │ ├── Pods-acknowledgements.markdown │ ├── Pods-acknowledgements.plist │ ├── Pods-dummy.m │ ├── Pods-environment.h │ ├── Pods-resources.sh │ ├── Pods.debug.xcconfig │ └── Pods.release.xcconfig └── README.md /LiveAutoLayout.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LiveAutoLayout.xcodeproj/project.xcworkspace/xcuserdata/freedom.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samlaudev/LiveAutoLayout/7c87d2261d4a37cb303f70c4f589918e4ee26d52/LiveAutoLayout.xcodeproj/project.xcworkspace/xcuserdata/freedom.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /LiveAutoLayout.xcodeproj/xcuserdata/freedom.xcuserdatad/xcschemes/LiveAutoLayout.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 75 | 77 | 83 | 84 | 85 | 86 | 87 | 88 | 94 | 96 | 102 | 103 | 104 | 105 | 107 | 108 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /LiveAutoLayout.xcodeproj/xcuserdata/freedom.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | LiveAutoLayout.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 1AB650361AE8C8D300010524 16 | 17 | primary 18 | 19 | 20 | 1AB6504F1AE8C8D300010524 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /LiveAutoLayout.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /LiveAutoLayout.xcworkspace/xcshareddata/LiveAutoLayout.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 175BFFB5-8C59-42BD-AEF6-7CFF6BF73E13 9 | IDESourceControlProjectName 10 | LiveAutoLayout 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 9847F8DDA9216C493681A76BCECCC5B26B720F70 14 | https://github.com/samlaudev/LiveAutoLayout.git 15 | 16 | IDESourceControlProjectPath 17 | LiveAutoLayout.xcworkspace 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 9847F8DDA9216C493681A76BCECCC5B26B720F70 21 | .. 22 | 23 | IDESourceControlProjectURL 24 | https://github.com/samlaudev/LiveAutoLayout.git 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | 9847F8DDA9216C493681A76BCECCC5B26B720F70 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 9847F8DDA9216C493681A76BCECCC5B26B720F70 36 | IDESourceControlWCCName 37 | LiveAutoLayout 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /LiveAutoLayout.xcworkspace/xcuserdata/freedom.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samlaudev/LiveAutoLayout/7c87d2261d4a37cb303f70c4f589918e4ee26d52/LiveAutoLayout.xcworkspace/xcuserdata/freedom.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /LiveAutoLayout/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // LiveAutoLayout 4 | // 5 | // Created by Sam Lau on 4/23/15. 6 | // Copyright (c) 2015 Sam Lau. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /LiveAutoLayout/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // LiveAutoLayout 4 | // 5 | // Created by Sam Lau on 4/23/15. 6 | // Copyright (c) 2015 Sam Lau. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import 11 | 12 | @interface AppDelegate () 13 | 14 | @end 15 | 16 | @implementation AppDelegate 17 | 18 | - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 19 | { 20 | 21 | #if TARGET_IPHONE_SIMULATOR 22 | NSString* absoluteFilePath = CASAbsoluteFilePath(@"stylesheet.cas"); 23 | [CASStyler defaultStyler].watchFilePath = absoluteFilePath; 24 | #endif 25 | 26 | return YES; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /LiveAutoLayout/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /LiveAutoLayout/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /LiveAutoLayout/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /LiveAutoLayout/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | appidemic.com.au.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /LiveAutoLayout/LiveView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LiveView.h 3 | // LiveAutoLayout 4 | // 5 | // Created by Sam Lau on 4/23/15. 6 | // Copyright (c) 2015 Sam Lau. All rights reserved. 7 | // 8 | 9 | #import "SHPAbstractView.h" 10 | 11 | @interface LiveView : SHPAbstractView 12 | 13 | @property (strong, nonatomic) UIView *redBoxView; 14 | @property (strong, nonatomic) UIView *blueBoxView; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /LiveAutoLayout/LiveView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LiveView.m 3 | // LiveAutoLayout 4 | // 5 | // Created by Sam Lau on 4/23/15. 6 | // Copyright (c) 2015 Sam Lau. All rights reserved. 7 | // 8 | 9 | #import "LiveView.h" 10 | #import 11 | #import 12 | #import 13 | 14 | @implementation LiveView 15 | 16 | #pragma mark - Add subviews and define layout 17 | - (void)addSubviews 18 | { 19 | self.backgroundColor = [UIColor whiteColor]; 20 | [self addSubview:self.redBoxView]; 21 | [self addSubview:self.blueBoxView]; 22 | } 23 | 24 | - (void)defineLayout 25 | { 26 | [self.redBoxView mas_updateConstraints:^(MASConstraintMaker* make){ 27 | make.top.equalTo(@(self.redBoxView.cas_marginTop)); 28 | make.left.equalTo(@(self.redBoxView.cas_marginLeft)); 29 | make.width.equalTo(@(self.redBoxView.cas_sizeWidth)); 30 | make.height.equalTo(@(self.redBoxView.cas_sizeHeight)); 31 | }]; 32 | 33 | [self.blueBoxView mas_updateConstraints:^(MASConstraintMaker *make){ 34 | make.top.equalTo(@(self.blueBoxView.cas_marginTop)); 35 | make.right.equalTo(@(self.blueBoxView.cas_marginRight)); 36 | make.width.equalTo(@(self.blueBoxView.cas_sizeWidth)); 37 | make.height.equalTo(@(self.blueBoxView.cas_sizeHeight)); 38 | }]; 39 | } 40 | 41 | #pragma mark - Lazy initialization 42 | - (UIView*)redBoxView 43 | { 44 | if (!_redBoxView) { 45 | _redBoxView = [UIView new]; 46 | _redBoxView.cas_styleClass = @"redBox"; 47 | _redBoxView.backgroundColor = [UIColor redColor]; 48 | } 49 | 50 | return _redBoxView; 51 | } 52 | 53 | - (UIView*)blueBoxView 54 | { 55 | if (!_blueBoxView) { 56 | _blueBoxView = [UIView new]; 57 | _blueBoxView.cas_styleClass = @"blueBox"; 58 | _blueBoxView.backgroundColor = [UIColor blueColor]; 59 | } 60 | 61 | return _blueBoxView; 62 | } 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /LiveAutoLayout/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // LiveAutoLayout 4 | // 5 | // Created by Sam Lau on 4/23/15. 6 | // Copyright (c) 2015 Sam Lau. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /LiveAutoLayout/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // LiveAutoLayout 4 | // 5 | // Created by Sam Lau on 4/23/15. 6 | // Copyright (c) 2015 Sam Lau. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import "LiveView.h" 11 | 12 | @interface ViewController () 13 | 14 | @end 15 | 16 | @implementation ViewController 17 | 18 | #pragma mark - View controller lifecycle 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | 22 | LiveView *liveView = [[LiveView alloc] initWithFrame:self.view.bounds]; 23 | self.view = liveView; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /LiveAutoLayout/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LiveAutoLayout 4 | // 5 | // Created by Sam Lau on 4/23/15. 6 | // Copyright (c) 2015 Sam Lau. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /LiveAutoLayout/stylesheet.cas: -------------------------------------------------------------------------------- 1 | @import "variable.cas"; 2 | 3 | UIView.blueBox { 4 | cas_marginTop 50 5 | cas_marginRight -20 6 | 7 | cas_size 100 100 8 | } -------------------------------------------------------------------------------- /LiveAutoLayout/variable.cas: -------------------------------------------------------------------------------- 1 | UIView.redBox { 2 | cas_marginTop 50 3 | cas_marginLeft 20 4 | 5 | cas_size 100 100 6 | } -------------------------------------------------------------------------------- /LiveAutoLayoutTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | appidemic.com.au.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /LiveAutoLayoutTests/LiveAutoLayoutTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // LiveAutoLayoutTests.m 3 | // LiveAutoLayoutTests 4 | // 5 | // Created by Sam Lau on 4/23/15. 6 | // Copyright (c) 2015 Sam Lau. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface LiveAutoLayoutTests : XCTestCase 13 | 14 | @end 15 | 16 | @implementation LiveAutoLayoutTests 17 | 18 | - (void)setUp { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown { 24 | // Put teardown code here. This method is called after the invocation of each test method in the class. 25 | [super tearDown]; 26 | } 27 | 28 | - (void)testExample { 29 | // This is an example of a functional test case. 30 | XCTAssert(YES, @"Pass"); 31 | } 32 | 33 | - (void)testPerformanceExample { 34 | // This is an example of a performance test case. 35 | [self measureBlock:^{ 36 | // Put the code you want to measure the time of here. 37 | }]; 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | pod 'Masonry', '~> 0.6.1' 2 | pod 'Classy', '~> 0.2.4' 3 | pod 'ClassyLiveLayout', '~> 0.6.0' 4 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Classy (0.2.4) 3 | - ClassyLiveLayout (0.6.0): 4 | - Classy 5 | - Masonry 6 | - Masonry (0.6.1) 7 | 8 | DEPENDENCIES: 9 | - Classy (~> 0.2.4) 10 | - ClassyLiveLayout (~> 0.6.0) 11 | - Masonry (~> 0.6.1) 12 | 13 | SPEC CHECKSUMS: 14 | Classy: 8c8f835d51e20d25e9cce0d864fba5bf1cef6070 15 | ClassyLiveLayout: 264876c3a64dcc732e174796bdeaa40a6b7fff3b 16 | Masonry: 2cb49fd14d203d2db5ca6bb017135b235dde9980 17 | 18 | COCOAPODS: 0.36.0.rc.1 19 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/CASStyleableItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASStyleableItem.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 31/10/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @protocol CASStyleableItem 12 | 13 | /** 14 | * NSString which should relate to a styleClass in your stylesheet 15 | */ 16 | @property (nonatomic, copy) NSString *cas_styleClass; 17 | 18 | /** 19 | * Direct parent of receiver 20 | * ie in case of UIView will be self.superview 21 | */ 22 | @property (nonatomic, weak, readonly) id cas_parent; 23 | 24 | /** 25 | * In some cases it is appropriate to specify an alternative parent relationship 26 | * ie in case of UIView it's UIViewController is an alternative parent to it's superview 27 | */ 28 | @property (nonatomic, weak, readonly) id cas_alternativeParent; 29 | 30 | /** 31 | * Peforms styling now if receiver needs styling 32 | */ 33 | - (void)cas_updateStylingIfNeeded; 34 | 35 | /** 36 | * Override this to adjust your styling during a style update pass. 37 | * If overriding should call super 38 | */ 39 | - (void)cas_updateStyling; 40 | 41 | /** 42 | * Returns whether or not receiver has been marked as needing style update 43 | */ 44 | - (BOOL)cas_needsUpdateStyling; 45 | 46 | /** 47 | * Schedules the receiver to for a style update 48 | */ 49 | - (void)cas_setNeedsUpdateStyling; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/NSObject+CASSwizzle.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+CASSwizzle.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 15/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (CASSwizzle) 12 | 13 | + (void)cas_swizzleInstanceSelector:(SEL)originalSelector 14 | withNewSelector:(SEL)newSelector; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/NSObject+CASSwizzle.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+CASSwizzle.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 15/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "NSObject+CASSwizzle.h" 10 | #import 11 | 12 | @implementation NSObject (CASSwizzle) 13 | 14 | + (void)cas_swizzleInstanceSelector:(SEL)originalSelector 15 | withNewSelector:(SEL)newSelector { 16 | Method originalMethod = class_getInstanceMethod(self, originalSelector); 17 | Method newMethod = class_getInstanceMethod(self, newSelector); 18 | 19 | BOOL methodAdded = class_addMethod([self class], 20 | originalSelector, 21 | method_getImplementation(newMethod), 22 | method_getTypeEncoding(newMethod)); 23 | 24 | if (methodAdded) { 25 | class_replaceMethod([self class], 26 | newSelector, 27 | method_getImplementation(originalMethod), 28 | method_getTypeEncoding(originalMethod)); 29 | } else { 30 | method_exchangeImplementations(originalMethod, newMethod); 31 | } 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/NSRegularExpression+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSRegularExpression+CASAdditions.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 17/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | extern NSRegularExpression *CASRegex(NSString *patternFormat, ...) NS_FORMAT_FUNCTION(1,2); 12 | 13 | @interface NSRegularExpression (CASAdditions) 14 | 15 | - (NSUInteger)cas_replaceMatchesInString:(NSMutableString *)string withTemplate:(NSString *)templ; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/NSRegularExpression+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSRegularExpression+CASAdditions.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 17/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "NSRegularExpression+CASAdditions.h" 10 | #import "CASUtilities.h" 11 | 12 | extern NSRegularExpression *CASRegex(NSString *patternFormat, ...) { 13 | va_list args; 14 | va_start(args, patternFormat); 15 | NSString *pattern = [[NSString alloc] initWithFormat:patternFormat arguments:args]; 16 | va_end(args); 17 | 18 | NSError *error = nil; 19 | NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 20 | NSCAssert(error == nil, @"Could not create regex from pattern %@", pattern); 21 | if (error) { 22 | CASLog(@"error %@", error); 23 | } 24 | return regex; 25 | } 26 | 27 | @implementation NSRegularExpression (CASAdditions) 28 | 29 | - (NSUInteger)cas_replaceMatchesInString:(NSMutableString *)string withTemplate:(NSString *)templ { 30 | return [self replaceMatchesInString:string options:0 range:NSMakeRange(0, string.length) withTemplate:templ]; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/NSString+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+CASAdditions.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 14/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (CASAdditions) 12 | 13 | - (NSString *)cas_stringByCapitalizingFirstLetter; 14 | - (NSString *)cas_stringByTrimmingWhitespace; 15 | - (NSString *)cas_stringByCamelCasing; 16 | - (NSString *)cas_stringByTrimmingLeadingCharactersInSet:(NSCharacterSet *)characterSet; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/NSString+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+CASAdditions.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 14/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "NSString+CASAdditions.h" 10 | 11 | @implementation NSString (CASAdditions) 12 | 13 | - (NSString *)cas_stringByCapitalizingFirstLetter { 14 | if (!self.length) return self; 15 | return [self stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[self substringToIndex:1] capitalizedString]]; 16 | } 17 | 18 | - (NSString *)cas_stringByTrimmingWhitespace { 19 | return [self stringByTrimmingCharactersInSet:NSCharacterSet.whitespaceCharacterSet]; 20 | } 21 | 22 | - (NSString *)cas_stringByCamelCasing { 23 | NSArray *components = [self componentsSeparatedByString:@"-"]; 24 | if (components.count <= 1) return self; 25 | 26 | NSMutableString *camelCasedString = [NSMutableString string]; 27 | for (NSUInteger i = 0; i < components.count; i++) { 28 | if (i == 0) { 29 | [camelCasedString appendString:components[i]]; 30 | } else { 31 | [camelCasedString appendString:[components[i] cas_stringByCapitalizingFirstLetter]]; 32 | } 33 | } 34 | return camelCasedString; 35 | } 36 | 37 | - (NSString *)cas_stringByTrimmingLeadingCharactersInSet:(NSCharacterSet *)characterSet { 38 | NSInteger i = 0; 39 | while ((i < self.length) && [characterSet characterIsMember:[self characterAtIndex:i]]) { 40 | i++; 41 | } 42 | return [self substringFromIndex:i]; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIBarItem+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarItem+CASAdditions.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 5/11/13. 6 | // 7 | // 8 | 9 | #import 10 | #import "CASStyleableItem.h" 11 | 12 | @interface UIBarItem (CASAdditions) 13 | 14 | @property (nonatomic, weak, readwrite) id cas_parent; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIBarItem+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarItem+CASAdditions.m 3 | // 4 | // 5 | // Created by Jonas Budelmann on 5/11/13. 6 | // 7 | // 8 | 9 | #import "UIBarItem+CASAdditions.h" 10 | #import 11 | #import "CASStyler.h" 12 | 13 | @implementation UIBarItem (CASAdditions) 14 | 15 | #pragma mark - CASStyleableItem 16 | 17 | - (NSString *)cas_styleClass { 18 | return objc_getAssociatedObject(self, @selector(cas_styleClass)); 19 | } 20 | 21 | - (void)setCas_styleClass:(NSString *)styleClass { 22 | if ([self.cas_styleClass isEqual:styleClass]) return; 23 | objc_setAssociatedObject(self, @selector(cas_styleClass), styleClass, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 24 | 25 | [self cas_setNeedsUpdateStyling]; 26 | } 27 | 28 | - (id)cas_parent { 29 | return objc_getAssociatedObject(self, @selector(cas_parent)); 30 | } 31 | 32 | - (void)setCas_parent:(id)parent { 33 | objc_setAssociatedObject(self, @selector(cas_parent), parent, OBJC_ASSOCIATION_ASSIGN); 34 | } 35 | 36 | - (id)cas_alternativeParent { 37 | return nil; 38 | } 39 | 40 | - (void)cas_updateStylingIfNeeded { 41 | if ([self cas_needsUpdateStyling] && self.cas_parent) { 42 | [self cas_updateStyling]; 43 | } 44 | } 45 | 46 | - (void)cas_updateStyling { 47 | [CASStyler.defaultStyler styleItem:self]; 48 | } 49 | 50 | - (BOOL)cas_needsUpdateStyling { 51 | return [self.cas_parent cas_needsUpdateStyling]; 52 | } 53 | 54 | - (void)cas_setNeedsUpdateStyling { 55 | [self.cas_parent cas_setNeedsUpdateStyling]; 56 | } 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIColor+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+CASAdditions.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 16/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | // Slightly modified from https://github.com/soffes/sstoolkit/blob/master/SSToolkit/UIColor%2BSSToolkitAdditions.h 9 | // Main change namespaced to avoid collisions with other UIColor categories 10 | 11 | #import 12 | 13 | @interface UIColor (CASAdditions) 14 | 15 | /** 16 | * Creates and returns an UIColor object containing a given value. 17 | * 18 | * @param hex The value for the new color. The `#` sign is not required. 19 | * 20 | * @return An UIColor object containing a value. 21 | * You can specify hex values in the following formats: `rgb`, `rrggbb`, or `rrggbbaa`. 22 | * The default alpha value is `1.0`. 23 | */ 24 | + (UIColor *)cas_colorWithHex:(NSString *)hex; 25 | 26 | /** 27 | * Returns the receiver's value as a hex string. 28 | * 29 | * @return The receiver's value as a hex string. 30 | * The value will be `nil` if the color is in a color space other than Grayscale or RGB. 31 | * The `#` sign is omitted. Alpha will be omitted. 32 | */ 33 | - (NSString *)cas_hexValue; 34 | 35 | /** 36 | * Returns the receiver's value as a hex string. 37 | * 38 | * @param includeAlpha `YES` if alpha should be included. `NO` if it should not. 39 | * 40 | * @return The receiver's value as a hex string. 41 | * The value will be `nil` if the color is in a color space other than Grayscale or RGB. 42 | * The `#` sign is omitted. Alpha is included if `includeAlpha` is `YES`. 43 | */ 44 | - (NSString *)cas_hexValueWithAlpha:(BOOL)includeAlpha; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIColor+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+CASAdditions.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 16/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "UIColor+CASAdditions.h" 10 | 11 | @interface NSString (CASPrivateAdditions) 12 | - (NSUInteger)cas_hexValue; 13 | @end 14 | 15 | @implementation NSString (CASPrivateAdditions) 16 | - (NSUInteger)cas_hexValue { 17 | NSUInteger result = 0; 18 | sscanf([self UTF8String], "%x", &result); 19 | return result; 20 | } 21 | @end 22 | 23 | @implementation UIColor (CASAdditions) 24 | 25 | + (UIColor *)cas_colorWithHex:(NSString *)hex { 26 | // Remove `#` and `0x` 27 | if ([hex hasPrefix:@"#"]) { 28 | hex = [hex substringFromIndex:1]; 29 | } else if ([hex hasPrefix:@"0x"]) { 30 | hex = [hex substringFromIndex:2]; 31 | } 32 | 33 | // Invalid if not 3, 6, or 8 characters 34 | NSUInteger length = [hex length]; 35 | if (length != 3 && length != 6 && length != 8) { 36 | return nil; 37 | } 38 | 39 | // Make the string 8 characters long for easier parsing 40 | if (length == 3) { 41 | NSString *r = [hex substringWithRange:NSMakeRange(0, 1)]; 42 | NSString *g = [hex substringWithRange:NSMakeRange(1, 1)]; 43 | NSString *b = [hex substringWithRange:NSMakeRange(2, 1)]; 44 | hex = [NSString stringWithFormat:@"%@%@%@%@%@%@ff", 45 | r, r, g, g, b, b]; 46 | } else if (length == 6) { 47 | hex = [hex stringByAppendingString:@"ff"]; 48 | } 49 | 50 | CGFloat red = [[hex substringWithRange:NSMakeRange(0, 2)] cas_hexValue] / 255.0f; 51 | CGFloat green = [[hex substringWithRange:NSMakeRange(2, 2)] cas_hexValue] / 255.0f; 52 | CGFloat blue = [[hex substringWithRange:NSMakeRange(4, 2)] cas_hexValue] / 255.0f; 53 | CGFloat alpha = [[hex substringWithRange:NSMakeRange(6, 2)] cas_hexValue] / 255.0f; 54 | 55 | return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 56 | } 57 | 58 | - (NSString *)cas_hexValue { 59 | return [self cas_hexValueWithAlpha:NO]; 60 | } 61 | 62 | - (NSString *)cas_hexValueWithAlpha:(BOOL)includeAlpha { 63 | CGColorRef color = self.CGColor; 64 | size_t count = CGColorGetNumberOfComponents(color); 65 | const CGFloat *components = CGColorGetComponents(color); 66 | 67 | static NSString *stringFormat = @"%02x%02x%02x"; 68 | 69 | NSString *hex = nil; 70 | 71 | // Grayscale 72 | if (count == 2) { 73 | NSUInteger white = (NSUInteger)(components[0] * 255.0f); 74 | hex = [NSString stringWithFormat:stringFormat, white, white, white]; 75 | } 76 | 77 | // RGB 78 | else if (count == 4) { 79 | hex = [NSString stringWithFormat:stringFormat, (NSUInteger)(components[0] * 255.0f), 80 | (NSUInteger)(components[1] * 255.0f), (NSUInteger)(components[2] * 255.0f)]; 81 | } 82 | 83 | // Add alpha 84 | if (hex && includeAlpha) { 85 | hex = [hex stringByAppendingFormat:@"%02x", (NSUInteger)(CGColorGetAlpha(self.CGColor) * 255.0f)]; 86 | } 87 | 88 | // Unsupported color space 89 | return hex; 90 | } 91 | 92 | @end 93 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UINavigationBar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+CASAdditions.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 31/10/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (CASAdditions) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UINavigationBar+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+CASAdditions.m 3 | // 4 | // 5 | // Created by Jonas Budelmann on 31/10/13. 6 | // 7 | // 8 | 9 | #import "UINavigationBar+CASAdditions.h" 10 | #import "CASStyler.h" 11 | #import "UIView+CASAdditions.h" 12 | #import "UIBarItem+CASAdditions.h" 13 | 14 | @implementation UINavigationBar (CASAdditions) 15 | 16 | - (void)cas_updateStyling { 17 | [super cas_updateStyling]; 18 | 19 | for (UINavigationItem *navigationItem in self.items) { 20 | for (UIBarButtonItem *barButtonItem in navigationItem.leftBarButtonItems) { 21 | barButtonItem.cas_parent = self; 22 | [barButtonItem cas_updateStyling]; 23 | } 24 | for (UIBarButtonItem *barButtonItem in navigationItem.rightBarButtonItems) { 25 | barButtonItem.cas_parent = self; 26 | [barButtonItem cas_updateStyling]; 27 | } 28 | } 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UISlider+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+CASAdditions.h 3 | // 4 | // 5 | // Created by Cail Borrell on 19/02/14. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface UISlider (CASAdditions) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UISlider+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+CASAdditions.m 3 | // 4 | // 5 | // Created by Cail Borrell on 19/02/14. 6 | // 7 | // 8 | 9 | #import "UISlider+CASAdditions.h" 10 | #import "NSObject+CASSwizzle.h" 11 | #import "UIView+CASAdditions.h" 12 | 13 | @implementation UISlider (CASAdditions) 14 | 15 | + (void)load { 16 | [self cas_swizzleInstanceSelector:@selector(didMoveToWindow) 17 | withNewSelector:@selector(cas_didMoveToWindow)]; 18 | } 19 | 20 | - (void)cas_didMoveToWindow { 21 | [self cas_updateStyling]; 22 | [self cas_didMoveToWindow]; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UITabBar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBar+CASAdditions.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 1/11/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface UITabBar (CASAdditions) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UITabBar+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBar+CASAdditions.m 3 | // 4 | // 5 | // Created by Jonas Budelmann on 1/11/13. 6 | // 7 | // 8 | 9 | #import "UITabBar+CASAdditions.h" 10 | 11 | #import "CASStyler.h" 12 | #import "UIView+CASAdditions.h" 13 | #import "UIBarItem+CASAdditions.h" 14 | 15 | @implementation UITabBar (CASAdditions) 16 | 17 | - (void)cas_updateStyling { 18 | [super cas_updateStyling]; 19 | 20 | for (UITabBarItem *item in self.items) { 21 | item.cas_parent = self; 22 | [item cas_updateStyling]; 23 | } 24 | } 25 | 26 | @end -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UITextField+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+CASAdditions.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 14/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextField (CASAdditions) 12 | 13 | @property (nonatomic, assign) UIEdgeInsets cas_textEdgeInsets; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UITextField+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+CASAdditions.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 14/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "UITextField+CASAdditions.h" 10 | #import 11 | #import "NSObject+CASSwizzle.h" 12 | 13 | @implementation UITextField (CASAdditions) 14 | 15 | + (void)load { 16 | [self cas_swizzleInstanceSelector:@selector(textRectForBounds:) 17 | withNewSelector:@selector(cas_textRectForBounds:)]; 18 | 19 | [self cas_swizzleInstanceSelector:@selector(editingRectForBounds:) 20 | withNewSelector:@selector(cas_editingRectForBounds:)]; 21 | } 22 | 23 | #pragma mark - text insets 24 | 25 | - (void)setCas_textEdgeInsets:(UIEdgeInsets)cas_textEdgeInsets { 26 | NSValue *value = [NSValue valueWithUIEdgeInsets:cas_textEdgeInsets]; 27 | objc_setAssociatedObject(self, @selector(cas_textEdgeInsets), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 28 | } 29 | 30 | - (UIEdgeInsets)cas_textEdgeInsets { 31 | return [objc_getAssociatedObject(self, @selector(cas_textEdgeInsets)) UIEdgeInsetsValue]; 32 | } 33 | 34 | - (CGRect)cas_textRectForBounds:(CGRect)bounds { 35 | if (UIEdgeInsetsEqualToEdgeInsets(self.cas_textEdgeInsets, UIEdgeInsetsZero)) { 36 | return [self cas_textRectForBounds:bounds]; 37 | } 38 | return UIEdgeInsetsInsetRect(bounds, self.cas_textEdgeInsets); 39 | } 40 | 41 | - (CGRect)cas_editingRectForBounds:(CGRect)bounds { 42 | return [self textRectForBounds:bounds]; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIToolbar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIToolbar+CASAdditions.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 1/11/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface UIToolbar (CASAdditions) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIToolbar+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIToolbar+CASAdditions.m 3 | // 4 | // 5 | // Created by Jonas Budelmann on 1/11/13. 6 | // 7 | // 8 | 9 | #import "UIToolbar+CASAdditions.h" 10 | 11 | #import "CASStyler.h" 12 | #import "UIView+CASAdditions.h" 13 | #import "UIBarItem+CASAdditions.h" 14 | 15 | @implementation UIToolbar (CASAdditions) 16 | 17 | - (void)cas_updateStyling { 18 | [super cas_updateStyling]; 19 | 20 | for (UIBarButtonItem *item in self.items) { 21 | item.cas_parent = self; 22 | [item cas_updateStyling]; 23 | } 24 | } 25 | 26 | @end -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIView+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+CASAdditions.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 30/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASStyleableItem.h" 11 | 12 | @interface UIView (CASAdditions) 13 | 14 | @property (nonatomic, weak, readwrite) id cas_alternativeParent; 15 | 16 | - (void)cas_setNeedsUpdateStylingForSubviews; 17 | 18 | @end -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIView+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+CASAdditions.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 30/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "UIView+CASAdditions.h" 10 | #import 11 | #import 12 | #import "NSObject+CASSwizzle.h" 13 | #import "CASStyler.h" 14 | 15 | static void *CASStyleHasBeenUpdatedKey = &CASStyleHasBeenUpdatedKey; 16 | 17 | @implementation UIView (CASAdditions) 18 | 19 | + (void)load { 20 | [self cas_swizzleInstanceSelector:@selector(didMoveToWindow) 21 | withNewSelector:@selector(cas_didMoveToWindow)]; 22 | } 23 | 24 | - (void)cas_didMoveToWindow { 25 | [self cas_updateStyling]; 26 | 27 | [self cas_didMoveToWindow]; 28 | } 29 | 30 | - (void)cas_setNeedsUpdateStylingForSubviews { 31 | [self cas_setNeedsUpdateStyling]; 32 | for (UIView *view in self.subviews) { 33 | [view cas_setNeedsUpdateStylingForSubviews]; 34 | } 35 | } 36 | 37 | #pragma mark - CASStyleableItem 38 | 39 | - (NSString *)cas_styleClass { 40 | return objc_getAssociatedObject(self, @selector(cas_styleClass)); 41 | } 42 | 43 | - (void)setCas_styleClass:(NSString *)styleClass { 44 | if ([self.cas_styleClass isEqual:styleClass]) return; 45 | objc_setAssociatedObject(self, @selector(cas_styleClass), styleClass, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 46 | 47 | [self cas_setNeedsUpdateStylingForSubviews]; 48 | } 49 | 50 | - (id)cas_parent { 51 | return self.superview; 52 | } 53 | 54 | - (id)cas_alternativeParent { 55 | return objc_getAssociatedObject(self, @selector(cas_alternativeParent)); 56 | } 57 | 58 | - (void)setCas_alternativeParent:(id)parent { 59 | objc_setAssociatedObject(self, @selector(cas_alternativeParent), parent, OBJC_ASSOCIATION_ASSIGN); 60 | } 61 | 62 | - (void)cas_updateStylingIfNeeded { 63 | if ([self cas_needsUpdateStyling]) { 64 | [self cas_updateStyling]; 65 | } 66 | } 67 | 68 | - (void)cas_updateStyling { 69 | [CASStyler.defaultStyler styleItem:self]; 70 | objc_setAssociatedObject(self, CASStyleHasBeenUpdatedKey, @(YES), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 71 | [CASStyler.defaultStyler unscheduleUpdateForItem:self]; 72 | } 73 | 74 | - (BOOL)cas_needsUpdateStyling { 75 | return ![objc_getAssociatedObject(self, @selector(cas_needsUpdateStyling)) boolValue]; 76 | } 77 | 78 | - (void)cas_setNeedsUpdateStyling { 79 | objc_setAssociatedObject(self, CASStyleHasBeenUpdatedKey, @(NO), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 80 | [CASStyler.defaultStyler scheduleUpdateForItem:self]; 81 | } 82 | 83 | @end 84 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIViewController+CASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+CASAdditions.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 17/11/13. 6 | // 7 | // 8 | 9 | #import 10 | #import "CASStyleableItem.h" 11 | 12 | @interface UIViewController (CASAdditions) 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Additions/UIViewController+CASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+CASAdditions.m 3 | // 4 | // 5 | // Created by Jonas Budelmann on 17/11/13. 6 | // 7 | // 8 | 9 | #import "UIViewController+CASAdditions.h" 10 | #import "NSObject+CASSwizzle.h" 11 | #import "UIView+CASAdditions.h" 12 | #import 13 | #import "CASStyler.h" 14 | 15 | static void *CASStyleHasBeenUpdatedKey = &CASStyleHasBeenUpdatedKey; 16 | 17 | @implementation UIViewController (CASAdditions) 18 | 19 | + (void)load { 20 | [self cas_swizzleInstanceSelector:@selector(setView:) 21 | withNewSelector:@selector(cas_setView:)]; 22 | } 23 | 24 | - (void)cas_setView:(UIView *)view { 25 | view.cas_alternativeParent = self; 26 | 27 | [self cas_setView:view]; 28 | } 29 | 30 | #pragma mark - CASStyleableItem 31 | 32 | - (NSString *)cas_styleClass { 33 | return objc_getAssociatedObject(self, @selector(cas_styleClass)); 34 | } 35 | 36 | - (void)setCas_styleClass:(NSString *)styleClass { 37 | if ([self.cas_styleClass isEqual:styleClass]) return; 38 | objc_setAssociatedObject(self, @selector(cas_styleClass), styleClass, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 39 | 40 | [self cas_setNeedsUpdateStyling]; 41 | [self.view cas_setNeedsUpdateStylingForSubviews]; 42 | } 43 | 44 | - (id)cas_parent { 45 | return self.view.superview; 46 | } 47 | 48 | - (id)cas_alternativeParent { 49 | return self.parentViewController; 50 | } 51 | 52 | - (void)cas_updateStylingIfNeeded { 53 | if ([self cas_needsUpdateStyling]) { 54 | [self cas_updateStyling]; 55 | } 56 | } 57 | 58 | - (void)cas_updateStyling { 59 | [CASStyler.defaultStyler styleItem:self]; 60 | objc_setAssociatedObject(self, CASStyleHasBeenUpdatedKey, @(YES), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 61 | [CASStyler.defaultStyler unscheduleUpdateForItem:self]; 62 | } 63 | 64 | - (BOOL)cas_needsUpdateStyling { 65 | return ![objc_getAssociatedObject(self, @selector(cas_needsUpdateStyling)) boolValue]; 66 | } 67 | 68 | - (void)cas_setNeedsUpdateStyling { 69 | objc_setAssociatedObject(self, CASStyleHasBeenUpdatedKey, @(NO), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 70 | [CASStyler.defaultStyler scheduleUpdateForItem:self]; 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Classy.h: -------------------------------------------------------------------------------- 1 | // 2 | // Classy.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 16/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "CASStyler.h" 12 | #import "CASStyleableItem.h" 13 | #import "CASUtilities.h" 14 | #import "CASObjectClassDescriptor.h" 15 | #import "CASArgumentDescriptor.h" 16 | #import "CASPropertyDescriptor.h" 17 | 18 | #import "UIColor+CASAdditions.h" 19 | #import "UITextField+CASAdditions.h" 20 | #import "UIView+CASAdditions.h" 21 | #import "UIBarItem+CASAdditions.h" 22 | #import "UINavigationBar+CASAdditions.h" 23 | #import "UITabBar+CASAdditions.h" 24 | #import "UIToolBar+CASAdditions.h" -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASDeviceOSVersionItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASDeviceOSVersionItem.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 25/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASDeviceSelectorItem.h" 11 | 12 | @interface CASDeviceOSVersionItem : NSObject 13 | 14 | @property (nonatomic, copy) NSString *version; 15 | @property (nonatomic, assign) CASRelation relation; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASDeviceOSVersionItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASDeviceOSVersionItem.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 25/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASDeviceOSVersionItem.h" 10 | #import "CASUtilities.h" 11 | 12 | @implementation CASDeviceOSVersionItem 13 | 14 | - (NSString *)relationString { 15 | switch (self.relation) { 16 | case CASRelationLessThan: 17 | return @"<"; 18 | case CASRelationLessThanOrEqual: 19 | return @"<="; 20 | case CASRelationEqual: 21 | return @""; 22 | case CASRelationGreaterThanOrEqual: 23 | return @">="; 24 | case CASRelationGreaterThan: 25 | return @">"; 26 | } 27 | } 28 | 29 | - (BOOL)isValid { 30 | switch (self.relation) { 31 | case CASRelationLessThan: 32 | return CASDeviceSystemVersionIsLessThan(self.version); 33 | case CASRelationLessThanOrEqual: 34 | return CASDeviceSystemVersionIsLessThanOrEqualTo(self.version); 35 | case CASRelationEqual: 36 | return CASDeviceSystemVersionIsEqualTo(self.version); 37 | case CASRelationGreaterThanOrEqual: 38 | return CASDeviceSystemVersionIsGreaterThanOrEqualTo(self.version); 39 | case CASRelationGreaterThan: 40 | return CASDeviceSystemVersionIsGreaterThan(self.version); 41 | } 42 | } 43 | 44 | - (NSString *)stringValue { 45 | return [NSString stringWithFormat:@"(version:%@%@)", self.relationString, self.version]; 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASDeviceSelector.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASStyleMediaSelector.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 24/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASDeviceTypeItem.h" 11 | #import "CASDeviceOSVersionItem.h" 12 | 13 | @interface CASDeviceSelector : NSObject 14 | 15 | @property (nonatomic, strong, readonly) NSArray *items; 16 | 17 | - (void)addItems:(NSArray *)items; 18 | - (void)addDeviceType:(CASDeviceType)deviceType; 19 | - (BOOL)addOSVersion:(NSString *)version; 20 | 21 | - (BOOL)isValid; 22 | - (NSString *)stringValue; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASDeviceSelector.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASStyleMediaSelector.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 24/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASDeviceSelector.h" 10 | #import "NSString+CASAdditions.h" 11 | 12 | @implementation CASDeviceSelector { 13 | NSMutableArray *_items; 14 | } 15 | 16 | - (id)init { 17 | self = [super init]; 18 | if (!self) return nil; 19 | 20 | _items = NSMutableArray.new; 21 | 22 | return self; 23 | } 24 | 25 | - (NSArray *)items { 26 | return _items; 27 | } 28 | 29 | - (void)addItems:(NSArray *)items { 30 | [_items addObjectsFromArray:items]; 31 | } 32 | 33 | - (void)addDeviceType:(CASDeviceType)deviceType { 34 | CASDeviceTypeItem *item = CASDeviceTypeItem.new; 35 | item.deviceType = deviceType; 36 | [_items addObject:item]; 37 | } 38 | 39 | - (BOOL)addOSVersion:(NSString *)version { 40 | CASRelation relation = CASRelationEqual; 41 | 42 | NSCharacterSet *equalityCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@">=<"]; 43 | NSString *versionNumberString = [version cas_stringByTrimmingLeadingCharactersInSet:equalityCharacterSet]; 44 | NSString *relationString = [version substringToIndex:version.length - versionNumberString.length]; 45 | 46 | if ([relationString isEqualToString:@"<"]) { 47 | relation = CASRelationLessThan; 48 | } else if ([relationString isEqualToString:@"<="]) { 49 | relation = CASRelationLessThanOrEqual; 50 | } else if ([relationString isEqualToString:@"=="]) { 51 | relation = CASRelationEqual; 52 | } else if ([relationString isEqualToString:@">="]) { 53 | relation = CASRelationGreaterThanOrEqual; 54 | } else if ([relationString isEqualToString:@">"]) { 55 | relation = CASRelationGreaterThan; 56 | } else if (relation == CASRelationEqual && relationString.length) { 57 | return NO; 58 | } 59 | 60 | CASDeviceOSVersionItem *item = CASDeviceOSVersionItem.new; 61 | item.version = versionNumberString; 62 | item.relation = relation; 63 | [_items addObject:item]; 64 | 65 | return YES; 66 | } 67 | 68 | - (BOOL)isValid { 69 | for (id item in self.items) { 70 | if (!item.isValid) { 71 | return NO; 72 | } 73 | } 74 | return YES; 75 | } 76 | 77 | - (NSString *)stringValue { 78 | NSMutableString *string = NSMutableString.new; 79 | 80 | [self.items enumerateObjectsUsingBlock:^(id item, NSUInteger idx, BOOL *stop) { 81 | [string appendString:item.stringValue]; 82 | if (idx != self.items.count - 1) { 83 | [string appendString:@" and "]; 84 | } 85 | }]; 86 | 87 | return string; 88 | } 89 | 90 | @end 91 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASDeviceSelectorItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASDeviceSelectorItem.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 25/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, CASRelation) { 12 | CASRelationLessThan = -2, 13 | CASRelationLessThanOrEqual = -1, 14 | CASRelationEqual = 0, 15 | CASRelationGreaterThanOrEqual = 1, 16 | CASRelationGreaterThan = 2, 17 | }; 18 | 19 | @protocol CASDeviceSelectorItem 20 | 21 | - (BOOL)isValid; 22 | - (NSString *)stringValue; 23 | 24 | @end -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASDeviceTypeItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASDeviceTypeItem.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 25/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASDeviceSelectorItem.h" 11 | 12 | 13 | typedef NS_ENUM(NSInteger, CASDeviceType) { 14 | CASDeviceTypePhone = 0, 15 | CASDeviceTypePad = 1, 16 | }; 17 | 18 | @interface CASDeviceTypeItem : NSObject 19 | 20 | @property (nonatomic, assign) CASDeviceType deviceType; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASDeviceTypeItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASDeviceTypeItem.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 25/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASDeviceTypeItem.h" 10 | 11 | @implementation CASDeviceTypeItem 12 | 13 | - (BOOL)isValid { 14 | if (self.deviceType == CASDeviceTypePhone) { 15 | return UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPhone; 16 | } else { 17 | return UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad; 18 | } 19 | } 20 | 21 | - (NSString *)stringValue { 22 | if (self.deviceType == CASDeviceTypePhone) { 23 | return @"phone"; 24 | } 25 | return @"pad"; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASExpressionSolver.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASExpressionSolver.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 18/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CASExpressionSolver : NSObject 12 | 13 | /** 14 | * Takes an array of tokens and reduces any expressions contained within to a numerical value. 15 | * Skips tokens which cannot be evaluated in a expression 16 | * 17 | * @return a NSArray of tokens 18 | */ 19 | - (NSArray *)tokensByReducingTokens:(NSArray *)tokens; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASInvocation.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASInvocation.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 5/11/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface CASInvocation : NSObject 12 | 13 | /** 14 | * Wraps an NSInvocation with an optional keypath. 15 | * If keypath is non-nil will alter the target when invokeWithTarget: is called 16 | * 17 | * @param invocation NSInvocation to wrap 18 | * @param keyPath to store for later use 19 | * 20 | * @return CASInvocation 21 | */ 22 | - (id)initWithInvocation:(NSInvocation *)invocation forKeyPath:(NSString *)keyPath; 23 | 24 | /** 25 | * Invoke the wrapped NSInvocation. 26 | * If keypath is non-nil target will be evaluated keypath 27 | * 28 | * @param target root object 29 | */ 30 | - (void)invokeWithTarget:(id)target; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASInvocation.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASInvocation.m 3 | // 4 | // 5 | // Created by Jonas Budelmann on 5/11/13. 6 | // 7 | // 8 | 9 | #import "CASInvocation.h" 10 | 11 | @interface CASInvocation () 12 | 13 | @property (nonatomic, copy) NSString *keyPath; 14 | @property (nonatomic, strong) NSInvocation *invocation; 15 | 16 | @end 17 | 18 | @implementation CASInvocation 19 | 20 | - (id)initWithInvocation:(NSInvocation *)invocation forKeyPath:(NSString *)keyPath { 21 | self = [super init]; 22 | if (!self) return nil; 23 | 24 | self.invocation = invocation; 25 | self.keyPath = keyPath; 26 | 27 | return self; 28 | } 29 | 30 | - (void)invokeWithTarget:(id)target { 31 | id resolvedTarget = self.keyPath ? [target valueForKeyPath:self.keyPath] : target; 32 | [self.invocation invokeWithTarget:resolvedTarget]; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASLexer.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASLexer.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 15/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASToken.h" 11 | 12 | extern NSString * const CASParseErrorDomain; 13 | extern NSInteger const CASParseErrorInvalidToken; 14 | extern NSInteger const CASParseErrorInvalidIndentation; 15 | extern NSString * const CASParseFailingLineNumberErrorKey; 16 | extern NSString * const CASParseFailingStringErrorKey; 17 | 18 | @interface CASLexer : NSObject 19 | 20 | /** 21 | * The error, if any, that occurred during tokenisation 22 | */ 23 | @property (nonatomic, strong, readonly) NSError *error; 24 | 25 | /** 26 | * The remaining length of string to tokenise 27 | */ 28 | @property (nonatomic, assign, readonly) NSInteger length; 29 | 30 | /** 31 | * Create new `CASLexer` with a `NSString` to Tokenize 32 | */ 33 | - (id)initWithString:(NSString *)str; 34 | 35 | /** 36 | * Create a error and attach current string and line number to userInfo 37 | */ 38 | - (NSError *)errorWithDescription:(NSString *)description reason:(NSString *)reason code:(NSUInteger)code; 39 | 40 | /** 41 | * Token from stash or by advancing. 42 | * 43 | * @return a `CASToken` which will remain or be added to the stash 44 | */ 45 | - (CASToken *)peekToken; 46 | 47 | /** 48 | * Token from stash or by advancing. 49 | * 50 | * @return a `CASToken` which if coming from stash will be removed 51 | */ 52 | - (CASToken *)nextToken; 53 | 54 | /** 55 | * lookahead advances stash if needed 56 | * then returns the token `count` from top of stash 57 | * 58 | * @param count number of tokens to lookahead, minimum=1 59 | * 60 | * @return The token corresponding to the number of lookaheads 61 | */ 62 | - (CASToken *)lookaheadByCount:(NSUInteger)count; 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASParser.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASParser.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 15/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASLexer.h" 11 | 12 | extern NSString * const CASParseFailingFilePathErrorKey; 13 | extern NSInteger const CASParseErrorFileContents; 14 | 15 | @interface CASParser : NSObject 16 | 17 | @property (nonatomic, strong, readonly) NSArray *styleNodes; 18 | @property (nonatomic, strong, readonly) NSSet *importedFileNames; 19 | 20 | /** 21 | * Create a parser with the given file path 22 | */ 23 | + (CASParser *)parserFromFilePath:(NSString *)filePath variables:(NSDictionary *)variables error:(NSError **)error; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASStyleNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASStyleGroup.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 25/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASStyleProperty.h" 11 | #import "CASStyleSelector.h" 12 | #import "CASDeviceSelector.h" 13 | 14 | @interface CASStyleNode : NSObject 15 | 16 | /** 17 | * NSInvocations to apply to appropriate view 18 | */ 19 | @property (nonatomic, strong) NSArray *invocations; 20 | 21 | /** 22 | * returns all style properties for the receiver 23 | */ 24 | @property (nonatomic, strong, readonly) NSArray *styleProperties; 25 | 26 | /** 27 | * style selector related to this node 28 | */ 29 | @property (nonatomic, strong) CASStyleSelector *styleSelector; 30 | 31 | /** 32 | * device selector related to this node 33 | */ 34 | @property (nonatomic, strong) CASDeviceSelector *deviceSelector; 35 | 36 | /** 37 | * Add a style property to the receiver 38 | */ 39 | - (void)addStyleProperty:(CASStyleProperty *)styleProperty; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASStyleNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASStyleGroup.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 25/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASStyleNode.h" 10 | 11 | @implementation CASStyleNode { 12 | NSMutableArray *_styleProperties; 13 | } 14 | 15 | @synthesize styleProperties = _styleProperties; 16 | 17 | - (id)init { 18 | self = [super init]; 19 | if (!self) return nil; 20 | 21 | _styleProperties = NSMutableArray.new; 22 | 23 | return self; 24 | } 25 | 26 | - (void)addStyleProperty:(CASStyleProperty *)styleProperty { 27 | [_styleProperties addObject:styleProperty]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASStyleProperty.h: -------------------------------------------------------------------------------- 1 | // 2 | // MODStyleProperty.h 3 | // Mod 4 | // 5 | // Created by Jonas Budelmann on 25/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "CASToken.h" 12 | 13 | @interface CASStyleProperty : NSObject 14 | 15 | /** 16 | * Name of the receiver 17 | */ 18 | @property (nonatomic, strong, readonly) NSString *name; 19 | 20 | /** 21 | * Raw values of the receiver 22 | */ 23 | @property (nonatomic, strong, readonly) NSArray *values; 24 | 25 | /** 26 | * Name token of the receiver 27 | */ 28 | @property (nonatomic, strong, readonly) CASToken *nameToken; 29 | 30 | /** 31 | * value tokens of the receiver 32 | */ 33 | @property (nonatomic, strong, readonly) NSArray *valueTokens; 34 | 35 | /** 36 | * child style properties 37 | */ 38 | @property (nonatomic, strong, readonly) NSArray *childStyleProperties; 39 | 40 | /** 41 | * Provides support for properties that have extra arguments such as 42 | * - setTitle:forState: 43 | */ 44 | @property (nonatomic, strong) NSDictionary *arguments; 45 | 46 | /** 47 | * Creates property with raw data in the form of CATokens 48 | */ 49 | - (id)initWithNameToken:(CASToken *)nameToken valueTokens:(NSArray *)valueTokens; 50 | 51 | /** 52 | * Returns first valueToken of a specific token type 53 | * 54 | * @param tokenType `CASTokenType` sought 55 | * 56 | * @return a `CASToken` 57 | */ 58 | - (id)valueOfTokenType:(CASTokenType)tokenType; 59 | 60 | /** 61 | * Returns all consecutive valueTokens of a specific token type 62 | * Will ignore whitespace and commas 63 | * 64 | * @param tokenType `CASTokenType` sought 65 | * 66 | * @return a `CASToken` 67 | */ 68 | - (NSArray *)consecutiveValuesOfTokenType:(CASTokenType)tokenType; 69 | 70 | /** 71 | * Attempts to extract a CGSize from the valueTokens 72 | * 73 | * @param size CGSize pointer 74 | * 75 | * @return whether the extraction succeeded 76 | */ 77 | - (BOOL)transformValuesToCGSize:(CGSize *)size; 78 | 79 | /** 80 | * Attempts to extract a CGPoint from the valueTokens 81 | * 82 | * @param size CGPoint pointer 83 | * 84 | * @return whether the extraction succeeded 85 | */ 86 | - (BOOL)transformValuesToCGPoint:(CGPoint *)point; 87 | 88 | /** 89 | * Attempts to extract a CGRect from the valueTokens 90 | * 91 | * @param size CGRect pointer 92 | * 93 | * @return whether the extraction succeeded 94 | */ 95 | - (BOOL)transformValuesToCGRect:(CGRect *)rect; 96 | 97 | /** 98 | * Attempts to extract a UIOffset from the valueTokens 99 | * 100 | * @param offset UIOffset pointer 101 | * 102 | * @return whether the extraction succeeded 103 | */ 104 | - (BOOL)transformValuesToUIOffset:(UIOffset *)offset; 105 | 106 | /** 107 | * Attempts to extract a UIEdgeInsets from the valueTokens 108 | * 109 | * @param size UIEdgeInsets pointer 110 | * 111 | * @return whether the extraction succeeded 112 | */ 113 | - (BOOL)transformValuesToUIEdgeInsets:(UIEdgeInsets *)insets; 114 | 115 | /** 116 | * Attempts to extract a UIColor from the valueTokens 117 | * 118 | * @param color UIColor pointer 119 | * 120 | * @return whether the extraction succeeded 121 | */ 122 | - (BOOL)transformValuesToUIColor:(UIColor **)color; 123 | 124 | /** 125 | * Attempts to extract a UIImage from the valueTokens 126 | * 127 | * @param image UIImage pointer 128 | * 129 | * @return whether the extraction succeeded 130 | */ 131 | - (BOOL)transformValuesToUIImage:(UIImage **)image; 132 | 133 | /** 134 | * Attempts to extract a NSString from the valueTokens 135 | * 136 | * @param string NSString pointer 137 | * 138 | * @return whether the extraction succeeded 139 | */ 140 | - (BOOL)transformValuesToNSString:(NSString **)string; 141 | 142 | /** 143 | * Attempts to extract a UIFont from the valueTokens 144 | * 145 | * @param font UIFont pointer 146 | * 147 | * @return whether the extraction succeeded 148 | */ 149 | - (BOOL)transformValuesToUIFont:(UIFont **)font; 150 | 151 | /** 152 | * Replace any detected expressions/equations with a numerical value 153 | */ 154 | - (void)resolveExpressions; 155 | 156 | /** 157 | * adds nested CASStyleProperty to the receiver 158 | */ 159 | - (void)addChildStyleProperty:(CASStyleProperty *)styleProperty; 160 | 161 | @end 162 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASStyleSelector.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASStyleSelector.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 29/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASStyleableItem.h" 11 | 12 | @interface CASStyleSelector : NSObject 13 | 14 | /** 15 | * Class of View to match 16 | */ 17 | @property (nonatomic, strong) Class objectClass; 18 | 19 | /** 20 | * If not nil checks the view's cas_styleClass property 21 | */ 22 | @property (nonatomic, copy) NSString *styleClass; 23 | 24 | /** 25 | * Whether or not to do strict matching against objectClass 26 | */ 27 | @property (nonatomic, assign) BOOL shouldSelectSubclasses; 28 | 29 | /** 30 | * Whether or not parent selector can be an indirect superview 31 | */ 32 | @property (nonatomic, assign) BOOL shouldSelectIndirectSuperview; 33 | 34 | /** 35 | * Whether or not this selector is a parent 36 | */ 37 | @property (nonatomic, assign, getter = isParent) BOOL parent; 38 | 39 | 40 | /** 41 | * Whether or not this selector should be concatenated 42 | */ 43 | @property (nonatomic, assign) BOOL shouldConcatToParent; 44 | 45 | /** 46 | * Provides support for properties that have extra arguments such as 47 | * - setTitle:forState: 48 | */ 49 | @property (nonatomic, strong) NSDictionary *arguments; 50 | 51 | /** 52 | * Parent selector 53 | */ 54 | @property (nonatomic, strong) CASStyleSelector *parentSelector; 55 | 56 | /** 57 | * Last selector in heirachy 58 | */ 59 | @property (nonatomic, readonly) CASStyleSelector *lastSelector; 60 | 61 | /** 62 | * Returns a integer representation of how specific this selector is. 63 | * Provides a way to order selectors. 64 | * 65 | * The Rules 66 | * 67 | * ObjectClass matches 68 | * +2 ancestor 69 | * +3 superview 70 | * +4 view 71 | * 72 | * if loose match (shouldSelectSubclasses) 73 | * -1 74 | * 75 | * StyleClass matches 76 | * +1000 ancestor 77 | * +2000 superview 78 | * +3000 view 79 | * 80 | * @return Precendence score 81 | */ 82 | - (NSInteger)precedence; 83 | 84 | /** 85 | * Whether is selector matches the given item 86 | * 87 | * @param item `CASStyleableItem` or a subclass 88 | * 89 | * @return `YES` if all selectors including parent selectors match the item 90 | */ 91 | - (BOOL)shouldSelectItem:(id)item; 92 | 93 | /** 94 | * String representation of receiver 95 | * 96 | * @return a `NSString` value 97 | */ 98 | - (NSString *)stringValue; 99 | 100 | @end 101 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASStyleSelector.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASStyleSelector.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 29/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASStyleSelector.h" 10 | #import "UIView+CASAdditions.h" 11 | #import "NSString+CASAdditions.h" 12 | 13 | @implementation CASStyleSelector 14 | 15 | - (id)init { 16 | self = [super init]; 17 | if (!self) return nil; 18 | 19 | self.shouldSelectSubclasses = NO; 20 | self.shouldSelectIndirectSuperview = YES; 21 | 22 | return self; 23 | } 24 | 25 | - (id)copyWithZone:(NSZone *)zone { 26 | CASStyleSelector *newSelector = [[self.class allocWithZone:zone] init]; 27 | if (!newSelector) return nil; 28 | 29 | newSelector.objectClass = self.objectClass; 30 | newSelector.styleClass = self.styleClass; 31 | newSelector.shouldSelectSubclasses = self.shouldSelectSubclasses; 32 | newSelector.shouldSelectIndirectSuperview = self.shouldSelectIndirectSuperview; 33 | newSelector.shouldConcatToParent = self.shouldConcatToParent; 34 | newSelector.arguments = [self.arguments copy]; 35 | newSelector.parentSelector = [self.parentSelector copy]; 36 | 37 | return newSelector; 38 | } 39 | 40 | #pragma mark - properties 41 | 42 | - (CASStyleSelector *)lastSelector { 43 | return self.parentSelector.lastSelector ?: self; 44 | } 45 | 46 | #pragma mark - public 47 | 48 | - (NSInteger)precedence { 49 | NSInteger precedence = 0; 50 | if (self.objectClass) { 51 | if (self.isParent) { 52 | precedence += self.shouldSelectIndirectSuperview ? 2 : 3; 53 | } else { 54 | precedence += 4; 55 | } 56 | if (self.shouldSelectSubclasses) { 57 | precedence -= 1; 58 | } 59 | } 60 | 61 | if (self.styleClass) { 62 | if (self.isParent) { 63 | precedence += self.shouldSelectIndirectSuperview ? 1000 : 2000; 64 | } else { 65 | precedence += 3000; 66 | } 67 | } 68 | 69 | precedence += self.parentSelector.precedence; 70 | return precedence; 71 | } 72 | 73 | - (BOOL)shouldSelectItem:(id)item { 74 | if (![self matchesItem:item]) { 75 | return NO; 76 | } 77 | 78 | if (self.parentSelector) { 79 | return [self.parentSelector matchesAncestorsOfItem:item traverse:self.shouldSelectIndirectSuperview]; 80 | } 81 | 82 | return YES; 83 | } 84 | 85 | - (NSString *)stringValue { 86 | NSMutableString *stringValue = NSMutableString.new; 87 | if (self.parentSelector) { 88 | [stringValue appendFormat:self.shouldSelectIndirectSuperview ? @"%@ " : @"%@ > ", [self.parentSelector stringValue]]; 89 | } 90 | if (self.shouldSelectSubclasses) { 91 | [stringValue appendString:@"^"]; 92 | } 93 | if (self.objectClass) { 94 | [stringValue appendString:NSStringFromClass(self.objectClass)]; 95 | } 96 | if (self.arguments) { 97 | [stringValue appendString:@"["]; 98 | NSArray *keys = [self.arguments.allKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 99 | [keys enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) { 100 | [stringValue appendFormat:@"%@:%@", key, self.arguments[key]]; 101 | if (idx != keys.count - 1) { 102 | [stringValue appendString:@", "]; 103 | } 104 | }]; 105 | [stringValue appendString:@"]"]; 106 | } 107 | if (self.styleClass) { 108 | [stringValue appendFormat:@".%@", self.styleClass]; 109 | } 110 | return stringValue; 111 | } 112 | 113 | #pragma mark - private 114 | 115 | - (BOOL)matchesAncestorsOfItem:(id)item traverse:(BOOL)traverse { 116 | id currentItem = item; 117 | 118 | while (currentItem.cas_parent != nil || currentItem.cas_alternativeParent != nil) { 119 | id ancestor; 120 | if ([self matchesItem:currentItem.cas_parent]) { 121 | ancestor = currentItem.cas_parent; 122 | } else if ([self matchesItem:currentItem.cas_alternativeParent]) { 123 | ancestor = currentItem.cas_alternativeParent; 124 | } 125 | 126 | if (ancestor) { 127 | if (!self.parentSelector) return YES; 128 | BOOL traverse = self.shouldSelectIndirectSuperview; 129 | if ([self.parentSelector matchesAncestorsOfItem:ancestor traverse:traverse]) return YES; 130 | } 131 | if (!traverse) return NO; 132 | currentItem = currentItem.cas_parent; 133 | } 134 | 135 | return NO; 136 | } 137 | 138 | - (BOOL)matchesItem:(id)item { 139 | if (self.objectClass) { 140 | if (self.shouldSelectSubclasses) { 141 | if (![item isKindOfClass:self.objectClass]) return NO; 142 | } else { 143 | if (![item isMemberOfClass:self.objectClass]) return NO; 144 | } 145 | } 146 | if (self.styleClass.length && ![self.styleClass isEqualToString:item.cas_styleClass]) { 147 | return NO; 148 | } 149 | return YES; 150 | } 151 | 152 | @end 153 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASStyler.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASStyler.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 16/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASObjectClassDescriptor.h" 11 | #import "CASStyleableItem.h" 12 | 13 | @interface CASStyler : NSObject 14 | 15 | /** 16 | * Singleton instance 17 | */ 18 | + (instancetype)defaultStyler; 19 | 20 | @property (nonatomic, copy) NSDictionary *variables; 21 | 22 | /** 23 | * File path which contains style data 24 | */ 25 | @property (nonatomic, copy) NSString *filePath; 26 | 27 | /** 28 | * File path to watch for changes. 29 | * Only use for debugging on simulator 30 | */ 31 | @property (nonatomic, copy) NSString *watchFilePath; 32 | 33 | /** 34 | * Set file path location of styling data and report any errors 35 | * 36 | * @param filePath The location of the style data 37 | * @param error The error that occurred while parsing the filePath 38 | */ 39 | - (void)setFilePath:(NSString *)filePath error:(NSError **)error; 40 | 41 | /** 42 | * Apply any applicable styles to a CASStyleableItem instance, from low to high precendence 43 | * 44 | * @param item `CASStyleableItem` to apply styles to 45 | */ 46 | - (void)styleItem:(id)item; 47 | 48 | /** 49 | * Returns a cached CASObjectClassDescriptor if it exists or creates one 50 | */ 51 | - (CASObjectClassDescriptor *)objectClassDescriptorForClass:(Class)aClass; 52 | 53 | /** 54 | * Schedule update for styleable item. 55 | * This ensures we only update an item once per run loop 56 | * 57 | * @param item CASStyleableItem to coalesce update calls 58 | */ 59 | - (void)scheduleUpdateForItem:(id)item; 60 | 61 | /** 62 | * Unschedule update for styleable item 63 | * 64 | * @param item CASStyleableItem that no longer needs updating 65 | */ 66 | - (void)unscheduleUpdateForItem:(id)item; 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASTextAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASTextAttributes.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 4/11/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | /** 12 | * Each property maps directly to a attribute name 13 | * ie font = NSFontAttributeName 14 | */ 15 | @interface CASTextAttributes : NSObject 16 | 17 | @property (nonatomic, strong) UIFont *font; 18 | @property (nonatomic, strong) NSMutableParagraphStyle *paragraphStyle; 19 | @property (nonatomic, strong) UIColor *foregroundColor; 20 | @property (nonatomic, strong) UIColor *backgroundColor; 21 | @property (nonatomic, assign) NSInteger ligature; 22 | @property (nonatomic, assign) CGFloat kern; 23 | @property (nonatomic, assign) NSUnderlineStyle strikethroughStyle; 24 | @property (nonatomic, assign) NSUnderlineStyle underlineStyle; 25 | @property (nonatomic, strong) UIColor *strokeColor; 26 | @property (nonatomic, assign) CGFloat strokeWidth; 27 | @property (nonatomic, strong) NSShadow *shadow; 28 | @property (nonatomic, assign) CGFloat baselineOffset; 29 | 30 | /** 31 | * Transformer receiver into appropriate NSDictionary 32 | * 33 | * @return NSDictionary containing text attribute keys and values 34 | */ 35 | - (NSDictionary *)dictionary; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASTextAttributes.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASTextAttributes.m 3 | // 4 | // 5 | // Created by Jonas Budelmann on 4/11/13. 6 | // 7 | // 8 | 9 | #import "CASTextAttributes.h" 10 | #import "CASUtilities.h" 11 | 12 | @implementation CASTextAttributes 13 | 14 | - (NSMutableParagraphStyle *)paragraphStyle { 15 | if (!_paragraphStyle) { 16 | _paragraphStyle = [NSParagraphStyle defaultParagraphStyle].mutableCopy; 17 | } 18 | return _paragraphStyle; 19 | } 20 | 21 | - (NSShadow *)shadow { 22 | if (!_shadow) { 23 | _shadow = NSShadow.new; 24 | } 25 | return _shadow; 26 | } 27 | 28 | - (NSDictionary *)dictionary { 29 | NSMutableDictionary *dictionary = NSMutableDictionary.new; 30 | 31 | if (self.font) { 32 | dictionary[NSFontAttributeName] = self.font; 33 | } 34 | 35 | if (_paragraphStyle) { 36 | dictionary[NSParagraphStyleAttributeName] = _paragraphStyle; 37 | } 38 | 39 | if (self.foregroundColor) { 40 | dictionary[NSForegroundColorAttributeName] = self.foregroundColor; 41 | } 42 | 43 | if (self.backgroundColor) { 44 | dictionary[NSBackgroundColorAttributeName] = self.backgroundColor; 45 | } 46 | 47 | dictionary[NSLigatureAttributeName] = @(self.ligature); 48 | dictionary[NSKernAttributeName] = @(self.kern); 49 | dictionary[NSStrikethroughStyleAttributeName] = @(self.strikethroughStyle); 50 | dictionary[NSUnderlineStyleAttributeName] = @(self.underlineStyle); 51 | 52 | if (CASKeyDeviceSystemMajorVersion() >= 7) { 53 | dictionary[NSBaselineOffsetAttributeName] = @(self.baselineOffset); 54 | } 55 | 56 | if (self.strokeColor) { 57 | dictionary[NSStrokeColorAttributeName] = self.strokeColor; 58 | } 59 | 60 | dictionary[NSStrokeWidthAttributeName] = @(self.strokeWidth); 61 | 62 | if (_shadow) { 63 | dictionary[NSShadowAttributeName] = _shadow; 64 | } 65 | 66 | return dictionary; 67 | } 68 | 69 | @end 70 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASToken.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASToken.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 16/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, CASTokenType) { 12 | CASTokenTypeUnknown, 13 | CASTokenTypeIndent, 14 | CASTokenTypeOutdent, 15 | CASTokenTypeEOS, 16 | CASTokenTypeSemiColon, 17 | CASTokenTypeCarat, 18 | CASTokenTypeNewline, 19 | CASTokenTypeLeftSquareBrace, 20 | CASTokenTypeRightSquareBrace, 21 | CASTokenTypeLeftCurlyBrace, 22 | CASTokenTypeRightCurlyBrace, 23 | CASTokenTypeLeftRoundBrace, 24 | CASTokenTypeRightRoundBrace, 25 | CASTokenTypeColor, 26 | CASTokenTypeString, 27 | CASTokenTypeUnit, 28 | CASTokenTypeBoolean, 29 | CASTokenTypeRef, 30 | CASTokenTypeOperator, 31 | CASTokenTypeSpace, 32 | CASTokenTypeSelector, 33 | }; 34 | 35 | @interface CASToken : NSObject 36 | 37 | /** 38 | * The type of the token, may not represent the true type which is determined in context of other tokens 39 | */ 40 | @property (nonatomic, assign, readonly) CASTokenType type; 41 | 42 | /** 43 | * The value of the token, could be a boxed primitive or a `NSString`, `UIColor`, ... 44 | */ 45 | @property (nonatomic, strong) id value; 46 | 47 | /** 48 | * The line number at which the token appeared in the style file, used for debug and error messages 49 | */ 50 | @property (nonatomic, assign) NSInteger lineNumber; 51 | 52 | /** 53 | * Factory method for creating tokens with a particular `CASTokenType` 54 | */ 55 | + (instancetype)tokenOfType:(CASTokenType)type; 56 | 57 | /** 58 | * Factory method for creating tokens with a particular `CASTokenType` and value 59 | */ 60 | + (instancetype)tokenOfType:(CASTokenType)type value:(id)value; 61 | 62 | /** 63 | * Returns a `NSString` representation of a `CASTokenType` 64 | * Mainly used for debug output 65 | * 66 | * @param type The `CASTokenType` to convert to a `NSString` 67 | * 68 | * @return a `NSString` representing the passed `CASTokenType` 69 | */ 70 | + (NSString *)stringForType:(CASTokenType)type; 71 | 72 | /** 73 | * Returns value of receiver as a string 74 | */ 75 | - (NSString *)stringValue; 76 | 77 | /** 78 | * Returns whether receiver is a whitespace token or not 79 | * 80 | * @return `YES` if receiver is one of the following types indent, outdent, space, new line. 81 | */ 82 | - (BOOL)isWhitespace; 83 | 84 | /** 85 | * Returns whether receiver's value is equal to the given value 86 | * 87 | * @param string the value for comparison 88 | * 89 | * @return `YES` if receiver is equal to the given value 90 | */ 91 | - (BOOL)valueIsEqualTo:(id)value; 92 | 93 | /** 94 | * Returns whether the receiver could be a valid selector token. 95 | * However context will determine if it is definitely a selector 96 | * 97 | * @return `YES` if it is possible that the receiver is a selector 98 | */ 99 | - (BOOL)isPossiblySelector; 100 | 101 | /** 102 | * Returns whether the receiver could be a valid variable token. 103 | * However context will determine if it is definitely a variable 104 | * 105 | * @return `YES` if it is possible that the receiver is a variable 106 | */ 107 | - (BOOL)isPossiblyVar; 108 | 109 | /** 110 | * Returns whether the receiver could be a valid expression token. 111 | * However context will determine if it is definitely part of an expression 112 | * 113 | * @return `YES` if it is possible that the receiver is a expression token 114 | */ 115 | - (BOOL)isPossiblyExpression; 116 | 117 | 118 | /** 119 | * Returns whether the receiver could be a valid selector delimiting token. 120 | * However context will determine if it is definitely a selector delimiter 121 | * 122 | * @return `YES` if it is possible that the receiver is a selector delimiter 123 | */ 124 | - (BOOL)isPossiblySelectorDelimiter; 125 | 126 | @end 127 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASToken.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASToken.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 16/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASToken.h" 10 | 11 | @interface CASToken () 12 | 13 | @property (nonatomic, assign, readwrite) CASTokenType type; 14 | 15 | @end 16 | 17 | @implementation CASToken 18 | 19 | #pragma mark - debug 20 | 21 | + (NSString *)stringForType:(CASTokenType)type { 22 | switch (type) { 23 | case CASTokenTypeUnknown: 24 | return @"unknown"; 25 | case CASTokenTypeIndent: 26 | return @"indent"; 27 | case CASTokenTypeOutdent: 28 | return @"outdent"; 29 | case CASTokenTypeEOS: 30 | return @"EOS"; 31 | case CASTokenTypeSemiColon: 32 | return @"semicolon"; 33 | case CASTokenTypeCarat: 34 | return @"carat"; 35 | case CASTokenTypeNewline: 36 | return @"newline"; 37 | case CASTokenTypeLeftSquareBrace: 38 | return @"left square brace"; 39 | case CASTokenTypeRightSquareBrace: 40 | return @"right square brace"; 41 | case CASTokenTypeLeftCurlyBrace: 42 | return @"left curly brace"; 43 | case CASTokenTypeRightCurlyBrace: 44 | return @"right curly brace"; 45 | case CASTokenTypeLeftRoundBrace: 46 | return @"left round brace"; 47 | case CASTokenTypeRightRoundBrace: 48 | return @"right round brace"; 49 | case CASTokenTypeColor: 50 | return @"color"; 51 | case CASTokenTypeString: 52 | return @"string"; 53 | case CASTokenTypeUnit: 54 | return @"unit"; 55 | case CASTokenTypeBoolean: 56 | return @"boolean"; 57 | case CASTokenTypeRef: 58 | return @"ref"; 59 | case CASTokenTypeOperator: 60 | return @"operator"; 61 | case CASTokenTypeSpace: 62 | return @"space"; 63 | case CASTokenTypeSelector: 64 | return @"selector"; 65 | } 66 | } 67 | 68 | - (NSString *)description { 69 | if (self.value) { 70 | return [NSString stringWithFormat:@"%@ %@", [self.class stringForType:self.type], self.value]; 71 | } 72 | return [self.class stringForType:self.type]; 73 | } 74 | 75 | #pragma mark - Factory 76 | 77 | + (instancetype)tokenOfType:(CASTokenType)type { 78 | CASToken *token = self.class.new; 79 | token.type = type; 80 | return token; 81 | } 82 | 83 | + (instancetype)tokenOfType:(CASTokenType)type value:(id)value { 84 | CASToken *token = self.class.new; 85 | token.type = type; 86 | token.value = value; 87 | return token; 88 | } 89 | 90 | #pragma mark - Helpers 91 | 92 | - (NSString *)stringValue { 93 | if ([self.value isKindOfClass:NSString.class]) { 94 | return self.value; 95 | } 96 | return [self.value stringValue]; 97 | } 98 | 99 | - (BOOL)isWhitespace { 100 | return self.type == CASTokenTypeIndent 101 | || self.type == CASTokenTypeOutdent 102 | || self.type == CASTokenTypeNewline 103 | || self.type == CASTokenTypeSpace; 104 | } 105 | 106 | - (BOOL)valueIsEqualTo:(id)value { 107 | return [self.value isEqual:value]; 108 | } 109 | 110 | - (BOOL)isPossiblySelector { 111 | return self.type == CASTokenTypeRef 112 | || self.type == CASTokenTypeCarat 113 | || self.type == CASTokenTypeLeftSquareBrace 114 | || self.type == CASTokenTypeRightSquareBrace 115 | || self.type == CASTokenTypeSelector 116 | || self.type == CASTokenTypeNewline 117 | || self.type == CASTokenTypeSpace 118 | || self.type == CASTokenTypeOperator 119 | || [self valueIsEqualTo:@":"] 120 | || [self valueIsEqualTo:@","]; 121 | } 122 | 123 | - (BOOL)isPossiblyVar { 124 | return self.type == CASTokenTypeIndent 125 | || self.type == CASTokenTypeSpace 126 | || self.type == CASTokenTypeRef 127 | || [self valueIsEqualTo:@"="]; 128 | } 129 | 130 | - (BOOL)isPossiblyExpression { 131 | return self.type == CASTokenTypeUnit 132 | || self.type == CASTokenTypeSpace 133 | || self.type == CASTokenTypeLeftRoundBrace 134 | || self.type == CASTokenTypeRightRoundBrace 135 | || (self.type == CASTokenTypeOperator); 136 | } 137 | 138 | - (BOOL)isPossiblySelectorDelimiter{ 139 | return self.type == CASTokenTypeLeftCurlyBrace || self.type == CASTokenTypeIndent; 140 | } 141 | 142 | @end 143 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASUnitToken.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASUnitToken.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 23/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASToken.h" 10 | 11 | @interface CASUnitToken : CASToken 12 | 13 | @property (nonatomic, copy) NSString *suffix; 14 | @property (nonatomic, copy) NSString *rawValue; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASUnitToken.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASUnitToken.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 23/11/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASUnitToken.h" 10 | 11 | @implementation CASUnitToken 12 | 13 | #pragma mark - Helpers 14 | 15 | - (NSString *)stringValue { 16 | return self.rawValue; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASUtilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASUtilities.h 3 | // 4 | // 5 | // Created by Jonas Budelmann on 22/10/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | // Logging 12 | #ifdef DEBUG 13 | # define CASLog(fmt, ...) NSLog((@"[Classy] %s " fmt), __PRETTY_FUNCTION__, ##__VA_ARGS__); 14 | #else 15 | # define CASLog(...) 16 | #endif 17 | 18 | // Keypath compile check 19 | #define cas_propertykey(classname, property) \ 20 | (((void)(NO && ((void)(( classname *)(nil)).property, NO)), # property)) 21 | 22 | // Path resolution 23 | #define CASAbsoluteFilePath(relativePath) \ 24 | _CASAbsoluteFilePath(__FILE__, relativePath) 25 | NSString *_CASAbsoluteFilePath(const char *currentFilePath, NSString *relativeFilePath); 26 | 27 | // Device versions 28 | NSUInteger CASKeyDeviceSystemMajorVersion(); 29 | 30 | BOOL CASDeviceSystemVersionIsEqualTo(NSString *systemVersion); 31 | 32 | BOOL CASDeviceSystemVersionIsGreaterThan(NSString *systemVersion); 33 | 34 | BOOL CASDeviceSystemVersionIsGreaterThanOrEqualTo(NSString *systemVersion); 35 | 36 | BOOL CASDeviceSystemVersionIsLessThan(NSString *systemVersion); 37 | 38 | BOOL CASDeviceSystemVersionIsLessThanOrEqualTo(NSString *systemVersion); -------------------------------------------------------------------------------- /Pods/Classy/Classy/Parser/CASUtilities.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASUtilities.m 3 | // 4 | // 5 | // Created by Jonas Budelmann on 22/10/13. 6 | // 7 | // 8 | 9 | #import "CASUtilities.h" 10 | 11 | NSString *_CASAbsoluteFilePath(const char *currentFilePath, NSString *relativeFilePath) { 12 | NSString *currentDirectory = [[NSString stringWithUTF8String:currentFilePath] stringByDeletingLastPathComponent]; 13 | return [currentDirectory stringByAppendingPathComponent:relativeFilePath]; 14 | } 15 | 16 | NSUInteger CASKeyDeviceSystemMajorVersion() { 17 | static NSUInteger _deviceSystemMajorVersion = -1; 18 | static dispatch_once_t onceToken; 19 | dispatch_once(&onceToken, ^{ 20 | _deviceSystemMajorVersion = [[[UIDevice.currentDevice.systemVersion componentsSeparatedByString:@"."] objectAtIndex:0] intValue]; 21 | }); 22 | return _deviceSystemMajorVersion; 23 | } 24 | 25 | BOOL CASDeviceSystemVersionIsEqualTo(NSString *systemVersion) { 26 | return [UIDevice.currentDevice.systemVersion compare:systemVersion options:NSNumericSearch] == NSOrderedSame; 27 | } 28 | 29 | BOOL CASDeviceSystemVersionIsGreaterThan(NSString *systemVersion) { 30 | return [UIDevice.currentDevice.systemVersion compare:systemVersion options:NSNumericSearch] == NSOrderedDescending; 31 | } 32 | 33 | BOOL CASDeviceSystemVersionIsGreaterThanOrEqualTo(NSString *systemVersion) { 34 | return [UIDevice.currentDevice.systemVersion compare:systemVersion options:NSNumericSearch] != NSOrderedAscending; 35 | } 36 | 37 | BOOL CASDeviceSystemVersionIsLessThan(NSString *systemVersion) { 38 | return [UIDevice.currentDevice.systemVersion compare:systemVersion options:NSNumericSearch] == NSOrderedAscending; 39 | } 40 | 41 | BOOL CASDeviceSystemVersionIsLessThanOrEqualTo(NSString *systemVersion) { 42 | return [UIDevice.currentDevice.systemVersion compare:systemVersion options:NSNumericSearch] != NSOrderedDescending; 43 | } 44 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Reflection/CASArgumentDescriptor.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASArgumentDescriptor.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 12/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | * Supported primitive argument types 13 | */ 14 | typedef NS_ENUM(NSUInteger, CASPrimitiveType) { 15 | CASPrimitiveTypeNone, 16 | CASPrimitiveTypeUnsupported, 17 | CASPrimitiveTypeBOOL, 18 | CASPrimitiveTypeDouble, 19 | CASPrimitiveTypeInteger, 20 | CASPrimitiveTypeCGPoint, 21 | CASPrimitiveTypeCGSize, 22 | CASPrimitiveTypeCGRect, 23 | CASPrimitiveTypeUIEdgeInsets, 24 | CASPrimitiveTypeUIOffset, 25 | CASPrimitiveTypeCGColorRef, 26 | }; 27 | 28 | 29 | 30 | @interface CASArgumentDescriptor : NSObject 31 | 32 | @property (nonatomic, strong, readonly) NSString *name; 33 | @property (nonatomic, strong, readonly) Class argumentClass; 34 | @property (nonatomic, assign, readonly) CASPrimitiveType primitiveType; 35 | @property (nonatomic, strong, readonly) NSDictionary *valuesByName; 36 | 37 | + (instancetype)argWithObjCType:(const char *)type; 38 | + (instancetype)argWithType:(NSString *)type; 39 | + (instancetype)argWithClass:(Class)aClass; 40 | + (instancetype)argWithValuesByName:(NSDictionary *)valuesByName; 41 | + (instancetype)argWithName:(NSString *)name valuesByName:(NSDictionary *)valuesByName; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Reflection/CASArgumentDescriptor.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASArgumentDescriptor.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 12/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASArgumentDescriptor.h" 10 | #import 11 | 12 | @interface CASArgumentDescriptor () 13 | 14 | @property (nonatomic, strong, readwrite) NSString *name; 15 | @property (nonatomic, strong, readwrite) Class argumentClass; 16 | @property (nonatomic, strong, readwrite) NSString *type; 17 | @property (nonatomic, strong, readwrite) NSDictionary *valuesByName; 18 | 19 | @end 20 | 21 | @implementation CASArgumentDescriptor 22 | 23 | + (instancetype)argWithObjCType:(const char *)type { 24 | CASArgumentDescriptor *descriptor = CASArgumentDescriptor.new; 25 | descriptor.type = [NSString stringWithUTF8String:type]; 26 | return descriptor; 27 | } 28 | 29 | + (instancetype)argWithType:(NSString *)type { 30 | CASArgumentDescriptor *descriptor = CASArgumentDescriptor.new; 31 | descriptor.type = type; 32 | return descriptor; 33 | } 34 | 35 | + (instancetype)argWithClass:(Class)aClass { 36 | CASArgumentDescriptor *descriptor = CASArgumentDescriptor.new; 37 | descriptor.argumentClass = aClass; 38 | return descriptor; 39 | } 40 | 41 | + (instancetype)argWithValuesByName:(NSDictionary *)valuesByName { 42 | CASArgumentDescriptor *descriptor = CASArgumentDescriptor.new; 43 | descriptor.type = [NSString stringWithUTF8String:@encode(NSInteger)]; 44 | descriptor.valuesByName = valuesByName; 45 | return descriptor; 46 | } 47 | 48 | + (instancetype)argWithName:(NSString *)name valuesByName:(NSDictionary *)valuesByName { 49 | CASArgumentDescriptor *descriptor = [self argWithValuesByName:valuesByName]; 50 | descriptor.name = name; 51 | return descriptor; 52 | } 53 | 54 | - (CASPrimitiveType)primitiveType { 55 | if (!self.type.length) return CASPrimitiveTypeNone; 56 | 57 | // if char type assume it's a BOOL, since chars aren't very useful for styling 58 | BOOL isBOOL = self.type.length == 1 && ([self.type isEqualToString:@"c"] || [self.type isEqualToString:@"B"]); 59 | if (isBOOL) return CASPrimitiveTypeBOOL; 60 | 61 | // check for integer 62 | BOOL isInteger = self.type.length == 1 && ( 63 | [self.type isEqualToString:@"i"] // An int 64 | || [self.type isEqualToString:@"s"] // A short 65 | || [self.type isEqualToString:@"l"] // A longl is treated as a 32-bit quantity on 64-bit programs. 66 | || [self.type isEqualToString:@"q"] // A long long 67 | || [self.type isEqualToString:@"C"] // An unsigned char 68 | || [self.type isEqualToString:@"I"] // An unsigned int 69 | || [self.type isEqualToString:@"S"] // An unsigned short 70 | || [self.type isEqualToString:@"L"] // An unsigned long 71 | || [self.type isEqualToString:@"Q"]); // An unsigned long long 72 | if (isInteger) return CASPrimitiveTypeInteger; 73 | 74 | // check for double 75 | BOOL isDouble = self.type.length == 1 && ( 76 | [self.type isEqualToString:@"f"] // A float 77 | || [self.type isEqualToString:@"d"]); // A double 78 | if (isDouble) return CASPrimitiveTypeDouble; 79 | 80 | // check for structs 81 | if ([self.type hasPrefix:@"{CGSize"]) { 82 | return CASPrimitiveTypeCGSize; 83 | } else if ([self.type hasPrefix:@"{CGPoint"]) { 84 | return CASPrimitiveTypeCGPoint; 85 | } else if ([self.type hasPrefix:@"{CGRect"]) { 86 | return CASPrimitiveTypeCGRect; 87 | } else if ([self.type hasPrefix:@"{UIEdgeInsets"]) { 88 | return CASPrimitiveTypeUIEdgeInsets; 89 | } else if ([self.type hasPrefix:@"{UIOffset"]) { 90 | return CASPrimitiveTypeUIOffset; 91 | } else if ([self.type hasPrefix:@"^{CGColor"]) { 92 | return CASPrimitiveTypeCGColorRef; 93 | } 94 | 95 | return CASPrimitiveTypeUnsupported; 96 | } 97 | 98 | @end 99 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Reflection/CASObjectClassDescriptor.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASObjectClassDescriptor.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 30/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASPropertyDescriptor.h" 11 | 12 | @interface CASObjectClassDescriptor : NSObject 13 | 14 | /** 15 | * object class which receiver relates to 16 | */ 17 | @property (nonatomic, strong, readonly) Class objectClass; 18 | 19 | /** 20 | * view superclass descriptor 21 | */ 22 | @property (nonatomic, strong) CASObjectClassDescriptor *parent; 23 | 24 | /** 25 | * alternative names for view property keys 26 | */ 27 | @property (nonatomic, strong) NSDictionary *propertyKeyAliases; 28 | 29 | - (id)initWithClass:(Class)aClass; 30 | 31 | - (NSInvocation *)invocationForPropertyDescriptor:(CASPropertyDescriptor *)propertyDescriptor; 32 | 33 | - (CASPropertyDescriptor *)propertyDescriptorForKey:(NSString *)key; 34 | 35 | - (void)setArgumentDescriptors:(NSArray *)argumentDescriptors forPropertyKey:(NSString *)key; 36 | - (void)setArgumentDescriptors:(NSArray *)argumentDescriptors setter:(SEL)setter forPropertyKey:(NSString *)key; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Reflection/CASObjectClassDescriptor.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASObjectClassDescriptor.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 30/09/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASObjectClassDescriptor.h" 10 | #import "CASRuntimeExtensions.h" 11 | #import "NSString+CASAdditions.h" 12 | #import "CASUtilities.h" 13 | 14 | @interface CASObjectClassDescriptor () 15 | 16 | @property (nonatomic, strong, readwrite) Class objectClass; 17 | @property (nonatomic, strong) NSMutableDictionary *propertyDescriptorCache; 18 | 19 | @end 20 | 21 | @implementation CASObjectClassDescriptor 22 | 23 | - (id)initWithClass:(Class)aClass { 24 | self = [super init]; 25 | if (!self) return nil; 26 | 27 | self.objectClass = aClass; 28 | self.propertyDescriptorCache = NSMutableDictionary.new; 29 | 30 | return self; 31 | } 32 | 33 | #pragma mark - property descriptor support 34 | 35 | - (void)setArgumentDescriptors:(NSArray *)argumentDescriptors forPropertyKey:(NSString *)key { 36 | CASPropertyDescriptor *propertyDescriptor = [[CASPropertyDescriptor alloc] initWithKey:key argumentDescriptors:argumentDescriptors]; 37 | self.propertyDescriptorCache[propertyDescriptor.key] = propertyDescriptor; 38 | } 39 | 40 | - (void)setArgumentDescriptors:(NSArray *)argumentDescriptors setter:(SEL)setter forPropertyKey:(NSString *)key { 41 | CASPropertyDescriptor *propertyDescriptor = [[CASPropertyDescriptor alloc] initWithKey:key argumentDescriptors:argumentDescriptors setter:setter]; 42 | self.propertyDescriptorCache[propertyDescriptor.key] = propertyDescriptor; 43 | } 44 | 45 | - (NSInvocation *)invocationForPropertyDescriptor:(CASPropertyDescriptor *)propertyDescriptor { 46 | if (!propertyDescriptor) return nil; 47 | 48 | SEL selector = propertyDescriptor.setter; 49 | NSMethodSignature *methodSignature = [self.objectClass instanceMethodSignatureForSelector:selector]; 50 | if (!methodSignature) { 51 | CASLog(@"Selector '%@' not found. Class '%@'", NSStringFromSelector(selector), self.objectClass); 52 | return nil; 53 | } 54 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature]; 55 | [invocation setSelector:selector]; 56 | return invocation; 57 | } 58 | 59 | - (CASPropertyDescriptor *)propertyDescriptorForKey:(NSString *)key { 60 | // if property descriptor exists on this class descriptor. return it. 61 | NSString *propertyKey = self.propertyKeyAliases[key] ?: key; 62 | CASPropertyDescriptor *propertyDescriptor = self.propertyDescriptorCache[propertyKey]; 63 | if (propertyDescriptor) return propertyDescriptor; 64 | 65 | // if property descriptor exists on parent class descriptor. return it. 66 | propertyDescriptor = [self.parent propertyDescriptorForKey:key]; 67 | if (propertyDescriptor) return propertyDescriptor; 68 | 69 | // create property descriptor on this descriptor if has propertyKeyAlias 70 | // or if responds to property and superclass doesn't 71 | SEL propertySelector = NSSelectorFromString(propertyKey); 72 | 73 | if (self.propertyKeyAliases[propertyKey] 74 | || ([self.objectClass instancesRespondToSelector:propertySelector] && ![self.objectClass.superclass instancesRespondToSelector:propertySelector])) { 75 | 76 | objc_property_t property = class_getProperty(self.objectClass, [propertyKey UTF8String]); 77 | if (property != NULL) { 78 | cas_propertyAttributes *propertyAttributes = cas_copyPropertyAttributes(class_getProperty(self.objectClass, [propertyKey UTF8String])); 79 | 80 | NSArray *argumentDescriptors; 81 | if (propertyAttributes->objectClass) { 82 | argumentDescriptors = @[ 83 | [CASArgumentDescriptor argWithClass:propertyAttributes->objectClass] 84 | ]; 85 | } else { 86 | NSString *type = [NSString stringWithCString:propertyAttributes->type encoding:NSASCIIStringEncoding]; 87 | argumentDescriptors = @[ 88 | [CASArgumentDescriptor argWithType:type] 89 | ]; 90 | } 91 | 92 | propertyDescriptor = [[CASPropertyDescriptor alloc] initWithKey:propertyKey argumentDescriptors:argumentDescriptors setter:propertyAttributes->setter]; 93 | self.propertyDescriptorCache[propertyKey] = propertyDescriptor; 94 | 95 | free(propertyAttributes); 96 | return propertyDescriptor; 97 | } else { 98 | // TODO error 99 | CASLog(@"Property '%@' not found. Class '%@'", propertyKey, self.objectClass); 100 | } 101 | } 102 | 103 | return nil; 104 | } 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Reflection/CASPropertyDescriptor.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASPropertyDescriptor.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 12/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CASArgumentDescriptor.h" 11 | 12 | @interface CASPropertyDescriptor : NSObject 13 | 14 | @property (nonatomic, strong, readonly) NSString *key; 15 | @property (nonatomic, strong, readonly) NSArray *argumentDescriptors; 16 | @property (nonatomic, assign, readonly) SEL setter; 17 | 18 | - (id)initWithKey:(NSString *)key argumentDescriptors:(NSArray *)argumentDescriptors; 19 | - (id)initWithKey:(NSString *)key argumentDescriptors:(NSArray *)argumentDescriptors setter:(SEL)setter; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Reflection/CASPropertyDescriptor.m: -------------------------------------------------------------------------------- 1 | // 2 | // CASPropertyDescriptor.m 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 12/10/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "CASPropertyDescriptor.h" 10 | #import "NSString+CASAdditions.h" 11 | 12 | @interface CASPropertyDescriptor () 13 | 14 | @property (nonatomic, strong, readwrite) NSString *key; 15 | @property (nonatomic, strong, readwrite) NSArray *argumentDescriptors; 16 | @property (nonatomic, assign, readwrite) SEL setter; 17 | 18 | @end 19 | 20 | @implementation CASPropertyDescriptor 21 | 22 | - (id)initWithKey:(NSString *)key argumentDescriptors:(NSArray *)argumentDescriptors { 23 | self = [super init]; 24 | if (!self) return nil; 25 | 26 | self.key = key; 27 | self.argumentDescriptors = argumentDescriptors; 28 | NSString *setterString = [NSString stringWithFormat:@"set%@:", [key cas_stringByCapitalizingFirstLetter]]; 29 | self.setter = NSSelectorFromString(setterString); 30 | 31 | return self; 32 | } 33 | 34 | - (id)initWithKey:(NSString *)key argumentDescriptors:(NSArray *)argumentDescriptors setter:(SEL)setter { 35 | self = [super init]; 36 | if (!self) return nil; 37 | 38 | self.key = key; 39 | self.argumentDescriptors = argumentDescriptors; 40 | self.setter = setter; 41 | 42 | return self; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Pods/Classy/Classy/Reflection/CASRuntimeExtensions.h: -------------------------------------------------------------------------------- 1 | // 2 | // CASRuntimeExtensions.h 3 | // Classy 4 | // 5 | // Created by Jonas Budelmann on 14/10/13. 6 | // Renamespaced version of EXTRuntimeExtensions 7 | // 8 | 9 | // 10 | // EXTRuntimeExtensions.h 11 | // extobjc 12 | // 13 | // Created by Justin Spahr-Summers on 2011-03-05. 14 | // Copyright (C) 2012 Justin Spahr-Summers. 15 | // Released under the MIT license. 16 | // 17 | 18 | #import 19 | 20 | /** 21 | * Describes the memory management policy of a property. 22 | */ 23 | typedef enum { 24 | /** 25 | * The value is assigned. 26 | */ 27 | cas_propertyMemoryManagementPolicyAssign = 0, 28 | 29 | /** 30 | * The value is retained. 31 | */ 32 | cas_propertyMemoryManagementPolicyRetain, 33 | 34 | /** 35 | * The value is copied. 36 | */ 37 | cas_propertyMemoryManagementPolicyCopy 38 | } cas_propertyMemoryManagementPolicy; 39 | 40 | /** 41 | * Describes the attributes and type information of a property. 42 | */ 43 | typedef struct { 44 | /** 45 | * Whether this property was declared with the \c readonly attribute. 46 | */ 47 | BOOL readonly; 48 | 49 | /** 50 | * Whether this property was declared with the \c nonatomic attribute. 51 | */ 52 | BOOL nonatomic; 53 | 54 | /** 55 | * Whether the property is a weak reference. 56 | */ 57 | BOOL weak; 58 | 59 | /** 60 | * Whether the property is eligible for garbage collection. 61 | */ 62 | BOOL canBeCollected; 63 | 64 | /** 65 | * Whether this property is defined with \c \@dynamic. 66 | */ 67 | BOOL dynamic; 68 | 69 | /** 70 | * The memory management policy for this property. This will always be 71 | * #cas_propertyMemoryManagementPolicyAssign if #readonly is \c YES. 72 | */ 73 | cas_propertyMemoryManagementPolicy memoryManagementPolicy; 74 | 75 | /** 76 | * The selector for the getter of this property. This will reflect any 77 | * custom \c getter= attribute provided in the property declaration, or the 78 | * inferred getter name otherwise. 79 | */ 80 | SEL getter; 81 | 82 | /** 83 | * The selector for the setter of this property. This will reflect any 84 | * custom \c setter= attribute provided in the property declaration, or the 85 | * inferred setter name otherwise. 86 | * 87 | * @note If #readonly is \c YES, this value will represent what the setter 88 | * \e would be, if the property were writable. 89 | */ 90 | SEL setter; 91 | 92 | /** 93 | * The backing instance variable for this property, or \c NULL if \c 94 | * \c @synthesize was not used, and therefore no instance variable exists. This 95 | * would also be the case if the property is implemented dynamically. 96 | */ 97 | const char *ivar; 98 | 99 | /** 100 | * If this property is defined as being an instance of a specific class, 101 | * this will be the class object representing it. 102 | * 103 | * This will be \c nil if the property was defined as type \c id, if the 104 | * property is not of an object type, or if the class could not be found at 105 | * runtime. 106 | */ 107 | Class objectClass; 108 | 109 | /** 110 | * The type encoding for the value of this property. This is the type as it 111 | * would be returned by the \c \@encode() directive. 112 | */ 113 | char type[]; 114 | } cas_propertyAttributes; 115 | 116 | /** 117 | * Returns a pointer to a structure containing information about \a property. 118 | * You must \c free() the returned pointer. Returns \c NULL if there is an error 119 | * obtaining information from \a property. 120 | */ 121 | cas_propertyAttributes *cas_copyPropertyAttributes (objc_property_t property); 122 | -------------------------------------------------------------------------------- /Pods/Classy/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Jonas Budelmann 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Pods/Classy/README.md: -------------------------------------------------------------------------------- 1 | #Classy [![Build Status](https://travis-ci.org/cloudkite/Classy.png?branch=master)](https://travis-ci.org/cloudkite/Classy) [![Coverage Status](https://coveralls.io/repos/cloudkite/Classy/badge.png)](https://coveralls.io/r/cloudkite/Classy) 2 | 3 | Not CSS. Instead of trying to force UIKit to fit CSS syntax, properties, conventions and constructs. Classy is a stylesheet system built from the ground up to work in harmony with UIKit. It borrows the best ideas from CSS and introduces new syntax, conventions and constructs where appropriate. 4 | 5 | Plays nice with Interface Builder and views created in code. 6 | 7 | For detailed usage docs visit [classy.as](http://classy.as/) 8 | 9 | ##Supports UIAppearance 10 | Classy supports all [UIAppearance properties and methods](https://github.com/cloudkite/Classy/blob/master/Tests/UIAppearance-setters.md) and much more. But instead of being limited to `+appearanceWhenContainedIn:` and `+appearance`, 11 | Classy gives you much greater control over which views are styled and with what values. 12 | 13 | ##Example Stylesheets 14 | 15 | Classy features a very flexible, nestable syntax. 16 | Classy makes `{` `}` `:` `;` all optional so you can choose a style that suits you. It also saves you from worrying about small syntax mistakes like accidentally forgetting to end a line with a `;` 17 | 18 | You can use `{` `}` `:` `;` to delimit your stylesheets 19 | 20 | ```Scala 21 | @import "other_stylesheet.cas"; 22 | 23 | $mainColor = #e1e1e1; 24 | 25 | // Supports your custom UIView subclasses 26 | MYCustomView { 27 | background-color: $mainColor; 28 | title-insets: 5, 10, 5, 10; 29 | > UIProgressView.tinted { 30 | progress-tint-color: rgb(200, 155, 110, 0.6); 31 | track-tint-color: yellow; 32 | } 33 | } 34 | 35 | /* 36 | * Supports Single or Multi-line comments 37 | */ 38 | ^UIButton.warning, UIView.warning ^UIButton { 39 | title-color[state:highlighted]: #e3e3e3; 40 | } 41 | ``` 42 | 43 | **OR** you can use whitespace to delimit your sytlesheets 44 | 45 | ```Scala 46 | @import "other_stylesheet.cas" 47 | 48 | $mainColor = #e1e1e1 49 | 50 | // Supports your custom UIView subclasses 51 | MYCustomView 52 | background-color $mainColor 53 | title-insets 5, 10, 5, 10 54 | > UIProgressView.tinted 55 | progress-tint-color rgb(200, 155, 110, 0.6) 56 | track-tint-color yellow 57 | 58 | /* 59 | * Supports Single or Multi-line comments 60 | */ 61 | ^UIButton.warning, UIView.warning ^UIButton 62 | title-color[state:highlighted] #e3e3e3 63 | ``` 64 | 65 | ## Live Reload 66 | Live reload can dramatically speed up your development time, with live reload enabled you can instantenously see your stylesheet changes. Without having to rebuild and navigate back to the same spot within your app. 67 | 68 | For more details about these features and more visit [classy.as](http://classy.as/) 69 | 70 | ## Inspiration 71 | - Syntax inspired by [stylus](http://learnboost.github.io/stylus/) 72 | - Property reflection [Mantle](https://github.com/github/mantle) 73 | 74 | -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/ClassyLiveLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 16/12/13. 3 | // Copyright (c) 2013 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import "UIView+ClassyLayoutProperties.h" 7 | #import "SHPAbstractView.h" 8 | #import "SHPAbstractTableViewCell.h" 9 | #import "SHPAbstractCollectionViewCell.h" -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/SHPAbstractCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 13/02/14. 3 | // Copyright (c) 2014 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import 7 | 8 | 9 | @interface SHPAbstractCollectionViewCell : UICollectionViewCell 10 | 11 | // You must override these methods in subclasses 12 | 13 | // Override this method and add all subviews to the contentView in it 14 | - (void)addSubviews; 15 | 16 | // Override this method and use the mas_updateConstraints... methods to add constraints 17 | // It's important to use the 'update' methods as this may be called multiple times. 18 | - (void)defineLayout; 19 | 20 | 21 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/SHPAbstractCollectionViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 13/02/14. 3 | // Copyright (c) 2014 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import "SHPAbstractCollectionViewCell.h" 7 | #import "UIView+ClassyLayoutProperties.h" 8 | 9 | @implementation SHPAbstractCollectionViewCell 10 | 11 | - (id)initWithFrame:(CGRect)frame { 12 | if (self = [super initWithFrame:frame]) { 13 | [self addSubviews]; 14 | [UIView recursivelyUpdateStylingImmediately:self]; 15 | [self defineLayout]; 16 | } 17 | return self; 18 | } 19 | 20 | - (void)updateConstraints { 21 | [self defineLayout]; 22 | [super updateConstraints]; 23 | } 24 | 25 | - (void)addSubviews { 26 | NSAssert(NO, @"Must override"); 27 | } 28 | 29 | - (void)defineLayout { 30 | NSAssert(NO, @"Must override"); 31 | } 32 | 33 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/SHPAbstractScrollView.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 24/02/14. 3 | // Copyright (c) 2014 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import 7 | #import 8 | 9 | 10 | @interface SHPAbstractScrollView : UIScrollView 11 | 12 | // You must override these methods in subclasses 13 | 14 | /// Override this method and add all subviews in it 15 | - (void)addSubviews; 16 | 17 | /// Override this method and use the mas_updateConstraints... methods to add constraints 18 | /// It's important to use the 'update' methods as this may be called multiple times. 19 | - (void)defineLayout; 20 | 21 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/SHPAbstractScrollView.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 24/02/14. 3 | // Copyright (c) 2014 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import "SHPAbstractScrollView.h" 7 | #import "UIView+ClassyLayoutProperties.h" 8 | 9 | @implementation SHPAbstractScrollView 10 | 11 | - (id)initWithFrame:(CGRect)frame { 12 | self = [super initWithFrame:frame]; 13 | if (self) { 14 | [self addSubviews]; 15 | [UIView recursivelyUpdateStylingImmediately:self]; 16 | [self defineLayout]; 17 | } 18 | return self; 19 | } 20 | 21 | - (id)init { 22 | return [self initWithFrame:CGRectZero]; 23 | } 24 | 25 | - (void)updateConstraints { 26 | [self defineLayout]; 27 | [super updateConstraints]; 28 | } 29 | 30 | - (void)addSubviews { 31 | NSAssert(NO, @"Must override"); 32 | } 33 | 34 | - (void)defineLayout { 35 | NSAssert(NO, @"Must override"); 36 | } 37 | 38 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/SHPAbstractTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 13/02/14. 3 | // Copyright (c) 2014 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import 7 | 8 | 9 | @interface SHPAbstractTableViewCell : UITableViewCell 10 | 11 | // You must override these methods in subclasses 12 | 13 | // Override this method and add all subviews to the contentView in it 14 | - (void)addSubviews; 15 | 16 | // Override this method and use the mas_updateConstraints... methods to add constraints 17 | // It's important to use the 'update' methods as this may be called multiple times. 18 | - (void)defineLayout; 19 | 20 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/SHPAbstractTableViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 13/02/14. 3 | // Copyright (c) 2014 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import "UIView+ClassyLayoutProperties.h" 7 | #import "Classy.h" 8 | #import "SHPAbstractTableViewCell.h" 9 | 10 | @implementation SHPAbstractTableViewCell 11 | 12 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 13 | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 14 | if (self) { 15 | [self addSubviews]; 16 | [UIView recursivelyUpdateStylingImmediately:self]; 17 | [self defineLayout]; 18 | } 19 | return self; 20 | } 21 | 22 | - (void)updateConstraints { 23 | [self defineLayout]; 24 | [super updateConstraints]; 25 | } 26 | 27 | - (void)addSubviews { 28 | NSAssert(NO, @"Must override"); 29 | } 30 | 31 | - (void)defineLayout { 32 | NSAssert(NO, @"Must override"); 33 | } 34 | 35 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/SHPAbstractView.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 13/02/14. 3 | // Copyright (c) 2014 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import 7 | #import 8 | 9 | @interface SHPAbstractView : UIView 10 | 11 | // You must override these methods in subclasses 12 | 13 | /// Override this method and add all subviews in it 14 | - (void)addSubviews; 15 | 16 | /// Override this method and use the mas_updateConstraints... methods to add constraints 17 | /// It's important to use the 'update' methods as this may be called multiple times. 18 | - (void)defineLayout; 19 | 20 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/SHPAbstractView.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 13/02/14. 3 | // Copyright (c) 2014 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import "SHPAbstractView.h" 7 | #import "UIView+ClassyLayoutProperties.h" 8 | 9 | @implementation SHPAbstractView 10 | 11 | - (id)initWithFrame:(CGRect)frame { 12 | self = [super initWithFrame:frame]; 13 | if (self) { 14 | [self addSubviews]; 15 | [UIView recursivelyUpdateStylingImmediately:self]; 16 | [self defineLayout]; 17 | } 18 | return self; 19 | } 20 | 21 | - (id)init { 22 | return [self initWithFrame:CGRectZero]; 23 | } 24 | 25 | - (void)updateConstraints { 26 | [self defineLayout]; 27 | [super updateConstraints]; 28 | } 29 | 30 | - (void)addSubviews { 31 | NSAssert(NO, @"Must override"); 32 | } 33 | 34 | - (void)defineLayout { 35 | NSAssert(NO, @"Must override"); 36 | } 37 | 38 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/ClassyLiveLayout/UIView+ClassyLayoutProperties.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Ole Gammelgaard Poulsen on 15/12/13. 3 | // Copyright (c) 2013 SHAPE A/S. All rights reserved. 4 | // 5 | 6 | #import 7 | 8 | @interface UIView (ClassyLayoutProperties) 9 | 10 | @property(nonatomic, assign) UIEdgeInsets cas_margin; 11 | @property(nonatomic, assign) CGSize cas_size; 12 | 13 | // shorthand properties for setting only a single constant value 14 | @property(nonatomic, assign) CGFloat cas_sizeWidth; 15 | @property(nonatomic, assign) CGFloat cas_sizeHeight; 16 | 17 | @property(nonatomic, assign) CGFloat cas_marginTop; 18 | @property(nonatomic, assign) CGFloat cas_marginLeft; 19 | @property(nonatomic, assign) CGFloat cas_marginBottom; 20 | @property(nonatomic, assign) CGFloat cas_marginRight; 21 | 22 | + (void)recursivelyUpdateStylingImmediately:(UIView *)view; 23 | 24 | + (CGSize)sizeFromStylesheet; 25 | 26 | // Masonry shortcuts to make it easy to bind values to what is defined in classy stylesheet 27 | - (NSArray *)mas_updateConstraintsWithTopMarginRelativeToSuperview; 28 | - (NSArray *)mas_updateConstraintsWithLeftMarginRelativeToSuperview; 29 | - (NSArray *)mas_updateConstraintsWithBottomMarginRelativeToSuperview; 30 | - (NSArray *)mas_updateConstraintsWithRightMarginRelativeToSuperview; 31 | 32 | // Slightly more verbose shortcuts to bind to another view or attribute than the superview 33 | - (NSArray *)mas_updateConstraintsWithTopMarginRelativeTo:(id)attribute; 34 | - (NSArray *)mas_updateConstraintsWithLeftMarginRelativeTo:(id)attribute; 35 | - (NSArray *)mas_updateConstraintsWithBottomMarginRelativeTo:(id)attribute; 36 | - (NSArray *)mas_updateConstraintsWithRightMarginRelativeTo:(id)attribute; 37 | - (NSArray *)mas_updateConstraintsHeightFromStylesheet; 38 | - (NSArray *)mas_updateConstraintsWidthFromStylesheet; 39 | 40 | // Just a few simple shortcuts to be able to center in one line of code 41 | - (NSArray *)mas_updateConstraintsCenterX; 42 | - (NSArray *)mas_updateConstraintsCenterY; 43 | 44 | @end -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/LICENSE.md: -------------------------------------------------------------------------------- 1 | **Copyright (c) 2013, SHAPE A/S, http://www.shape.dk.** 2 | **All rights reserved.** 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | this software and associated documentation files (the "Software"), to deal in 6 | the Software without restriction, including without limitation the rights to 7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | the Software, and to permit persons to whom the Software is furnished to do so, 9 | subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/ClassyLiveLayout/README.md: -------------------------------------------------------------------------------- 1 | ![Gif showing editing layout constants results in real time layout updates](/images/ClassyLiveLayout1.gif) 2 | 3 | Iterate blazingly fast when defining view layouts by putting your AutoLayout constants in a stylesheet file with live reloading. No need to recompile and restart the simulator when you change a constant. 4 | 5 | Suplementary blogpost: http://codeblog.shape.dk/blog/2013/12/16/live-editing-layout-constants-using-classy/ 6 | 7 | This repository (and pod available through Cocoapods) contains the category `UIView+ClassyLayoutProperties` making it easy to define size and margin properties on views that can be set from a [Classy](http://classy.as) stylesheet and trigger `-updateConstraints` that can then easily be implemented using [Masonry](https://github.com/cloudkite/Masonry)'s `mas_updateConstraints:`. This pod also contains a number of convenient methods making it easy and declarative to define layouts with constants taken from the stylesheet. 8 | 9 | 10 | In your view's -updateConstraints method you define a layout like this: 11 | ``` obj-c 12 | // new shorthand notation to create constrains relative to the superview with constants from stylesheet 13 | [_blueBoxView mas_updateConstraintsWidthFromStylesheet]; 14 | [_blueBoxView mas_updateConstraintsHeightFromStylesheet]; 15 | [_blueBoxView mas_updateConstraintsWithTopMarginRelativeToSuperview]; 16 | // or we can specify another view to set margins relative to: 17 | [_blueBoxView mas_updateConstraintsWithLeftMarginRelativeTo:self]; 18 | ``` 19 | 20 | In the stylesheet we set the constants implicitly referenced in the above layout code. 21 | ``` 22 | UIView.blue-box { 23 | background-color: blue; 24 | size: 120 80; 25 | margin-top: 110; 26 | margin-left: 50; 27 | } 28 | ``` 29 | 30 | If you have set up live reloading in [Classy](http://classy.as) the view will immediately update when you change the size and margin in the stylesheet. The best way to get started is to check out the demo project included in this repo. 31 | 32 | There is also an example of how to use this with UITableViewCells and an abstract UICollectionView class that can be used to easily get this behavior in collection views. -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASArgumentDescriptor.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Reflection/CASArgumentDescriptor.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASDeviceOSVersionItem.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASDeviceOSVersionItem.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASDeviceSelector.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASDeviceSelector.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASDeviceSelectorItem.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASDeviceSelectorItem.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASDeviceTypeItem.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASDeviceTypeItem.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASExpressionSolver.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASExpressionSolver.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASInvocation.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASInvocation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASLexer.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASLexer.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASObjectClassDescriptor.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Reflection/CASObjectClassDescriptor.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASParser.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASParser.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASPropertyDescriptor.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Reflection/CASPropertyDescriptor.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASRuntimeExtensions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Reflection/CASRuntimeExtensions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASStyleNode.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASStyleNode.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASStyleProperty.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASStyleProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASStyleSelector.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASStyleSelector.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASStyleableItem.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/CASStyleableItem.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASStyler.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASStyler.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASTextAttributes.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASTextAttributes.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASToken.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASToken.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASUnitToken.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASUnitToken.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/CASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASUtilities.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/Classy.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Classy.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/NSObject+CASSwizzle.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/NSObject+CASSwizzle.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/NSRegularExpression+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/NSRegularExpression+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/NSString+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/NSString+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UIBarItem+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIBarItem+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UIColor+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIColor+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UINavigationBar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UINavigationBar+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UISlider+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UISlider+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UITabBar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UITabBar+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UITextField+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UITextField+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UIToolbar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIToolbar+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UIView+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIView+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Classy/UIViewController+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIViewController+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ClassyLiveLayout/ClassyLiveLayout.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/ClassyLiveLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ClassyLiveLayout/SHPAbstractCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/SHPAbstractCollectionViewCell.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ClassyLiveLayout/SHPAbstractScrollView.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/SHPAbstractScrollView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ClassyLiveLayout/SHPAbstractTableViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/SHPAbstractTableViewCell.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ClassyLiveLayout/SHPAbstractView.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/SHPAbstractView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ClassyLiveLayout/UIView+ClassyLayoutProperties.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/UIView+ClassyLayoutProperties.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASArgumentDescriptor.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Reflection/CASArgumentDescriptor.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASDeviceOSVersionItem.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASDeviceOSVersionItem.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASDeviceSelector.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASDeviceSelector.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASDeviceSelectorItem.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASDeviceSelectorItem.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASDeviceTypeItem.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASDeviceTypeItem.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASExpressionSolver.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASExpressionSolver.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASInvocation.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASInvocation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASLexer.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASLexer.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASObjectClassDescriptor.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Reflection/CASObjectClassDescriptor.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASParser.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASParser.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASPropertyDescriptor.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Reflection/CASPropertyDescriptor.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASRuntimeExtensions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Reflection/CASRuntimeExtensions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASStyleNode.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASStyleNode.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASStyleProperty.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASStyleProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASStyleSelector.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASStyleSelector.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASStyleableItem.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/CASStyleableItem.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASStyler.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASStyler.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASTextAttributes.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASTextAttributes.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASToken.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASToken.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASUnitToken.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASUnitToken.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/CASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Parser/CASUtilities.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/Classy.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Classy.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/NSObject+CASSwizzle.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/NSObject+CASSwizzle.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/NSRegularExpression+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/NSRegularExpression+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/NSString+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/NSString+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UIBarItem+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIBarItem+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UIColor+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIColor+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UINavigationBar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UINavigationBar+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UISlider+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UISlider+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UITabBar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UITabBar+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UITextField+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UITextField+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UIToolbar+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIToolbar+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UIView+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIView+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Classy/UIViewController+CASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Classy/Classy/Additions/UIViewController+CASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ClassyLiveLayout/ClassyLiveLayout.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/ClassyLiveLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ClassyLiveLayout/SHPAbstractCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/SHPAbstractCollectionViewCell.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ClassyLiveLayout/SHPAbstractScrollView.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/SHPAbstractScrollView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ClassyLiveLayout/SHPAbstractTableViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/SHPAbstractTableViewCell.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ClassyLiveLayout/SHPAbstractView.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/SHPAbstractView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ClassyLiveLayout/UIView+ClassyLayoutProperties.h: -------------------------------------------------------------------------------- 1 | ../../../ClassyLiveLayout/ClassyLiveLayout/UIView+ClassyLayoutProperties.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Classy (0.2.4) 3 | - ClassyLiveLayout (0.6.0): 4 | - Classy 5 | - Masonry 6 | - Masonry (0.6.1) 7 | 8 | DEPENDENCIES: 9 | - Classy (~> 0.2.4) 10 | - ClassyLiveLayout (~> 0.6.0) 11 | - Masonry (~> 0.6.1) 12 | 13 | SPEC CHECKSUMS: 14 | Classy: 8c8f835d51e20d25e9cce0d864fba5bf1cef6070 15 | ClassyLiveLayout: 264876c3a64dcc732e174796bdeaa40a6b7fff3b 16 | Masonry: 2cb49fd14d203d2db5ca6bb017135b235dde9980 17 | 18 | COCOAPODS: 0.36.0.rc.1 19 | -------------------------------------------------------------------------------- /Pods/Masonry/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASCompositeConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | /** 13 | * A group of MASConstraint objects 14 | */ 15 | @interface MASCompositeConstraint : MASConstraint 16 | 17 | /** 18 | * Creates a composite with a predefined array of children 19 | * 20 | * @param children child MASConstraints 21 | * 22 | * @return a composite constraint 23 | */ 24 | - (id)initWithChildren:(NSArray *)children; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraint+Private.h 3 | // Masonry 4 | // 5 | // Created by Nick Tymchenko on 29/04/14. 6 | // Copyright (c) 2014 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | 11 | @protocol MASConstraintDelegate; 12 | 13 | 14 | @interface MASConstraint () 15 | 16 | /** 17 | * Whether or not to check for an existing constraint instead of adding constraint 18 | */ 19 | @property (nonatomic, assign) BOOL updateExisting; 20 | 21 | /** 22 | * Usually MASConstraintMaker but could be a parent MASConstraint 23 | */ 24 | @property (nonatomic, weak) id delegate; 25 | 26 | /** 27 | * Based on a provided value type, is equal to calling: 28 | * NSNumber - setOffset: 29 | * NSValue with CGPoint - setPointOffset: 30 | * NSValue with CGSize - setSizeOffset: 31 | * NSValue with MASEdgeInsets - setInsets: 32 | */ 33 | - (void)setLayoutConstantWithValue:(NSValue *)value; 34 | 35 | @end 36 | 37 | 38 | @interface MASConstraint (Abstract) 39 | 40 | /** 41 | * Sets the constraint relation to given NSLayoutRelation 42 | * returns a block which accepts one of the following: 43 | * MASViewAttribute, UIView, NSValue, NSArray 44 | * see readme for more details. 45 | */ 46 | - (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation; 47 | 48 | /** 49 | * Override to set a custom chaining behaviour 50 | */ 51 | - (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute; 52 | 53 | @end 54 | 55 | 56 | @protocol MASConstraintDelegate 57 | 58 | /** 59 | * Notifies the delegate when the constraint needs to be replaced with another constraint. For example 60 | * A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks 61 | */ 62 | - (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint; 63 | 64 | - (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute; 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraintBuilder.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | typedef NS_OPTIONS(NSInteger, MASAttribute) { 13 | MASAttributeLeft = 1 << NSLayoutAttributeLeft, 14 | MASAttributeRight = 1 << NSLayoutAttributeRight, 15 | MASAttributeTop = 1 << NSLayoutAttributeTop, 16 | MASAttributeBottom = 1 << NSLayoutAttributeBottom, 17 | MASAttributeLeading = 1 << NSLayoutAttributeLeading, 18 | MASAttributeTrailing = 1 << NSLayoutAttributeTrailing, 19 | MASAttributeWidth = 1 << NSLayoutAttributeWidth, 20 | MASAttributeHeight = 1 << NSLayoutAttributeHeight, 21 | MASAttributeCenterX = 1 << NSLayoutAttributeCenterX, 22 | MASAttributeCenterY = 1 << NSLayoutAttributeCenterY, 23 | MASAttributeBaseline = 1 << NSLayoutAttributeBaseline, 24 | }; 25 | 26 | /** 27 | * Provides factory methods for creating MASConstraints. 28 | * Constraints are collected until they are ready to be installed 29 | * 30 | */ 31 | @interface MASConstraintMaker : NSObject 32 | 33 | /** 34 | * The following properties return a new MASViewConstraint 35 | * with the first item set to the makers associated view and the appropriate MASViewAttribute 36 | */ 37 | @property (nonatomic, strong, readonly) MASConstraint *left; 38 | @property (nonatomic, strong, readonly) MASConstraint *top; 39 | @property (nonatomic, strong, readonly) MASConstraint *right; 40 | @property (nonatomic, strong, readonly) MASConstraint *bottom; 41 | @property (nonatomic, strong, readonly) MASConstraint *leading; 42 | @property (nonatomic, strong, readonly) MASConstraint *trailing; 43 | @property (nonatomic, strong, readonly) MASConstraint *width; 44 | @property (nonatomic, strong, readonly) MASConstraint *height; 45 | @property (nonatomic, strong, readonly) MASConstraint *centerX; 46 | @property (nonatomic, strong, readonly) MASConstraint *centerY; 47 | @property (nonatomic, strong, readonly) MASConstraint *baseline; 48 | 49 | /** 50 | * Returns a block which creates a new MASCompositeConstraint with the first item set 51 | * to the makers associated view and children corresponding to the set bits in the 52 | * MASAttribute parameter. Combine multiple attributes via binary-or. 53 | */ 54 | @property (nonatomic, strong, readonly) MASConstraint *(^attributes)(MASAttribute attrs); 55 | 56 | /** 57 | * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeEdges 58 | * which generates the appropriate MASViewConstraint children (top, left, bottom, right) 59 | * with the first item set to the makers associated view 60 | */ 61 | @property (nonatomic, strong, readonly) MASConstraint *edges; 62 | 63 | /** 64 | * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeSize 65 | * which generates the appropriate MASViewConstraint children (width, height) 66 | * with the first item set to the makers associated view 67 | */ 68 | @property (nonatomic, strong, readonly) MASConstraint *size; 69 | 70 | /** 71 | * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeCenter 72 | * which generates the appropriate MASViewConstraint children (centerX, centerY) 73 | * with the first item set to the makers associated view 74 | */ 75 | @property (nonatomic, strong, readonly) MASConstraint *center; 76 | 77 | /** 78 | * Whether or not to check for an existing constraint instead of adding constraint 79 | */ 80 | @property (nonatomic, assign) BOOL updateExisting; 81 | 82 | /** 83 | * Whether or not to remove existing constraints prior to installing 84 | */ 85 | @property (nonatomic, assign) BOOL removeExisting; 86 | 87 | /** 88 | * initialises the maker with a default view 89 | * 90 | * @param view any MASConstrait are created with this view as the first item 91 | * 92 | * @return a new MASConstraintMaker 93 | */ 94 | - (id)initWithView:(MAS_VIEW *)view; 95 | 96 | /** 97 | * Calls install method on any MASConstraints which have been created by this maker 98 | * 99 | * @return an array of all the installed MASConstraints 100 | */ 101 | - (NSArray *)install; 102 | 103 | - (MASConstraint * (^)(dispatch_block_t))group; 104 | 105 | @end 106 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * When you are debugging or printing the constraints attached to a view this subclass 13 | * makes it easier to identify which constraints have been created via Masonry 14 | */ 15 | @interface MASLayoutConstraint : NSLayoutConstraint 16 | 17 | /** 18 | * a key to associate with this constraint 19 | */ 20 | @property (nonatomic, strong) id mas_key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASLayoutConstraint.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASLayoutConstraint.h" 10 | 11 | @implementation MASLayoutConstraint 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASAttribute.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * An immutable tuple which stores the view and the related NSLayoutAttribute. 13 | * Describes part of either the left or right hand side of a constraint equation 14 | */ 15 | @interface MASViewAttribute : NSObject 16 | 17 | /** 18 | * The view which the reciever relates to 19 | */ 20 | @property (nonatomic, weak, readonly) MAS_VIEW *view; 21 | 22 | /** 23 | * The attribute which the reciever relates to 24 | */ 25 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute; 26 | 27 | /** 28 | * The designated initializer. 29 | */ 30 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute; 31 | 32 | /** 33 | * Determine whether the layoutAttribute is a size attribute 34 | * 35 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight 36 | */ 37 | - (BOOL)isSizeAttribute; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASAttribute.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | 11 | @implementation MASViewAttribute 12 | 13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute { 14 | self = [super init]; 15 | if (!self) return nil; 16 | 17 | _view = view; 18 | _layoutAttribute = layoutAttribute; 19 | 20 | return self; 21 | } 22 | 23 | - (BOOL)isSizeAttribute { 24 | return self.layoutAttribute == NSLayoutAttributeWidth 25 | || self.layoutAttribute == NSLayoutAttributeHeight; 26 | } 27 | 28 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute { 29 | if ([viewAttribute isKindOfClass:self.class]) { 30 | return self.view == viewAttribute.view 31 | && self.layoutAttribute == viewAttribute.layoutAttribute; 32 | } 33 | return [super isEqual:viewAttribute]; 34 | } 35 | 36 | - (NSUInteger)hash { 37 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute; 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | #import "MASConstraint.h" 11 | #import "MASLayoutConstraint.h" 12 | #import "MASUtilities.h" 13 | 14 | /** 15 | * A single constraint. 16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view 17 | */ 18 | @interface MASViewConstraint : MASConstraint 19 | 20 | /** 21 | * First item/view and first attribute of the NSLayoutConstraint 22 | */ 23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute; 24 | 25 | /** 26 | * Second item/view and second attribute of the NSLayoutConstraint 27 | */ 28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute; 29 | 30 | /** 31 | * initialises the MASViewConstraint with the first part of the equation 32 | * 33 | * @param firstViewAttribute view.mas_left, view.mas_width etc. 34 | * 35 | * @return a new view constraint 36 | */ 37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute; 38 | 39 | /** 40 | * Returns all MASViewConstraints installed with this view as a first item. 41 | * 42 | * @param view A view to retrieve constraints for. 43 | * 44 | * @return An array of MASViewConstraints. 45 | */ 46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Masonry.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "View+MASAdditions.h" 11 | #import "View+MASShorthandAdditions.h" 12 | #import "NSArray+MASAdditions.h" 13 | #import "NSArray+MASShorthandAdditions.h" 14 | #import "MASConstraint.h" 15 | #import "MASCompositeConstraint.h" 16 | #import "MASViewAttribute.h" 17 | #import "MASViewConstraint.h" 18 | #import "MASConstraintMaker.h" 19 | #import "MASLayoutConstraint.h" 20 | #import "NSLayoutConstraint+MASDebugAdditions.h" 21 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASAdditions.h 3 | // 4 | // 5 | // Created by Daniel Hammond on 11/26/13. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | @interface NSArray (MASAdditions) 14 | 15 | /** 16 | * Creates a MASConstraintMaker with each view in the callee. 17 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing on each view 18 | * 19 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 20 | * 21 | * @return Array of created MASConstraints 22 | */ 23 | - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block; 24 | 25 | /** 26 | * Creates a MASConstraintMaker with each view in the callee. 27 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view. 28 | * If an existing constraint exists then it will be updated instead. 29 | * 30 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 31 | * 32 | * @return Array of created/updated MASConstraints 33 | */ 34 | - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block; 35 | 36 | /** 37 | * Creates a MASConstraintMaker with each view in the callee. 38 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view. 39 | * All constraints previously installed for the views will be removed. 40 | * 41 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 42 | * 43 | * @return Array of created/updated MASConstraints 44 | */ 45 | - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block; 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSArray+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASAdditions.m 3 | // 4 | // 5 | // Created by Daniel Hammond on 11/26/13. 6 | // 7 | // 8 | 9 | #import "NSArray+MASAdditions.h" 10 | #import "View+MASAdditions.h" 11 | 12 | @implementation NSArray (MASAdditions) 13 | 14 | - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block { 15 | NSMutableArray *constraints = [NSMutableArray array]; 16 | for (MAS_VIEW *view in self) { 17 | NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views"); 18 | [constraints addObjectsFromArray:[view mas_makeConstraints:block]]; 19 | } 20 | return constraints; 21 | } 22 | 23 | - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block { 24 | NSMutableArray *constraints = [NSMutableArray array]; 25 | for (MAS_VIEW *view in self) { 26 | NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views"); 27 | [constraints addObjectsFromArray:[view mas_updateConstraints:block]]; 28 | } 29 | return constraints; 30 | } 31 | 32 | - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block { 33 | NSMutableArray *constraints = [NSMutableArray array]; 34 | for (MAS_VIEW *view in self) { 35 | NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views"); 36 | [constraints addObjectsFromArray:[view mas_remakeConstraints:block]]; 37 | } 38 | return constraints; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "NSArray+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand array additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface NSArray (MASShorthandAdditions) 18 | 19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 22 | 23 | @end 24 | 25 | @implementation NSArray (MASShorthandAdditions) 26 | 27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 28 | return [self mas_makeConstraints:block]; 29 | } 30 | 31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 32 | return [self mas_updateConstraints:block]; 33 | } 34 | 35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 36 | return [self mas_remakeConstraints:block]; 37 | } 38 | 39 | @end 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+MASDebugAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * makes debug and log output of NSLayoutConstraints more readable 13 | */ 14 | @interface NSLayoutConstraint (MASDebugAdditions) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | /** 14 | * Provides constraint maker block 15 | * and convience methods for creating MASViewAttribute which are view + NSLayoutAttribute pairs 16 | */ 17 | @interface MAS_VIEW (MASAdditions) 18 | 19 | /** 20 | * following properties return a new MASViewAttribute with current view and appropriate NSLayoutAttribute 21 | */ 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_left; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_top; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_right; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottom; 26 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_leading; 27 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_trailing; 28 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_width; 29 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_height; 30 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerX; 31 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerY; 32 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_baseline; 33 | @property (nonatomic, strong, readonly) MASViewAttribute *(^mas_attribute)(NSLayoutAttribute attr); 34 | 35 | /** 36 | * a key to associate with this view 37 | */ 38 | @property (nonatomic, strong) id mas_key; 39 | 40 | /** 41 | * Finds the closest common superview between this view and another view 42 | * 43 | * @param view other view 44 | * 45 | * @return returns nil if common superview could not be found 46 | */ 47 | - (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view; 48 | 49 | /** 50 | * Creates a MASConstraintMaker with the callee view. 51 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing 52 | * 53 | * @param block scope within which you can build up the constraints which you wish to apply to the view. 54 | * 55 | * @return Array of created MASConstraints 56 | */ 57 | - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block; 58 | 59 | /** 60 | * Creates a MASConstraintMaker with the callee view. 61 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing. 62 | * If an existing constraint exists then it will be updated instead. 63 | * 64 | * @param block scope within which you can build up the constraints which you wish to apply to the view. 65 | * 66 | * @return Array of created/updated MASConstraints 67 | */ 68 | - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block; 69 | 70 | /** 71 | * Creates a MASConstraintMaker with the callee view. 72 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing. 73 | * All constraints previously installed for the view will be removed. 74 | * 75 | * @param block scope within which you can build up the constraints which you wish to apply to the view. 76 | * 77 | * @return Array of created/updated MASConstraints 78 | */ 79 | - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block; 80 | 81 | @end 82 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/View+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+MASAdditions.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "View+MASAdditions.h" 10 | #import 11 | 12 | @implementation MAS_VIEW (MASAdditions) 13 | 14 | - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block { 15 | self.translatesAutoresizingMaskIntoConstraints = NO; 16 | MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self]; 17 | block(constraintMaker); 18 | return [constraintMaker install]; 19 | } 20 | 21 | - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block { 22 | self.translatesAutoresizingMaskIntoConstraints = NO; 23 | MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self]; 24 | constraintMaker.updateExisting = YES; 25 | block(constraintMaker); 26 | return [constraintMaker install]; 27 | } 28 | 29 | - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block { 30 | self.translatesAutoresizingMaskIntoConstraints = NO; 31 | MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self]; 32 | constraintMaker.removeExisting = YES; 33 | block(constraintMaker); 34 | return [constraintMaker install]; 35 | } 36 | 37 | #pragma mark - NSLayoutAttribute properties 38 | 39 | - (MASViewAttribute *)mas_left { 40 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeLeft]; 41 | } 42 | 43 | - (MASViewAttribute *)mas_top { 44 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeTop]; 45 | } 46 | 47 | - (MASViewAttribute *)mas_right { 48 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeRight]; 49 | } 50 | 51 | - (MASViewAttribute *)mas_bottom { 52 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeBottom]; 53 | } 54 | 55 | - (MASViewAttribute *)mas_leading { 56 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeLeading]; 57 | } 58 | 59 | - (MASViewAttribute *)mas_trailing { 60 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeTrailing]; 61 | } 62 | 63 | - (MASViewAttribute *)mas_width { 64 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeWidth]; 65 | } 66 | 67 | - (MASViewAttribute *)mas_height { 68 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeHeight]; 69 | } 70 | 71 | - (MASViewAttribute *)mas_centerX { 72 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeCenterX]; 73 | } 74 | 75 | - (MASViewAttribute *)mas_centerY { 76 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeCenterY]; 77 | } 78 | 79 | - (MASViewAttribute *)mas_baseline { 80 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeBaseline]; 81 | } 82 | 83 | - (MASViewAttribute *(^)(NSLayoutAttribute))mas_attribute 84 | { 85 | return ^(NSLayoutAttribute attr) { 86 | return [[MASViewAttribute alloc] initWithView:self layoutAttribute:attr]; 87 | }; 88 | } 89 | 90 | #pragma mark - associated properties 91 | 92 | - (id)mas_key { 93 | return objc_getAssociatedObject(self, @selector(mas_key)); 94 | } 95 | 96 | - (void)setMas_key:(id)key { 97 | objc_setAssociatedObject(self, @selector(mas_key), key, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 98 | } 99 | 100 | #pragma mark - heirachy 101 | 102 | - (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view { 103 | MAS_VIEW *closestCommonSuperview = nil; 104 | 105 | MAS_VIEW *secondViewSuperview = view; 106 | while (!closestCommonSuperview && secondViewSuperview) { 107 | MAS_VIEW *firstViewSuperview = self; 108 | while (!closestCommonSuperview && firstViewSuperview) { 109 | if (secondViewSuperview == firstViewSuperview) { 110 | closestCommonSuperview = secondViewSuperview; 111 | } 112 | firstViewSuperview = firstViewSuperview.superview; 113 | } 114 | secondViewSuperview = secondViewSuperview.superview; 115 | } 116 | return closestCommonSuperview; 117 | } 118 | 119 | @end 120 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "View+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand view additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface MAS_VIEW (MASShorthandAdditions) 18 | 19 | @property (nonatomic, strong, readonly) MASViewAttribute *left; 20 | @property (nonatomic, strong, readonly) MASViewAttribute *top; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *right; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *bottom; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *leading; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *trailing; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *width; 26 | @property (nonatomic, strong, readonly) MASViewAttribute *height; 27 | @property (nonatomic, strong, readonly) MASViewAttribute *centerX; 28 | @property (nonatomic, strong, readonly) MASViewAttribute *centerY; 29 | @property (nonatomic, strong, readonly) MASViewAttribute *baseline; 30 | @property (nonatomic, strong, readonly) MASViewAttribute *(^attribute)(NSLayoutAttribute attr); 31 | 32 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 33 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 34 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 35 | 36 | @end 37 | 38 | #define MAS_ATTR_FORWARD(attr) \ 39 | - (MASViewAttribute *)attr { \ 40 | return [self mas_##attr]; \ 41 | } 42 | 43 | @implementation MAS_VIEW (MASShorthandAdditions) 44 | 45 | MAS_ATTR_FORWARD(top); 46 | MAS_ATTR_FORWARD(left); 47 | MAS_ATTR_FORWARD(bottom); 48 | MAS_ATTR_FORWARD(right); 49 | MAS_ATTR_FORWARD(leading); 50 | MAS_ATTR_FORWARD(trailing); 51 | MAS_ATTR_FORWARD(width); 52 | MAS_ATTR_FORWARD(height); 53 | MAS_ATTR_FORWARD(centerX); 54 | MAS_ATTR_FORWARD(centerY); 55 | MAS_ATTR_FORWARD(baseline); 56 | 57 | - (MASViewAttribute *(^)(NSLayoutAttribute))attribute { 58 | return [self mas_attribute]; 59 | } 60 | 61 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 62 | return [self mas_makeConstraints:block]; 63 | } 64 | 65 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 66 | return [self mas_updateConstraints:block]; 67 | } 68 | 69 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 70 | return [self mas_remakeConstraints:block]; 71 | } 72 | 73 | @end 74 | 75 | #endif 76 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/freedom.xcuserdatad/xcschemes/Pods-Classy.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/freedom.xcuserdatad/xcschemes/Pods-ClassyLiveLayout.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/freedom.xcuserdatad/xcschemes/Pods-Masonry.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/freedom.xcuserdatad/xcschemes/Pods.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/freedom.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Pods-Classy.xcscheme 8 | 9 | isShown 10 | 11 | 12 | Pods-ClassyLiveLayout.xcscheme 13 | 14 | isShown 15 | 16 | 17 | Pods-Masonry.xcscheme 18 | 19 | isShown 20 | 21 | 22 | Pods.xcscheme 23 | 24 | isShown 25 | 26 | 27 | 28 | SuppressBuildableAutocreation 29 | 30 | 63C3677EDAA38335D2003FE8 31 | 32 | primary 33 | 34 | 35 | 86AF5E11D3C362953F4A8195 36 | 37 | primary 38 | 39 | 40 | 9D933AC8BDD1E4D275353630 41 | 42 | primary 43 | 44 | 45 | F325612B256525845C82F70A 46 | 47 | primary 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-Classy/Pods-Classy-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-Classy.xcconfig" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Classy" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Classy" "${PODS_ROOT}/Headers/Public/ClassyLiveLayout" "${PODS_ROOT}/Headers/Public/Masonry" 4 | OTHER_LDFLAGS = ${PODS_CLASSY_OTHER_LDFLAGS} -ObjC 5 | PODS_ROOT = ${SRCROOT} 6 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-Classy/Pods-Classy-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Classy : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Classy 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-Classy/Pods-Classy-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-Classy/Pods-Classy.xcconfig: -------------------------------------------------------------------------------- 1 | PODS_CLASSY_OTHER_LDFLAGS = -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ClassyLiveLayout/Pods-ClassyLiveLayout-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-ClassyLiveLayout.xcconfig" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ClassyLiveLayout" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Classy" "${PODS_ROOT}/Headers/Public/ClassyLiveLayout" "${PODS_ROOT}/Headers/Public/Masonry" 4 | OTHER_LDFLAGS = ${PODS_CLASSYLIVELAYOUT_OTHER_LDFLAGS} -ObjC 5 | PODS_ROOT = ${SRCROOT} 6 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ClassyLiveLayout/Pods-ClassyLiveLayout-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ClassyLiveLayout : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ClassyLiveLayout 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ClassyLiveLayout/Pods-ClassyLiveLayout-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ClassyLiveLayout/Pods-ClassyLiveLayout.xcconfig: -------------------------------------------------------------------------------- 1 | PODS_CLASSYLIVELAYOUT_OTHER_LDFLAGS = -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-Masonry/Pods-Masonry-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-Masonry.xcconfig" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Classy" "${PODS_ROOT}/Headers/Public/ClassyLiveLayout" "${PODS_ROOT}/Headers/Public/Masonry" 4 | OTHER_LDFLAGS = ${PODS_MASONRY_OTHER_LDFLAGS} -ObjC 5 | PODS_ROOT = ${SRCROOT} 6 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-Masonry/Pods-Masonry-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Masonry : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Masonry 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-Masonry/Pods-Masonry-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-Masonry/Pods-Masonry.xcconfig: -------------------------------------------------------------------------------- 1 | PODS_MASONRY_OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods/Pods-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## Classy 5 | 6 | The MIT License (MIT) 7 | 8 | Copyright (c) 2013 Jonas Budelmann 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy of 11 | this software and associated documentation files (the "Software"), to deal in 12 | the Software without restriction, including without limitation the rights to 13 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 14 | the Software, and to permit persons to whom the Software is furnished to do so, 15 | subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 22 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 23 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 24 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 25 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | 27 | 28 | ## ClassyLiveLayout 29 | 30 | **Copyright (c) 2013, SHAPE A/S, http://www.shape.dk.** 31 | **All rights reserved.** 32 | 33 | Permission is hereby granted, free of charge, to any person obtaining a copy of 34 | this software and associated documentation files (the "Software"), to deal in 35 | the Software without restriction, including without limitation the rights to 36 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 37 | the Software, and to permit persons to whom the Software is furnished to do so, 38 | subject to the following conditions: 39 | 40 | The above copyright notice and this permission notice shall be included in all 41 | copies or substantial portions of the Software. 42 | 43 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 44 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 45 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 46 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 47 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 48 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 49 | 50 | ## Masonry 51 | 52 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 53 | 54 | Permission is hereby granted, free of charge, to any person obtaining a copy 55 | of this software and associated documentation files (the "Software"), to deal 56 | in the Software without restriction, including without limitation the rights 57 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 58 | copies of the Software, and to permit persons to whom the Software is 59 | furnished to do so, subject to the following conditions: 60 | 61 | The above copyright notice and this permission notice shall be included in 62 | all copies or substantial portions of the Software. 63 | 64 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 65 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 66 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 67 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 68 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 69 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 70 | THE SOFTWARE. 71 | Generated by CocoaPods - http://cocoapods.org 72 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods/Pods-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | The MIT License (MIT) 18 | 19 | Copyright (c) 2013 Jonas Budelmann 20 | 21 | Permission is hereby granted, free of charge, to any person obtaining a copy of 22 | this software and associated documentation files (the "Software"), to deal in 23 | the Software without restriction, including without limitation the rights to 24 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 25 | the Software, and to permit persons to whom the Software is furnished to do so, 26 | subject to the following conditions: 27 | 28 | The above copyright notice and this permission notice shall be included in all 29 | copies or substantial portions of the Software. 30 | 31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 32 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 33 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 34 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 35 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 36 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 37 | 38 | Title 39 | Classy 40 | Type 41 | PSGroupSpecifier 42 | 43 | 44 | FooterText 45 | **Copyright (c) 2013, SHAPE A/S, http://www.shape.dk.** 46 | **All rights reserved.** 47 | 48 | Permission is hereby granted, free of charge, to any person obtaining a copy of 49 | this software and associated documentation files (the "Software"), to deal in 50 | the Software without restriction, including without limitation the rights to 51 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 52 | the Software, and to permit persons to whom the Software is furnished to do so, 53 | subject to the following conditions: 54 | 55 | The above copyright notice and this permission notice shall be included in all 56 | copies or substantial portions of the Software. 57 | 58 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 59 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 60 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 61 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 62 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 63 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 64 | Title 65 | ClassyLiveLayout 66 | Type 67 | PSGroupSpecifier 68 | 69 | 70 | FooterText 71 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 72 | 73 | Permission is hereby granted, free of charge, to any person obtaining a copy 74 | of this software and associated documentation files (the "Software"), to deal 75 | in the Software without restriction, including without limitation the rights 76 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 77 | copies of the Software, and to permit persons to whom the Software is 78 | furnished to do so, subject to the following conditions: 79 | 80 | The above copyright notice and this permission notice shall be included in 81 | all copies or substantial portions of the Software. 82 | 83 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 84 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 85 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 86 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 87 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 88 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 89 | THE SOFTWARE. 90 | Title 91 | Masonry 92 | Type 93 | PSGroupSpecifier 94 | 95 | 96 | FooterText 97 | Generated by CocoaPods - http://cocoapods.org 98 | Title 99 | 100 | Type 101 | PSGroupSpecifier 102 | 103 | 104 | StringsTable 105 | Acknowledgements 106 | Title 107 | Acknowledgements 108 | 109 | 110 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods/Pods-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods : NSObject 3 | @end 4 | @implementation PodsDummy_Pods 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods/Pods-environment.h: -------------------------------------------------------------------------------- 1 | 2 | // To check if a library is compiled with CocoaPods you 3 | // can use the `COCOAPODS` macro definition which is 4 | // defined in the xcconfigs so it is available in 5 | // headers also when they are imported in the client 6 | // project. 7 | 8 | 9 | // Classy 10 | #define COCOAPODS_POD_AVAILABLE_Classy 11 | #define COCOAPODS_VERSION_MAJOR_Classy 0 12 | #define COCOAPODS_VERSION_MINOR_Classy 2 13 | #define COCOAPODS_VERSION_PATCH_Classy 4 14 | 15 | // ClassyLiveLayout 16 | #define COCOAPODS_POD_AVAILABLE_ClassyLiveLayout 17 | #define COCOAPODS_VERSION_MAJOR_ClassyLiveLayout 0 18 | #define COCOAPODS_VERSION_MINOR_ClassyLiveLayout 6 19 | #define COCOAPODS_VERSION_PATCH_ClassyLiveLayout 0 20 | 21 | // Masonry 22 | #define COCOAPODS_POD_AVAILABLE_Masonry 23 | #define COCOAPODS_VERSION_MAJOR_Masonry 0 24 | #define COCOAPODS_VERSION_MINOR_Masonry 6 25 | #define COCOAPODS_VERSION_PATCH_Masonry 1 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods/Pods-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | install_resource() 10 | { 11 | case $1 in 12 | *.storyboard) 13 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 14 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 15 | ;; 16 | *.xib) 17 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 18 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 19 | ;; 20 | *.framework) 21 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 22 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 23 | echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 24 | rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 25 | ;; 26 | *.xcdatamodel) 27 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" 28 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" 29 | ;; 30 | *.xcdatamodeld) 31 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" 32 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" 33 | ;; 34 | *.xcmappingmodel) 35 | echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" 36 | xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" 37 | ;; 38 | *.xcassets) 39 | ;; 40 | /*) 41 | echo "$1" 42 | echo "$1" >> "$RESOURCES_TO_COPY" 43 | ;; 44 | *) 45 | echo "${PODS_ROOT}/$1" 46 | echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" 47 | ;; 48 | esac 49 | } 50 | 51 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 52 | if [[ "${ACTION}" == "install" ]]; then 53 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 54 | fi 55 | rm -f "$RESOURCES_TO_COPY" 56 | 57 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ `find . -name '*.xcassets' | wc -l` -ne 0 ] 58 | then 59 | case "${TARGETED_DEVICE_FAMILY}" in 60 | 1,2) 61 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 62 | ;; 63 | 1) 64 | TARGET_DEVICE_ARGS="--target-device iphone" 65 | ;; 66 | 2) 67 | TARGET_DEVICE_ARGS="--target-device ipad" 68 | ;; 69 | *) 70 | TARGET_DEVICE_ARGS="--target-device mac" 71 | ;; 72 | esac 73 | find "${PWD}" -name "*.xcassets" -print0 | xargs -0 actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 74 | fi 75 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods/Pods.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Classy" "${PODS_ROOT}/Headers/Public/ClassyLiveLayout" "${PODS_ROOT}/Headers/Public/Masonry" 3 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Classy" -isystem "${PODS_ROOT}/Headers/Public/ClassyLiveLayout" -isystem "${PODS_ROOT}/Headers/Public/Masonry" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"Pods-Classy" -l"Pods-ClassyLiveLayout" -l"Pods-Masonry" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" 5 | OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods/Pods.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Classy" "${PODS_ROOT}/Headers/Public/ClassyLiveLayout" "${PODS_ROOT}/Headers/Public/Masonry" 3 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Classy" -isystem "${PODS_ROOT}/Headers/Public/ClassyLiveLayout" -isystem "${PODS_ROOT}/Headers/Public/Masonry" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"Pods-Classy" -l"Pods-ClassyLiveLayout" -l"Pods-Masonry" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" 5 | OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LiveAutoLayout 2 | Live Editing Layout Constants Using Classy, Masonry and ClassyLiveLayout Demo 3 | --------------------------------------------------------------------------------