Skip to content

Commit

Permalink
Working on layouts and directory structure
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonathan Bartlett committed Jun 20, 2011
1 parent bfca5de commit 8c92503
Show file tree
Hide file tree
Showing 13 changed files with 54 additions and 6 deletions.
3 changes: 2 additions & 1 deletion IDEAS
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
* Views can be re-used

* Conventions:
* View Name: NewmView_controllername_actionname_format
* View Name: NewmView_view_controllername_actionname_format
* Layout Name: NewmView_layout_controllername_format

* Controllers that define additional view data fields need to override reset and set them to nil between requests. But this needs to call [super reset] as well.
6 changes: 5 additions & 1 deletion src/Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
all:
find MyTestController -depth 1|xargs -n 1 ./buildview
find view layout -type f -name '*.nmv'|xargs -n 1 ./buildview
gcc -Wall *.m -framework Foundation

clean:
grep -R "this file was autogenerated from" *.m|cut -d: -f 1|xargs rm
rm -f a.out
4 changes: 4 additions & 0 deletions src/NMAbstractController.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// Copyright 2011 Jonathan Bartlett

//FIXME - need different layouts for different formats?

#import "NMAbstractController.h"

@implementation NMAbstractController
Expand All @@ -15,6 +17,8 @@ @implementation NMAbstractController
-(id) init {
self = [super init];
self.beforeFilters = [NSMutableArray arrayWithCapacity:10];
self.defaultLayout = [NMAbstractView layoutForControllerName:[self className] format:@"html"];
self.currentLayout = defaultLayout;

return self;
}
Expand Down
1 change: 1 addition & 0 deletions src/NMAbstractView.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
}

+(NMAbstractView *) viewForControllerName:(NSString *)cname actionName:(NSString *)aname format:(NSString *)fmt;
+(NMAbstractView *) layoutForControllerName:(NSString *)cname format:(NSString *)fmt;

-(void) reset;

Expand Down
15 changes: 14 additions & 1 deletion src/NMAbstractView.m
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,22 @@

@implementation NMAbstractView

+(NMAbstractView *) layoutForControllerName:(NSString *)cname format:(NSString *)fmt {
NSString *viewClassName = [NSString stringWithFormat:@"NewmView_layout_%@_%@", cname, fmt];
Class viewClass = objc_getClass([viewClassName cStringUsingEncoding:NSUTF8StringEncoding]);
if(viewClass == nil) {
return nil;
}

NMAbstractView *v = [[viewClass alloc] init];
return v;
}
+(NMAbstractView *) viewForControllerName:(NSString *)cname actionName:(NSString *)aname format:(NSString *)fmt {
NSString *viewClassName = [NSString stringWithFormat:@"NewmView_%@_%@_%@", cname, aname, fmt];
NSString *viewClassName = [NSString stringWithFormat:@"NewmView_view_%@_%@_%@", cname, aname, fmt];
Class viewClass = objc_getClass([viewClassName cStringUsingEncoding:NSUTF8StringEncoding]);
if(viewClass == nil) {
return nil;
}
NMAbstractView *v = [[viewClass alloc] init];

return v;
Expand Down
5 changes: 5 additions & 0 deletions src/NSData+Newm.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#import <Foundation/Foundation.h>

@interface NSData(Newm)
-(NSString *)stringValue;
@end
7 changes: 7 additions & 0 deletions src/NSData+Newm.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#import "NSdata+Newm.h"

@implementation NSData(Newm)
-(NSString *)stringValue {
return [[[NSString alloc] initWithData:self encoding:NSUTF8StringEncoding] autorelease];
}
@end
1 change: 1 addition & 0 deletions src/NSString+Newm.m
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ -(NSString *) xmlDecode {
-(BOOL) empty {
return [self isEqualToString:@""];
}

@end
2 changes: 2 additions & 0 deletions src/Newm.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

#import "NSString+Newm.h"
#import "NSDictionary+Newm.h"
#import "NSData+Newm.h"
#import "NSMutableArray+Newm.h"
#import "NMAbstractRequest.h"
#import "NMAbstractController.h"
#import "NMAbstractView.h"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#import <Foundation/Foundation.h>
#import "NMAbstractView.h"

@interface NewmView_MyTestController_myAction2_html : NMAbstractView {
@interface NewmView_view_MyTestController_myAction2_html : NMAbstractView {
}
@end

@implementation NewmView_MyTestController_myAction2_html
@implementation NewmView_view_MyTestController_myAction2_html
-(NSData *)render:(NMAbstractController *)ctrl {
return [@"This is my Rendered View" dataUsingEncoding:NSUTF8StringEncoding];
}
Expand Down
7 changes: 6 additions & 1 deletion src/buildview
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ path_ary = path.split(/\//)
fname = path_ary.pop
fname_parts = fname.split(".")
fname_type = fname_parts.pop
cname = path_ary[0]
cname = path_ary[1]
if cname.nil?
cname = fname_parts[0]
end
puts cname
puts path
if(fname_type == "nmv")
fname_action = fname_parts[0]
fname_format = fname_parts[1]
Expand Down
5 changes: 5 additions & 0 deletions src/layout/MyTestController.html.nmv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
HEADER

<%= [controller.actionViewData stringValue] %>

FOOTER
File renamed without changes.

0 comments on commit 8c92503

Please sign in to comment.