restkit-generate 0.1.3 → 0.2
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.
- data/bin/restkit-generate +12 -7
- data/lib/restkit-generate.rb +5 -0
- data/lib/{generator → restkit-generate}/common.rb +6 -3
- data/lib/restkit-generate/h.rb +19 -0
- data/lib/restkit-generate/m.rb +28 -0
- data/lib/restkit-generate/nsmanagedobject.h.erb +16 -0
- data/lib/restkit-generate/nsmanagedobject.m.erb +27 -0
- data/lib/restkit-generate/nsobject.h.erb +15 -0
- data/lib/restkit-generate/nsobject.m.erb +32 -0
- metadata +10 -6
- data/lib/generator.rb +0 -5
- data/lib/generator/header.rb +0 -28
- data/lib/generator/mk.rb +0 -51
data/bin/restkit-generate
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
3
|
THIS_FILE = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__
|
|
4
|
-
lib = File.expand_path(File.dirname(THIS_FILE) + '/../lib')
|
|
5
|
-
$LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
|
|
4
|
+
$lib = File.expand_path(File.dirname(THIS_FILE) + '/../lib')
|
|
5
|
+
$LOAD_PATH.unshift($lib) if File.directory?($lib) && !$LOAD_PATH.include?($lib)
|
|
6
6
|
|
|
7
7
|
require 'optparse'
|
|
8
|
-
require '
|
|
8
|
+
require 'erb'
|
|
9
|
+
require 'restkit-generate'
|
|
9
10
|
|
|
10
11
|
options = {}
|
|
11
12
|
|
|
@@ -20,6 +21,10 @@ optparse = OptionParser.new do |opts|
|
|
|
20
21
|
options[:prefix] = p
|
|
21
22
|
end
|
|
22
23
|
|
|
24
|
+
opts.on("-c", "--core-data", "Use core data") do |c|
|
|
25
|
+
options[:core_data] = c
|
|
26
|
+
end
|
|
27
|
+
|
|
23
28
|
opts.on( '-h', '--help', 'Display this screen' ) do
|
|
24
29
|
puts opts
|
|
25
30
|
exit
|
|
@@ -38,14 +43,14 @@ if ARGV.empty?
|
|
|
38
43
|
exit
|
|
39
44
|
end
|
|
40
45
|
|
|
41
|
-
|
|
46
|
+
RestKitGenerate.configure(options)
|
|
42
47
|
|
|
43
48
|
begin
|
|
44
|
-
|
|
49
|
+
RestKitGenerate.validate!
|
|
45
50
|
rescue ArgumentError => error
|
|
46
51
|
puts error
|
|
47
52
|
exit
|
|
48
53
|
end
|
|
49
54
|
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
RestKitGenerate::H.new
|
|
56
|
+
RestKitGenerate::M.new
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module
|
|
1
|
+
module RestKitGenerate
|
|
2
2
|
@@config = {}
|
|
3
3
|
@@properties = {}
|
|
4
4
|
|
|
@@ -39,12 +39,15 @@ module Generator
|
|
|
39
39
|
|
|
40
40
|
ARGV.each do |arg|
|
|
41
41
|
original_name = arg.split(":")[0]
|
|
42
|
-
a = arg.gsub(/_([a-z])/) do |word|
|
|
42
|
+
a = arg.gsub(/\./, '_').gsub(/_([a-z])/) do |word|
|
|
43
43
|
word.gsub(/_/, "").capitalize
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
name = a.split(":")[0]
|
|
47
|
-
|
|
47
|
+
if name == "id"
|
|
48
|
+
name = @@config[:model_name].downcase+"Id"
|
|
49
|
+
@@config[:primary_key] = name
|
|
50
|
+
end
|
|
48
51
|
type = a.split(":")[1]
|
|
49
52
|
|
|
50
53
|
@@properties[name] = {:type => type, :original_name => original_name}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module RestKitGenerate
|
|
2
|
+
class H
|
|
3
|
+
def initialize
|
|
4
|
+
props = []
|
|
5
|
+
model_name = RestKitGenerate.config[:model_name]
|
|
6
|
+
prefix = RestKitGenerate.config[:prefix]
|
|
7
|
+
core_data = RestKitGenerate.config[:core_data]
|
|
8
|
+
RestKitGenerate.properties.each{|key, value| props << "@property (nonatomic, #{value[:type] == "NSString" ? "copy" : "strong"}) #{value[:type]} *#{key};" }
|
|
9
|
+
|
|
10
|
+
erb = ERB.new(File.read(File.join($lib, 'restkit-generate', !core_data ? 'nsobject.h.erb' : 'nsmanagedobject.h.erb')))
|
|
11
|
+
result = erb.result(binding)
|
|
12
|
+
|
|
13
|
+
if RestKitGenerate.config[:verbose]
|
|
14
|
+
puts result
|
|
15
|
+
end
|
|
16
|
+
File.open("#{prefix}#{model_name}.h", 'w') {|f| f.write(result) }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module RestKitGenerate
|
|
2
|
+
class M
|
|
3
|
+
def initialize
|
|
4
|
+
model_name = RestKitGenerate.config[:model_name]
|
|
5
|
+
prefix = RestKitGenerate.config[:prefix]
|
|
6
|
+
mapping = []
|
|
7
|
+
decoders = []
|
|
8
|
+
encoders = []
|
|
9
|
+
dynamic = []
|
|
10
|
+
tab = " "
|
|
11
|
+
core_data = RestKitGenerate.config[:core_data]
|
|
12
|
+
|
|
13
|
+
RestKitGenerate.properties.each{|key, value| dynamic << key }
|
|
14
|
+
RestKitGenerate.properties.each{|key, value| mapping << "#{tab}@\"#{value[:original_name]}\", @\"#{key}\"" }
|
|
15
|
+
RestKitGenerate.properties.each{|key, value| decoders << "#{tab}[coder encodeObject:self.#{key} forKey:@\"#{key}\"];" }
|
|
16
|
+
RestKitGenerate.properties.each{|key, value| encoders << "#{tab}#{tab}self.#{key} = [coder decodeObjectForKey:@\"#{key}\"];" }
|
|
17
|
+
|
|
18
|
+
erb = ERB.new(File.read(File.join($lib, 'restkit-generate', !core_data ? 'nsobject.m.erb' : 'nsmanagedobject.m.erb')))
|
|
19
|
+
result = erb.result(binding)
|
|
20
|
+
|
|
21
|
+
if RestKitGenerate.config[:verbose]
|
|
22
|
+
puts result
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
File.open("#{prefix}#{model_name}.m", 'w') {|f| f.write(result) }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// <%= prefix %><%= model_name %>.h
|
|
3
|
+
// Command: <%= $0 %> model <%= model_name %> <%= ARGV.join( ' ' ) %>
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#import <Foundation/Foundation.h>
|
|
7
|
+
#import <RestKit/RestKit.h>
|
|
8
|
+
#import <CoreData/CoreData.h>
|
|
9
|
+
|
|
10
|
+
@interface <%= prefix %><%= model_name %> : NSManagedObject
|
|
11
|
+
|
|
12
|
+
<%= props.join("\n") %>
|
|
13
|
+
|
|
14
|
+
+ (RKManagedObjectMapping *)objectMapping;
|
|
15
|
+
|
|
16
|
+
@end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//
|
|
2
|
+
// <%= prefix %><%= model_name %>.m
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#import "<%= prefix %><%= model_name %>.h"
|
|
6
|
+
|
|
7
|
+
@implementation <%= prefix %><%= model_name %>
|
|
8
|
+
|
|
9
|
+
@dynamic <%= dynamic.join(", ") %>;
|
|
10
|
+
|
|
11
|
+
+ (RKManagedObjectMapping *)objectMapping
|
|
12
|
+
{
|
|
13
|
+
RKManagedObjectMapping* mapping = [RKManagedObjectMapping mappingForClass:[self class] inManagedObjectStore:[RKObjectManager sharedManager].objectStore];
|
|
14
|
+
<%
|
|
15
|
+
unless RestKitGenerate.config[:primary_key].nil?
|
|
16
|
+
%>
|
|
17
|
+
mapping.primaryKeyAttribute = @"<%= RestKitGenerate.config[:primary_key] %>";
|
|
18
|
+
<%
|
|
19
|
+
end
|
|
20
|
+
%>
|
|
21
|
+
[mapping mapKeyPathsToAttributes:
|
|
22
|
+
<%= mapping.join(",\n") %>,
|
|
23
|
+
nil];
|
|
24
|
+
return mapping;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//
|
|
2
|
+
// <%= prefix %><%= model_name %>.h
|
|
3
|
+
// Command: <%= $0 %> model <%= model_name %> <%= ARGV.join( ' ' ) %>
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#import <Foundation/Foundation.h>
|
|
7
|
+
#import <RestKit/RestKit.h>
|
|
8
|
+
|
|
9
|
+
@interface <%= prefix %><%= model_name %> : NSObject <NSCoding>
|
|
10
|
+
|
|
11
|
+
<%= props.join("\n") %>
|
|
12
|
+
|
|
13
|
+
+ (RKObjectMapping *)objectMapping;
|
|
14
|
+
|
|
15
|
+
@end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//
|
|
2
|
+
// <%= prefix %><%= model_name %>.m
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#import "<%= prefix %><%= model_name %>.h"
|
|
6
|
+
|
|
7
|
+
@implementation <%= prefix %><%= model_name %>
|
|
8
|
+
|
|
9
|
+
+ (RKObjectMapping *)objectMapping
|
|
10
|
+
{
|
|
11
|
+
RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[self class]];
|
|
12
|
+
[mapping mapKeyPathsToAttributes:
|
|
13
|
+
<%= mapping.join(",\n") %>,
|
|
14
|
+
nil];
|
|
15
|
+
return mapping;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
- (id)initWithCoder:(NSCoder *)coder
|
|
19
|
+
{
|
|
20
|
+
self = [[[self class] alloc] init];
|
|
21
|
+
if (self) {
|
|
22
|
+
<%= encoders.join("\n") %>
|
|
23
|
+
}
|
|
24
|
+
return self;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (void)encodeWithCoder:(NSCoder *)coder
|
|
28
|
+
{
|
|
29
|
+
<%= decoders.join("\n") %>
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: restkit-generate
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: '0.2'
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-08-
|
|
12
|
+
date: 2012-08-17 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
14
|
description: A model generator for iOS RestKit (Rails-like)
|
|
15
15
|
email: romefimov@gmail.com
|
|
@@ -19,10 +19,14 @@ extensions: []
|
|
|
19
19
|
extra_rdoc_files: []
|
|
20
20
|
files:
|
|
21
21
|
- bin/restkit-generate
|
|
22
|
-
- lib/
|
|
23
|
-
- lib/
|
|
24
|
-
- lib/
|
|
25
|
-
- lib/
|
|
22
|
+
- lib/restkit-generate.rb
|
|
23
|
+
- lib/restkit-generate/common.rb
|
|
24
|
+
- lib/restkit-generate/h.rb
|
|
25
|
+
- lib/restkit-generate/m.rb
|
|
26
|
+
- lib/restkit-generate/nsmanagedobject.h.erb
|
|
27
|
+
- lib/restkit-generate/nsmanagedobject.m.erb
|
|
28
|
+
- lib/restkit-generate/nsobject.h.erb
|
|
29
|
+
- lib/restkit-generate/nsobject.m.erb
|
|
26
30
|
homepage: https://github.com/romaonthego
|
|
27
31
|
licenses: []
|
|
28
32
|
post_install_message:
|
data/lib/generator.rb
DELETED
data/lib/generator/header.rb
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module Generator
|
|
2
|
-
module Header
|
|
3
|
-
def self.make
|
|
4
|
-
props = []
|
|
5
|
-
model_name = Generator.config[:model_name]
|
|
6
|
-
prefix = Generator.config[:prefix]
|
|
7
|
-
Generator.properties.each{|key, value| props << "@property (nonatomic, #{value[:type] == "NSString" ? "copy" : "strong"}) #{value[:type]} *#{key};" }
|
|
8
|
-
|
|
9
|
-
header =
|
|
10
|
-
"//\n"+
|
|
11
|
-
"// #{prefix}#{model_name}.h\n"+
|
|
12
|
-
"// Command: #{$0} model #{model_name} #{ARGV.join( ' ' )}\n"+
|
|
13
|
-
"//\n\n"+
|
|
14
|
-
"#import <Foundation/Foundation.h>\n"+
|
|
15
|
-
"#import <RestKit/RestKit.h>\n\n"+
|
|
16
|
-
"@interface #{prefix}#{model_name} : NSObject <NSCoding>\n\n"+
|
|
17
|
-
props.join("\n")+"\n\n"+
|
|
18
|
-
"+ (RKObjectMapping *)objectMapping;\n\n"+
|
|
19
|
-
"@end"
|
|
20
|
-
|
|
21
|
-
if Generator.config[:verbose]
|
|
22
|
-
puts header
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
File.open("#{prefix}#{model_name}.h", 'w') {|f| f.write(header) }
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
data/lib/generator/mk.rb
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
module Generator
|
|
2
|
-
module MakeFile
|
|
3
|
-
def self.make
|
|
4
|
-
model_name = Generator.config[:model_name]
|
|
5
|
-
prefix = Generator.config[:prefix]
|
|
6
|
-
mapping = []
|
|
7
|
-
decoders = []
|
|
8
|
-
encoders = []
|
|
9
|
-
Generator.properties.each{|key, value| mapping << " @\"#{value[:original_name]}\", @\"#{key}\"" }
|
|
10
|
-
Generator.properties.each{|key, value| decoders << " [coder encodeObject:self.#{key} forKey:@\"#{key}\"];" }
|
|
11
|
-
Generator.properties.each{|key, value| encoders << " self.#{key} = [coder decodeObjectForKey:@\"#{key}\"];" }
|
|
12
|
-
|
|
13
|
-
source =
|
|
14
|
-
"//\n"+
|
|
15
|
-
"// #{prefix}#{model_name}.m\n"+
|
|
16
|
-
"//\n\n"+
|
|
17
|
-
|
|
18
|
-
"#import \"#{prefix}#{model_name}.h\"\n\n"+
|
|
19
|
-
"@implementation #{prefix}#{model_name}\n\n"+
|
|
20
|
-
"+ (RKObjectMapping *)objectMapping\n"+
|
|
21
|
-
"{\n"+
|
|
22
|
-
" RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[self class]];\n"+
|
|
23
|
-
" [mapping mapKeyPathsToAttributes:\n"+
|
|
24
|
-
mapping.join(",\n")+", nil];\n"+
|
|
25
|
-
" return mapping;\n"+
|
|
26
|
-
"}\n\n"+
|
|
27
|
-
|
|
28
|
-
"- (id)initWithCoder:(NSCoder *)coder\n"+
|
|
29
|
-
"{\n"+
|
|
30
|
-
" self = [[[self class] alloc] init];\n"+
|
|
31
|
-
" if (self) {\n"+
|
|
32
|
-
encoders.join("\n")+"\n"+
|
|
33
|
-
" }\n"+
|
|
34
|
-
" return self;\n"+
|
|
35
|
-
"}\n\n"+
|
|
36
|
-
|
|
37
|
-
"- (void)encodeWithCoder:(NSCoder *)coder\n"+
|
|
38
|
-
"{\n"+
|
|
39
|
-
decoders.join("\n")+"\n"+
|
|
40
|
-
"}\n\n"+
|
|
41
|
-
|
|
42
|
-
"@end"
|
|
43
|
-
|
|
44
|
-
if Generator.config[:verbose]
|
|
45
|
-
puts source
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
File.open("#{prefix}#{model_name}.m", 'w') {|f| f.write(source) }
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|