lanekit 0.3.5 → 0.4.1

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 (26) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +14 -2
  3. data/lib/lanekit/generate/model.rb +2 -0
  4. data/lib/lanekit/generate/provider.rb +3 -3
  5. data/lib/lanekit/generate/tableviewcontroller.rb +110 -0
  6. data/lib/lanekit/generate.rb +1 -0
  7. data/lib/lanekit/version.rb +1 -1
  8. data/lib/lanekit.rb +15 -0
  9. data/lib/template/LKFeedCell.h.erb +16 -0
  10. data/lib/template/LKFeedCell.m.erb +148 -0
  11. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKAppDelegate.m +4 -6
  12. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/Base.lproj/Main_iPad.storyboard +3 -116
  13. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/Base.lproj/Main_iPhone.storyboard +4 -82
  14. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/placeholder@2x.png +0 -0
  15. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project.xcodeproj/project.pbxproj +4 -12
  16. data/lib/template/lanekit-ios-project/lanekit-ios-project.xcworkspace/xcuserdata/larry.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  17. data/lib/template/model.m.erb +8 -0
  18. data/lib/template/model_base.h.erb +2 -0
  19. data/lib/template/model_base.m.erb +30 -0
  20. data/lib/template/tvc.h.erb +14 -0
  21. data/lib/template/tvc.m.erb +158 -0
  22. metadata +14 -12
  23. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKDetailViewController.h +0 -12
  24. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKDetailViewController.m +0 -68
  25. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKMasterViewController.h +0 -13
  26. data/lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKMasterViewController.m +0 -122
@@ -1,7 +1,8 @@
1
1
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4451" systemVersion="13A461" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="rS3-R9-Ivy">
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4514" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="rS3-R9-Ivy">
3
3
  <dependencies>
4
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3676"/>
4
+ <deployment defaultVersion="1536" identifier="iOS"/>
5
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3746"/>
5
6
  </dependencies>
6
7
  <scenes>
7
8
  <!--Navigation Controller-->
@@ -11,89 +12,10 @@
11
12
  <navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="yXu-0R-QUA">
12
13
  <autoresizingMask key="autoresizingMask"/>
13
14
  </navigationBar>
14
- <connections>
15
- <segue destination="pGg-6v-bdr" kind="relationship" relationship="rootViewController" id="RxB-wf-QIq"/>
16
- </connections>
17
15
  </navigationController>
18
16
  <placeholder placeholderIdentifier="IBFirstResponder" id="eq9-QA-ai8" sceneMemberID="firstResponder"/>
19
17
  </objects>
20
- <point key="canvasLocation" x="-1" y="64"/>
21
- </scene>
22
- <!--class Prefix:identifier Master View Controller - Master-->
23
- <scene sceneID="VgW-fR-Quf">
24
- <objects>
25
- <tableViewController title="Master" id="pGg-6v-bdr" customClass="LKMasterViewController" 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="mLL-gJ-YKr">
27
- <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
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="2pz-XF-uhl" style="IBUITableViewCellStyleDefault" id="m0d-ak-lc9">
32
- <rect key="frame" x="0.0" y="86" 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="287" height="43"/>
36
- <autoresizingMask key="autoresizingMask"/>
37
- <subviews>
38
- <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="2pz-XF-uhl">
39
- <rect key="frame" x="15" y="0.0" width="270" height="43"/>
40
- <autoresizingMask key="autoresizingMask"/>
41
- <fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
42
- <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
43
- <color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
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="Ah7-4n-0Wa" kind="push" identifier="showDetail" id="jUr-3t-vfg"/>
51
- </connections>
52
- </tableViewCell>
53
- </prototypes>
54
- <sections/>
55
- <connections>
56
- <outlet property="dataSource" destination="pGg-6v-bdr" id="P41-gY-KXY"/>
57
- <outlet property="delegate" destination="pGg-6v-bdr" id="Y6K-Cp-Qkv"/>
58
- </connections>
59
- </tableView>
60
- <navigationItem key="navigationItem" title="Master" id="tQt-TN-PWz"/>
61
- </tableViewController>
62
- <placeholder placeholderIdentifier="IBFirstResponder" id="6Cn-md-YlS" 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="Cn3-H9-jdl">
68
- <objects>
69
- <viewController title="Detail" id="Ah7-4n-0Wa" customClass="LKDetailViewController" sceneMemberID="viewController">
70
- <view key="view" contentMode="scaleToFill" id="MMQ-IT-qOo">
71
- <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
72
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
73
- <subviews>
74
- <label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Detail view content goes here" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="Lei-5M-9Gs">
75
- <rect key="frame" x="20" y="276" width="280" height="17"/>
76
- <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
77
- <fontDescription key="fontDescription" type="system" size="system"/>
78
- <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
79
- <nil key="highlightedColor"/>
80
- </label>
81
- </subviews>
82
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
83
- <constraints>
84
- <constraint firstItem="Lei-5M-9Gs" firstAttribute="leading" secondItem="MMQ-IT-qOo" secondAttribute="leading" constant="20" symbolic="YES" id="62x-JV-TTJ"/>
85
- <constraint firstItem="Lei-5M-9Gs" firstAttribute="centerY" secondItem="MMQ-IT-qOo" secondAttribute="centerY" id="JzS-HC-Rnl"/>
86
- <constraint firstAttribute="trailing" secondItem="Lei-5M-9Gs" secondAttribute="trailing" constant="20" symbolic="YES" id="pXB-RP-Zz6"/>
87
- </constraints>
88
- </view>
89
- <navigationItem key="navigationItem" title="Detail" id="cra-N8-TIN"/>
90
- <connections>
91
- <outlet property="detailDescriptionLabel" destination="Lei-5M-9Gs" id="sCT-F7-F6f"/>
92
- </connections>
93
- </viewController>
94
- <placeholder placeholderIdentifier="IBFirstResponder" id="lrm-kH-fPn" sceneMemberID="firstResponder"/>
95
- </objects>
96
- <point key="canvasLocation" x="902" y="64"/>
18
+ <point key="canvasLocation" x="-305" y="-246"/>
97
19
  </scene>
98
20
  </scenes>
99
21
  <simulatedMetricsContainer key="defaultSimulatedMetrics">
@@ -14,10 +14,9 @@
14
14
  461263CF180B401300771CF8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 461263CE180B401300771CF8 /* main.m */; };
15
15
  461263D3180B401300771CF8 /* LKAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 461263D2180B401300771CF8 /* LKAppDelegate.m */; };
16
16
  461263D5180B401300771CF8 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 461263D4180B401300771CF8 /* Images.xcassets */; };
17
- 466CCC20181CA7010028AD47 /* LKDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 466CCC1D181CA7010028AD47 /* LKDetailViewController.m */; };
18
- 466CCC21181CA7010028AD47 /* LKMasterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 466CCC1F181CA7010028AD47 /* LKMasterViewController.m */; };
19
17
  466CCC26181CA7CA0028AD47 /* Main_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 466CCC22181CA7CA0028AD47 /* Main_iPad.storyboard */; };
20
18
  466CCC27181CA7CA0028AD47 /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 466CCC24181CA7CA0028AD47 /* Main_iPhone.storyboard */; };
19
+ 46B91530182595FA00DC8651 /* placeholder@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 46B9152F182595FA00DC8651 /* placeholder@2x.png */; };
21
20
  46C411901824966400B19AB2 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4688500518248B3600EDAAA8 /* SenTestingKit.framework */; };
22
21
  46C411911824966400B19AB2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 461263C2180B401300771CF8 /* Foundation.framework */; };
23
22
  46C411921824966400B19AB2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 461263C6180B401300771CF8 /* UIKit.framework */; };
@@ -49,13 +48,10 @@
49
48
  461263D4180B401300771CF8 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Resources/Images.xcassets; sourceTree = "<group>"; };
50
49
  461263E3180B401300771CF8 /* lanekit-ios-projectTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "lanekit-ios-projectTests-Info.plist"; sourceTree = "<group>"; };
51
50
  461263E5180B401300771CF8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
52
- 466CCC1C181CA7010028AD47 /* LKDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LKDetailViewController.h; path = Controllers/LKDetailViewController.h; sourceTree = "<group>"; };
53
- 466CCC1D181CA7010028AD47 /* LKDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LKDetailViewController.m; path = Controllers/LKDetailViewController.m; sourceTree = "<group>"; };
54
- 466CCC1E181CA7010028AD47 /* LKMasterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LKMasterViewController.h; path = Controllers/LKMasterViewController.h; sourceTree = "<group>"; };
55
- 466CCC1F181CA7010028AD47 /* LKMasterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LKMasterViewController.m; path = Controllers/LKMasterViewController.m; sourceTree = "<group>"; };
56
51
  466CCC23181CA7CA0028AD47 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Resources/Base.lproj/Main_iPad.storyboard; sourceTree = "<group>"; };
57
52
  466CCC25181CA7CA0028AD47 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Resources/Base.lproj/Main_iPhone.storyboard; sourceTree = "<group>"; };
58
53
  4688500518248B3600EDAAA8 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
54
+ 46B9152F182595FA00DC8651 /* placeholder@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "placeholder@2x.png"; path = "Resources/placeholder@2x.png"; sourceTree = "<group>"; };
59
55
  46C4118F1824966400B19AB2 /* lanekit-ios-projectTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "lanekit-ios-projectTests.octest"; sourceTree = BUILT_PRODUCTS_DIR; };
60
56
  46C411A41824995C00B19AB2 /* lanekit-ios-projectTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "lanekit-ios-projectTests.m"; sourceTree = "<group>"; };
61
57
  46C411A618249A9600B19AB2 /* lanekit-ios-projectTests-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "lanekit-ios-projectTests-Prefix.pch"; sourceTree = "<group>"; };
@@ -193,10 +189,6 @@
193
189
  children = (
194
190
  461263D1180B401300771CF8 /* LKAppDelegate.h */,
195
191
  461263D2180B401300771CF8 /* LKAppDelegate.m */,
196
- 466CCC1C181CA7010028AD47 /* LKDetailViewController.h */,
197
- 466CCC1D181CA7010028AD47 /* LKDetailViewController.m */,
198
- 466CCC1E181CA7010028AD47 /* LKMasterViewController.h */,
199
- 466CCC1F181CA7010028AD47 /* LKMasterViewController.m */,
200
192
  );
201
193
  name = Controllers;
202
194
  sourceTree = "<group>";
@@ -214,6 +206,7 @@
214
206
  466CCC22181CA7CA0028AD47 /* Main_iPad.storyboard */,
215
207
  466CCC24181CA7CA0028AD47 /* Main_iPhone.storyboard */,
216
208
  461263D4180B401300771CF8 /* Images.xcassets */,
209
+ 46B9152F182595FA00DC8651 /* placeholder@2x.png */,
217
210
  );
218
211
  name = Resources;
219
212
  sourceTree = "<group>";
@@ -295,6 +288,7 @@
295
288
  isa = PBXResourcesBuildPhase;
296
289
  buildActionMask = 2147483647;
297
290
  files = (
291
+ 46B91530182595FA00DC8651 /* placeholder@2x.png in Resources */,
298
292
  466CCC27181CA7CA0028AD47 /* Main_iPhone.storyboard in Resources */,
299
293
  466CCC26181CA7CA0028AD47 /* Main_iPad.storyboard in Resources */,
300
294
  461263CD180B401300771CF8 /* InfoPlist.strings in Resources */,
@@ -317,8 +311,6 @@
317
311
  isa = PBXSourcesBuildPhase;
318
312
  buildActionMask = 2147483647;
319
313
  files = (
320
- 466CCC20181CA7010028AD47 /* LKDetailViewController.m in Sources */,
321
- 466CCC21181CA7010028AD47 /* LKMasterViewController.m in Sources */,
322
314
  461263CF180B401300771CF8 /* main.m in Sources */,
323
315
  461263D3180B401300771CF8 /* LKAppDelegate.m in Sources */,
324
316
  );
@@ -47,4 +47,12 @@
47
47
  <% end %><% end %> return mapping;
48
48
  }<% end %>
49
49
 
50
+ #pragma mark LKModel overrides
51
+
52
+ - (NSString *)descriptionForDisplay
53
+ {<% if @first_string_attribute %>
54
+ return [NSString stringWithFormat:@"%@", self.<%=@first_string_attribute%>];<% else %>
55
+ return [self description];<% end %>
56
+ }
57
+
50
58
  @end
@@ -20,4 +20,6 @@
20
20
  <% if @using_core_data %>
21
21
  + (NSString *)entityName;
22
22
  + (<%=@class_name%> *)create:(NSManagedObjectContext *)moc;<% end %>
23
+
24
+ - (NSString *)descriptionForDisplay;
23
25
  @end
@@ -74,4 +74,34 @@
74
74
  return mapping;
75
75
  }
76
76
 
77
+ + (NSArray *)allPropertyNames
78
+ {
79
+ unsigned count;
80
+ objc_property_t *propertyList = class_copyPropertyList([self class], &count);
81
+
82
+ NSMutableArray *properties = [NSMutableArray array];
83
+
84
+ unsigned zz;
85
+ for (zz=0; zz<count; zz++)
86
+ {
87
+ objc_property_t property = propertyList[zz];
88
+ NSString *name = [NSString stringWithUTF8String:property_getName(property)];
89
+ [properties addObject:name];
90
+ }
91
+
92
+ free(propertyList);
93
+
94
+ return properties.array;
95
+ }
96
+
97
+ {
98
+ [self valueForKey:propertyName];
99
+ }
100
+
101
+ // Returns the value of one of these properties name, title, headline, displayName, id, or description.
102
+ - (NSString *)descriptionForDisplay
103
+ {
104
+ return [self description];
105
+ }
106
+
77
107
  @end
@@ -0,0 +1,14 @@
1
+ //
2
+ // <%=@controller_file_name%>.h
3
+ //
4
+ // This model was created on <%=config[:generate_date]%> by LaneKit v<%=config[:lanekit_version]%>.
5
+ //
6
+ // The following LaneKit command was used to generate this file:
7
+ // <%=config[:command]%>
8
+ //
9
+
10
+ #import <UIKit/UIKit.h>
11
+
12
+ @interface <%=@controller_class_name%> : UITableViewController
13
+
14
+ @end
@@ -0,0 +1,158 @@
1
+ //
2
+ // <%=@controller_file_name%>.m
3
+ //
4
+ // This model was created on <%=config[:generate_date]%> by LaneKit v<%=config[:lanekit_version]%>.
5
+ //
6
+ // The following LaneKit command was used to generate this file:
7
+ // <%=config[:command]%>
8
+ //
9
+
10
+ #import "<%=@controller_file_name%>.h"
11
+ #import "<%=@provider_file_name%>.h"
12
+ <%if @register_class != "UITableViewCell" %>#import "<%=@register_class%>.h"
13
+ <%end%>
14
+ @interface <%=@controller_class_name%> ()
15
+ @property (nonatomic,strong) NSArray *<%=@model_name%>;
16
+ - (void)refreshProvider;
17
+ @end
18
+
19
+ @implementation <%=@controller_class_name%>
20
+
21
+ - (id)initWithStyle:(UITableViewStyle)style
22
+ {
23
+ self = [super initWithStyle:style];
24
+ if (self) {
25
+ // Custom initialization
26
+ }
27
+ return self;
28
+ }
29
+
30
+ - (void)viewDidLoad
31
+ {
32
+ [super viewDidLoad];
33
+
34
+ // Uncomment the following line to preserve selection between presentations.
35
+ // self.clearsSelectionOnViewWillAppear = NO;
36
+
37
+ // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
38
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem;
39
+
40
+ [self.tableView registerClass:[<%=@register_class%> class] forCellReuseIdentifier:@"Cell"];
41
+ <%if @register_class != "UITableViewCell" %>
42
+ self.tableView.rowHeight = <%=@register_class%>.cellHeight;
43
+ self.tableView.separatorStyle = UITableViewCellSelectionStyleNone;
44
+ <%end%>
45
+ UIRefreshControl *refreshControl = UIRefreshControl.new;
46
+ [refreshControl addTarget:self action:@selector(refreshProvider) forControlEvents:UIControlEventValueChanged];
47
+ self.refreshControl = refreshControl;
48
+
49
+ [self.refreshControl beginRefreshing];
50
+ [self refreshProvider];
51
+ }
52
+
53
+ - (void)didReceiveMemoryWarning
54
+ {
55
+ [super didReceiveMemoryWarning];
56
+ // Dispose of any resources that can be recreated.
57
+ }
58
+
59
+ - (void)refreshProvider
60
+ {
61
+ __unsafe_unretained typeof(self) weakSelf = self;
62
+
63
+ <%=@provider_class_name%> *provider = <%=@provider_class_name%>.new;
64
+ [provider downloadWithCompletionBlock:^(NSError *error, id result) {
65
+ <%=@model_class_name%> *contents = result;
66
+ weakSelf.<%=@model_name%> = contents.contents;
67
+ [weakSelf.refreshControl endRefreshing];
68
+ [weakSelf.tableView reloadData];
69
+ }];
70
+ }
71
+
72
+ #pragma mark - Table view data source
73
+
74
+ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
75
+ {
76
+ // Return the number of sections.
77
+ return 1;
78
+ }
79
+
80
+ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
81
+ {
82
+ // Return the number of rows in the section.
83
+ return self.<%=@model_name%>.count;
84
+ }
85
+
86
+ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
87
+ {
88
+ static NSString *CellIdentifier = @"Cell";
89
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
90
+
91
+ // Configure the cell...
92
+ LKModel *model = [self.<%=@model_name%> objectAtIndex:indexPath.row];
93
+ cell.textLabel.text = [model descriptionForDisplay];
94
+
95
+ if ([model respondsToSelector:@selector(image)] && [cell respondsToSelector:@selector(imageView)])
96
+ {
97
+ NSString *imageURL = (NSString *)[(id)model image];
98
+ if ([imageURL isKindOfClass:[NSString class]])
99
+ {
100
+ [cell.imageView setImageWithURL:[NSURL URLWithString:imageURL] placeholderImage:[UIImage imageNamed:@"placeholder"]];
101
+ }
102
+ }
103
+
104
+ return cell;
105
+ }
106
+
107
+ /*
108
+ // Override to support conditional editing of the table view.
109
+ - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
110
+ {
111
+ // Return NO if you do not want the specified item to be editable.
112
+ return YES;
113
+ }
114
+ */
115
+
116
+ /*
117
+ // Override to support editing the table view.
118
+ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
119
+ {
120
+ if (editingStyle == UITableViewCellEditingStyleDelete) {
121
+ // Delete the row from the data source
122
+ [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
123
+ }
124
+ else if (editingStyle == UITableViewCellEditingStyleInsert) {
125
+ // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
126
+ }
127
+ }
128
+ */
129
+
130
+ /*
131
+ // Override to support rearranging the table view.
132
+ - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
133
+ {
134
+ }
135
+ */
136
+
137
+ /*
138
+ // Override to support conditional rearranging of the table view.
139
+ - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
140
+ {
141
+ // Return NO if you do not want the item to be re-orderable.
142
+ return YES;
143
+ }
144
+ */
145
+
146
+ /*
147
+ #pragma mark - Navigation
148
+
149
+ // In a story board-based application, you will often want to do a little preparation before navigation
150
+ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
151
+ {
152
+ // Get the new view controller using [segue destinationViewController].
153
+ // Pass the selected object to the new view controller.
154
+ }
155
+
156
+ */
157
+
158
+ @end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lanekit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Larry Aasen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-02 00:00:00.000000000 Z
11
+ date: 2013-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 0.24.0
19
+ version: 0.25.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 0.24.0
26
+ version: 0.25.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,19 +44,19 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 0.10.0
47
+ version: 0.11.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 0.10.0
54
+ version: 0.11.1
55
55
  description: ! 'LaneKit is an iOS Objective-C code generator for integration with
56
56
  RestKit. It generates
57
57
 
58
- models, resource providers, and full iOS apps with mimimal effort. There is support
59
- for unit testing with SenTestingKit
58
+ models, resource providers, table views, and full iOS apps with mimimal effort.
59
+ There is support for unit testing with SenTestingKit
60
60
 
61
61
  including fixtures and tests. LaneKit is a command line app written in Ruby and
62
62
  packaged as a Ruby Gem.'
@@ -69,12 +69,15 @@ extra_rdoc_files: []
69
69
  files:
70
70
  - lib/lanekit/generate/model.rb
71
71
  - lib/lanekit/generate/provider.rb
72
+ - lib/lanekit/generate/tableviewcontroller.rb
72
73
  - lib/lanekit/generate/urbanairship.rb
73
74
  - lib/lanekit/generate.rb
74
75
  - lib/lanekit/lanefile.rb
75
76
  - lib/lanekit/new.rb
76
77
  - lib/lanekit/version.rb
77
78
  - lib/lanekit.rb
79
+ - lib/template/LKFeedCell.h.erb
80
+ - lib/template/LKFeedCell.m.erb
78
81
  - lib/template/model.h.erb
79
82
  - lib/template/model.m.erb
80
83
  - lib/template/model_base.h.erb
@@ -88,18 +91,17 @@ files:
88
91
  - lib/template/provider.m.erb
89
92
  - lib/template/provider_base.h.erb
90
93
  - lib/template/provider_base.m.erb
94
+ - lib/template/tvc.h.erb
95
+ - lib/template/tvc.m.erb
91
96
  - lib/template/lanekit-ios-project/Lanefile
92
97
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKAppDelegate.h
93
98
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKAppDelegate.m
94
- - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKDetailViewController.h
95
- - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKDetailViewController.m
96
- - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKMasterViewController.h
97
- - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Controllers/LKMasterViewController.m
98
99
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/Base.lproj/Main_iPad.storyboard
99
100
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/Base.lproj/Main_iPhone.storyboard
100
101
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/en.lproj/InfoPlist.strings
101
102
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/Images.xcassets/AppIcon.appiconset/Contents.json
102
103
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json
104
+ - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Resources/placeholder@2x.png
103
105
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Supporting
104
106
  Files/lanekit-ios-project-Info.plist
105
107
  - lib/template/lanekit-ios-project/lanekit-ios-project/lanekit-ios-project/Supporting
@@ -1,12 +0,0 @@
1
- //
2
- // LKDetailViewController.h
3
- //
4
-
5
- #import <UIKit/UIKit.h>
6
-
7
- @interface LKDetailViewController : UIViewController <UISplitViewControllerDelegate>
8
-
9
- @property (strong, nonatomic) id detailItem;
10
-
11
- @property (weak, nonatomic) IBOutlet UILabel *detailDescriptionLabel;
12
- @end
@@ -1,68 +0,0 @@
1
- //
2
- // LKDetailViewController.m
3
- //
4
-
5
- #import "LKDetailViewController.h"
6
-
7
- @interface LKDetailViewController ()
8
- @property (strong, nonatomic) UIPopoverController *masterPopoverController;
9
- - (void)configureView;
10
- @end
11
-
12
- @implementation LKDetailViewController
13
-
14
- #pragma mark - Managing the detail item
15
-
16
- - (void)setDetailItem:(id)newDetailItem
17
- {
18
- if (_detailItem != newDetailItem) {
19
- _detailItem = newDetailItem;
20
-
21
- // Update the view.
22
- [self configureView];
23
- }
24
-
25
- if (self.masterPopoverController != nil) {
26
- [self.masterPopoverController dismissPopoverAnimated:YES];
27
- }
28
- }
29
-
30
- - (void)configureView
31
- {
32
- // Update the user interface for the detail item.
33
-
34
- if (self.detailItem) {
35
- self.detailDescriptionLabel.text = [self.detailItem description];
36
- }
37
- }
38
-
39
- - (void)viewDidLoad
40
- {
41
- [super viewDidLoad];
42
- // Do any additional setup after loading the view, typically from a nib.
43
- [self configureView];
44
- }
45
-
46
- - (void)didReceiveMemoryWarning
47
- {
48
- [super didReceiveMemoryWarning];
49
- // Dispose of any resources that can be recreated.
50
- }
51
-
52
- #pragma mark - Split view
53
-
54
- - (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
55
- {
56
- barButtonItem.title = NSLocalizedString(@"Master", @"Master");
57
- [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
58
- self.masterPopoverController = popoverController;
59
- }
60
-
61
- - (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
62
- {
63
- // Called when the view is shown again in the split view, invalidating the button and popover controller.
64
- [self.navigationItem setLeftBarButtonItem:nil animated:YES];
65
- self.masterPopoverController = nil;
66
- }
67
-
68
- @end
@@ -1,13 +0,0 @@
1
- //
2
- // LKMasterViewController.h
3
- //
4
-
5
- #import <UIKit/UIKit.h>
6
-
7
- @class LKDetailViewController;
8
-
9
- @interface LKMasterViewController : UITableViewController
10
-
11
- @property (strong, nonatomic) LKDetailViewController *detailViewController;
12
-
13
- @end