fixbraces 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. data/.gitignore +18 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +56 -0
  6. data/Rakefile +14 -0
  7. data/bin/fixbraces +36 -0
  8. data/features/cli.feature +13 -0
  9. data/features/fixbraces.feature +22 -0
  10. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/AppDelegate.h +13 -0
  11. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/AppDelegate.m +44 -0
  12. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/Default-568h@2x.png +0 -0
  13. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/Default.png +0 -0
  14. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/Default@2x.png +0 -0
  15. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/DetailViewController.h +18 -0
  16. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/DetailViewController.m +49 -0
  17. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/FixbracesTestProject-Info.plist +50 -0
  18. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/FixbracesTestProject-Prefix.pch +14 -0
  19. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/MasterViewController.h +12 -0
  20. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/MasterViewController.m +111 -0
  21. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/en.lproj/InfoPlist.strings +2 -0
  22. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/en.lproj/MainStoryboard.storyboard +103 -0
  23. data/features/fixtures/FixbracesTestProject/FixbracesTestProject/main.m +16 -0
  24. data/features/fixtures/FixbracesTestProject/FixbracesTestProject.xcodeproj/project.pbxproj +468 -0
  25. data/features/fixtures/FixbracesTestProject/FixbracesTestProjectTests/FixbracesTestProjectTests-Info.plist +22 -0
  26. data/features/fixtures/FixbracesTestProject/FixbracesTestProjectTests/FixbracesTestProjectTests.h +11 -0
  27. data/features/fixtures/FixbracesTestProject/FixbracesTestProjectTests/FixbracesTestProjectTests.m +30 -0
  28. data/features/fixtures/FixbracesTestProject/FixbracesTestProjectTests/en.lproj/InfoPlist.strings +2 -0
  29. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/AppDelegate.h +13 -0
  30. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/AppDelegate.m +38 -0
  31. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/Default-568h@2x.png +0 -0
  32. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/Default.png +0 -0
  33. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/Default@2x.png +0 -0
  34. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/DetailViewController.h +17 -0
  35. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/DetailViewController.m +45 -0
  36. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/FixbracesTestProject-Info.plist +50 -0
  37. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/FixbracesTestProject-Prefix.pch +14 -0
  38. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/MasterViewController.h +10 -0
  39. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/MasterViewController.m +99 -0
  40. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/en.lproj/InfoPlist.strings +2 -0
  41. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/en.lproj/MainStoryboard.storyboard +103 -0
  42. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject/main.m +15 -0
  43. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProject.xcodeproj/project.pbxproj +468 -0
  44. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProjectTests/FixbracesTestProjectTests-Info.plist +22 -0
  45. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProjectTests/FixbracesTestProjectTests.h +11 -0
  46. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProjectTests/FixbracesTestProjectTests.m +27 -0
  47. data/features/fixtures/FixbracesTestProjectExpected/FixbracesTestProjectTests/en.lproj/InfoPlist.strings +2 -0
  48. data/features/step_definitions/cli_steps.rb +7 -0
  49. data/features/step_definitions/fixbraces_steps.rb +55 -0
  50. data/features/step_definitions/touch +0 -0
  51. data/features/support/env.rb +16 -0
  52. data/fixbraces.gemspec +28 -0
  53. data/lib/fixbraces/version.rb +3 -0
  54. data/lib/fixbraces.rb +25 -0
  55. data/spec/fixbraces_spec.rb +67 -0
  56. data/spec/fixtures/expected/AppDelegate.h +13 -0
  57. data/spec/fixtures/expected/AppDelegate.m +38 -0
  58. data/spec/fixtures/expected/MasterViewController.h +10 -0
  59. data/spec/fixtures/expected/MasterViewController.m +99 -0
  60. data/spec/fixtures/input/AppDelegate.h +13 -0
  61. data/spec/fixtures/input/AppDelegate.m +44 -0
  62. data/spec/fixtures/input/MasterViewController.h +12 -0
  63. data/spec/fixtures/input/MasterViewController.m +111 -0
  64. data/spec/fixtures/sample_text.rb +112 -0
  65. metadata +234 -0
@@ -0,0 +1,50 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>en</string>
7
+ <key>CFBundleDisplayName</key>
8
+ <string>${PRODUCT_NAME}</string>
9
+ <key>CFBundleExecutable</key>
10
+ <string>${EXECUTABLE_NAME}</string>
11
+ <key>CFBundleIdentifier</key>
12
+ <string>com.junglecandy.${PRODUCT_NAME:rfc1034identifier}</string>
13
+ <key>CFBundleInfoDictionaryVersion</key>
14
+ <string>6.0</string>
15
+ <key>CFBundleName</key>
16
+ <string>${PRODUCT_NAME}</string>
17
+ <key>CFBundlePackageType</key>
18
+ <string>APPL</string>
19
+ <key>CFBundleShortVersionString</key>
20
+ <string>1.0</string>
21
+ <key>CFBundleSignature</key>
22
+ <string>????</string>
23
+ <key>CFBundleVersion</key>
24
+ <string>1.0</string>
25
+ <key>LSRequiresIPhoneOS</key>
26
+ <true/>
27
+ <key>UIMainStoryboardFile</key>
28
+ <string>MainStoryboard</string>
29
+ <key>UIRequiredDeviceCapabilities</key>
30
+ <array>
31
+ <string>armv7</string>
32
+ </array>
33
+ <key>UIStatusBarTintParameters</key>
34
+ <dict>
35
+ <key>UINavigationBar</key>
36
+ <dict>
37
+ <key>Style</key>
38
+ <string>UIBarStyleDefault</string>
39
+ <key>Translucent</key>
40
+ <false/>
41
+ </dict>
42
+ </dict>
43
+ <key>UISupportedInterfaceOrientations</key>
44
+ <array>
45
+ <string>UIInterfaceOrientationPortrait</string>
46
+ <string>UIInterfaceOrientationLandscapeLeft</string>
47
+ <string>UIInterfaceOrientationLandscapeRight</string>
48
+ </array>
49
+ </dict>
50
+ </plist>
@@ -0,0 +1,14 @@
1
+ //
2
+ // Prefix header for all source files of the 'FixbracesTestProject' target in the 'FixbracesTestProject' project
3
+ //
4
+
5
+ #import <Availability.h>
6
+
7
+ #ifndef __IPHONE_5_0
8
+ #warning "This project uses features only available in iOS SDK 5.0 and later."
9
+ #endif
10
+
11
+ #ifdef __OBJC__
12
+ #import <UIKit/UIKit.h>
13
+ #import <Foundation/Foundation.h>
14
+ #endif
@@ -0,0 +1,10 @@
1
+ //
2
+ // MasterViewController.h
3
+ // FixbracesTestProject
4
+ //
5
+ //
6
+
7
+ #import <UIKit/UIKit.h>
8
+
9
+ @interface MasterViewController : UITableViewController {}
10
+ @end
@@ -0,0 +1,99 @@
1
+ //
2
+ // MasterViewController.m
3
+ // FixbracesTestProject
4
+ //
5
+ //
6
+
7
+ #import "MasterViewController.h"
8
+
9
+ #import "DetailViewController.h"
10
+
11
+ @interface MasterViewController () {
12
+ NSMutableArray *_objects;
13
+ }
14
+ @end
15
+
16
+ @implementation MasterViewController
17
+
18
+ - (void)awakeFromNib {
19
+ [super awakeFromNib];
20
+ }
21
+
22
+ - (void)viewDidLoad {
23
+ [super viewDidLoad];
24
+ // Do any additional setup after loading the view, typically from a nib.
25
+ self.navigationItem.leftBarButtonItem = self.editButtonItem;
26
+
27
+ UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
28
+ self.navigationItem.rightBarButtonItem = addButton;
29
+ }
30
+
31
+ - (void)didReceiveMemoryWarning {
32
+ [super didReceiveMemoryWarning];
33
+ // Dispose of any resources that can be recreated.
34
+ }
35
+
36
+ - (void)insertNewObject:(id)sender {
37
+ if (!_objects) {
38
+ _objects = [[NSMutableArray alloc] init];
39
+ }
40
+ [_objects insertObject:[NSDate date] atIndex:0];
41
+ NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
42
+ [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
43
+ }
44
+
45
+ #pragma mark - Table View
46
+
47
+ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
48
+ return 1;
49
+ }
50
+
51
+ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
52
+ return _objects.count;
53
+ }
54
+
55
+ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
56
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
57
+
58
+ NSDate *object = _objects[indexPath.row];
59
+ cell.textLabel.text = [object description];
60
+ return cell;
61
+ }
62
+
63
+ - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
64
+ // Return NO if you do not want the specified item to be editable.
65
+ return YES;
66
+ }
67
+
68
+ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
69
+ if (editingStyle == UITableViewCellEditingStyleDelete) {
70
+ [_objects removeObjectAtIndex:indexPath.row];
71
+ [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
72
+ } else if (editingStyle == UITableViewCellEditingStyleInsert) {
73
+ // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
74
+ }
75
+ }
76
+
77
+ /*
78
+ // Override to support rearranging the table view.
79
+ - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
80
+ }
81
+ */
82
+
83
+ /*
84
+ // Override to support conditional rearranging of the table view.
85
+ - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
86
+ // Return NO if you do not want the item to be re-orderable.
87
+ return YES;
88
+ }
89
+ */
90
+
91
+ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
92
+ if ([[segue identifier] isEqualToString:@"showDetail"]) {
93
+ NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
94
+ NSDate *object = _objects[indexPath.row];
95
+ [[segue destinationViewController] setDetailItem:object];
96
+ }
97
+ }
98
+
99
+ @end
@@ -0,0 +1,2 @@
1
+ /* Localized versions of Info.plist keys */
2
+
@@ -0,0 +1,103 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="2524" systemVersion="12A217" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="3">
3
+ <dependencies>
4
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1863"/>
5
+ </dependencies>
6
+ <scenes>
7
+ <!--Navigation Controller-->
8
+ <scene sceneID="11">
9
+ <objects>
10
+ <navigationController id="3" sceneMemberID="viewController">
11
+ <navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="4">
12
+ <autoresizingMask key="autoresizingMask"/>
13
+ </navigationBar>
14
+ <connections>
15
+ <segue destination="12" kind="relationship" relationship="rootViewController" id="19"/>
16
+ </connections>
17
+ </navigationController>
18
+ <placeholder placeholderIdentifier="IBFirstResponder" id="10" sceneMemberID="firstResponder"/>
19
+ </objects>
20
+ <point key="canvasLocation" x="-1" y="64"/>
21
+ </scene>
22
+ <!--class Prefix:identifier Master View Controller - Master-->
23
+ <scene sceneID="18">
24
+ <objects>
25
+ <tableViewController storyboardIdentifier="" title="Master" id="12" customClass="MasterViewController" sceneMemberID="viewController">
26
+ <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="13">
27
+ <rect key="frame" x="0.0" y="64" width="320" height="416"/>
28
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
29
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
30
+ <prototypes>
31
+ <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="phq-AM-6qj" style="IBUITableViewCellStyleDefault" id="lJ0-d7-vTF">
32
+ <rect key="frame" x="0.0" y="22" width="320" height="44"/>
33
+ <autoresizingMask key="autoresizingMask"/>
34
+ <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
35
+ <rect key="frame" x="0.0" y="0.0" width="300" height="43"/>
36
+ <autoresizingMask key="autoresizingMask"/>
37
+ <subviews>
38
+ <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" lineBreakMode="tailTruncation" autoshrinkMode="none" baselineAdjustment="alignBaselines" text="Title" adjustsFontSizeToFit="NO" id="phq-AM-6qj">
39
+ <rect key="frame" x="10" y="0.0" width="280" height="43"/>
40
+ <autoresizingMask key="autoresizingMask"/>
41
+ <color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
42
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
43
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
44
+ </label>
45
+ </subviews>
46
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
47
+ </view>
48
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
49
+ <connections>
50
+ <segue destination="21" kind="push" identifier="showDetail" id="jZb-fq-zAk"/>
51
+ </connections>
52
+ </tableViewCell>
53
+ </prototypes>
54
+ <sections/>
55
+ <connections>
56
+ <outlet property="dataSource" destination="12" id="16"/>
57
+ <outlet property="delegate" destination="12" id="15"/>
58
+ </connections>
59
+ </tableView>
60
+ <navigationItem key="navigationItem" title="Master" id="36"/>
61
+ </tableViewController>
62
+ <placeholder placeholderIdentifier="IBFirstResponder" id="17" sceneMemberID="firstResponder"/>
63
+ </objects>
64
+ <point key="canvasLocation" x="459" y="64"/>
65
+ </scene>
66
+ <!--class Prefix:identifier Detail View Controller - Detail-->
67
+ <scene sceneID="24">
68
+ <objects>
69
+ <viewController storyboardIdentifier="" title="Detail" id="21" customClass="DetailViewController" sceneMemberID="viewController">
70
+ <view key="view" contentMode="scaleToFill" id="22">
71
+ <rect key="frame" x="0.0" y="64" width="320" height="416"/>
72
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
73
+ <subviews>
74
+ <label translatesAutoresizingMaskIntoConstraints="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" lineBreakMode="tailTruncation" autoshrinkMode="none" minimumFontSize="10" text="Detail view content goes here" textAlignment="center" id="27">
75
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
76
+ <nil key="highlightedColor"/>
77
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
78
+ <fontDescription key="fontDescription" type="system" size="system"/>
79
+ </label>
80
+ </subviews>
81
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
82
+ <constraints>
83
+ <constraint firstItem="27" firstAttribute="centerY" secondItem="22" secondAttribute="centerY" type="default" id="7cE-gL-0wv"/>
84
+ <constraint firstItem="27" firstAttribute="leading" secondItem="22" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="R0m-z7-TWk"/>
85
+ <constraint firstAttribute="trailing" secondItem="27" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="pRe-qY-58T"/>
86
+ </constraints>
87
+ </view>
88
+ <navigationItem key="navigationItem" title="Detail" id="26"/>
89
+ <connections>
90
+ <outlet property="detailDescriptionLabel" destination="27" id="28"/>
91
+ </connections>
92
+ </viewController>
93
+ <placeholder placeholderIdentifier="IBFirstResponder" id="23" sceneMemberID="firstResponder"/>
94
+ </objects>
95
+ <point key="canvasLocation" x="902" y="64"/>
96
+ </scene>
97
+ </scenes>
98
+ <simulatedMetricsContainer key="defaultSimulatedMetrics">
99
+ <simulatedStatusBarMetrics key="statusBar"/>
100
+ <simulatedOrientationMetrics key="orientation"/>
101
+ <simulatedScreenMetrics key="destination" type="retina4"/>
102
+ </simulatedMetricsContainer>
103
+ </document>
@@ -0,0 +1,15 @@
1
+ //
2
+ // main.m
3
+ // FixbracesTestProject
4
+ //
5
+ //
6
+
7
+ #import <UIKit/UIKit.h>
8
+
9
+ #import "AppDelegate.h"
10
+
11
+ int main(int argc, char *argv[]) {
12
+ @autoreleasepool {
13
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
14
+ }
15
+ }