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.
@@ -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 'generator'
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
- Generator.configure(options)
46
+ RestKitGenerate.configure(options)
42
47
 
43
48
  begin
44
- Generator.validate!
49
+ RestKitGenerate.validate!
45
50
  rescue ArgumentError => error
46
51
  puts error
47
52
  exit
48
53
  end
49
54
 
50
- Generator::Header.make
51
- Generator::MakeFile.make
55
+ RestKitGenerate::H.new
56
+ RestKitGenerate::M.new
@@ -0,0 +1,5 @@
1
+ module RestKitGenerate ; end
2
+
3
+ require 'restkit-generate/common'
4
+ require 'restkit-generate/h'
5
+ require 'restkit-generate/m'
@@ -1,4 +1,4 @@
1
- module Generator
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
- name = @@config[:model_name].downcase+"Id" if name == "id"
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.1.3
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-04 00:00:00.000000000 Z
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/generator.rb
23
- - lib/generator/common.rb
24
- - lib/generator/header.rb
25
- - lib/generator/mk.rb
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:
@@ -1,5 +0,0 @@
1
- module Generator ; end
2
-
3
- require 'generator/common'
4
- require 'generator/header'
5
- require 'generator/mk'
@@ -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
@@ -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