appjam 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -2
- data/lib/appjam/generators/cli.rb +14 -7
- data/lib/appjam/generators/jam.rb +40 -17
- data/lib/appjam/generators/model.rb +49 -59
- data/lib/appjam/generators/project.rb +74 -83
- data/lib/appjam/generators/project/Contacts_Prefix.pch.tt +8 -0
- data/lib/appjam/tasks/plugin.rb +9 -12
- data/lib/appjam/version.rb +1 -1
- data/lib/appjam/view.rb +48 -0
- metadata +95 -38
data/README.rdoc
CHANGED
@@ -14,11 +14,11 @@ Appjam require ruby installed on your mac machine. Since now all Mac OSX system
|
|
14
14
|
|
15
15
|
Appjam has an dependency on "thor" gem , which require latest rubygem installed, so you need to update your rubygem to latest version, run command below to update your rubygem to the latest one.
|
16
16
|
|
17
|
-
$ gem update --system # double dash option
|
17
|
+
$ sudo gem update --system # double dash option
|
18
18
|
|
19
19
|
== Installation
|
20
20
|
|
21
|
-
$ gem install appjam
|
21
|
+
$ sudo gem install appjam
|
22
22
|
|
23
23
|
== Usage
|
24
24
|
|
@@ -1,4 +1,8 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'cli-colorize'
|
1
3
|
require 'thor/group'
|
4
|
+
require 'hirb'
|
5
|
+
require File.dirname(__FILE__) + '/../view'
|
2
6
|
|
3
7
|
module Appjam
|
4
8
|
module Generators
|
@@ -7,7 +11,11 @@ module Appjam
|
|
7
11
|
# 3rd party generators
|
8
12
|
#
|
9
13
|
class Cli < Thor::Group
|
10
|
-
|
14
|
+
include CLIColorize
|
15
|
+
|
16
|
+
CLIColorize.default_color = :red
|
17
|
+
|
18
|
+
RENDER_OPTIONS = { :fields => [:category,:command,:description] }
|
11
19
|
# Include related modules
|
12
20
|
include Thor::Actions
|
13
21
|
|
@@ -34,13 +42,12 @@ module Appjam
|
|
34
42
|
args = ARGV.empty? && generator_class.require_arguments? ? ["-h"] : ARGV
|
35
43
|
generator_class.start(args)
|
36
44
|
else
|
45
|
+
puts colorize("Usage: appjam [OPTIONS] [ARGS]")
|
37
46
|
puts
|
38
|
-
puts
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
puts 'Usage2: appjam model user # generate iphone project data model'
|
43
|
-
puts '-'*70
|
47
|
+
puts colorize("APPJAM OPTIONS", { :foreground => :blue})
|
48
|
+
opt = [{ :category => "objective c (iphone)", :command => "appjam project todo", :description => "generate iphone project skeleton"},
|
49
|
+
{ :category => "objective c (iphone)", :command => "appjam model user", :description => "generate iphone project data model"}]
|
50
|
+
View.render(opt, RENDER_OPTIONS)
|
44
51
|
puts
|
45
52
|
end
|
46
53
|
end
|
@@ -1,29 +1,34 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'hirb'
|
2
3
|
require 'thor/group'
|
3
4
|
require 'thor/actions'
|
4
5
|
require 'active_support/core_ext/string'
|
5
6
|
require 'active_support/inflector'
|
6
|
-
require File.dirname(__FILE__) + '/actions'
|
7
7
|
require 'date'
|
8
|
+
require File.dirname(__FILE__) + '/actions'
|
9
|
+
require File.dirname(__FILE__) + '/../view'
|
8
10
|
|
9
11
|
module Appjam
|
10
12
|
module Generators
|
11
|
-
class Jam < Thor::Group
|
12
|
-
|
13
|
-
# Add this generator to our appjam
|
14
|
-
Appjam::Generators.add_generator(:jam, self)
|
13
|
+
class Jam < Thor::Group
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
def self.init_generator
|
16
|
+
# Define the source template root
|
17
|
+
def self.source_root; File.expand_path(File.dirname(__FILE__)); end
|
18
|
+
def self.banner; "appjam #{self.to_s.downcase.intern} [name]"; end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
# Include related modules
|
21
|
+
include Thor::Actions
|
22
|
+
include Appjam::Generators::Actions
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.parseTemplate(data)
|
26
|
+
eval(data)
|
27
|
+
end
|
23
28
|
|
24
29
|
desc "Description:\n\n\tthis should not be used, only acts as Parent Class"
|
25
30
|
|
26
|
-
argument :name, :desc => "The name of your
|
31
|
+
argument :name, :desc => "The name of your #{self.to_s.downcase.intern}"
|
27
32
|
|
28
33
|
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
29
34
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
@@ -33,16 +38,17 @@ module Appjam
|
|
33
38
|
end
|
34
39
|
|
35
40
|
def create_app
|
36
|
-
valid_constant?(options[
|
37
|
-
@jam_name = (options[
|
41
|
+
valid_constant?(options["#{self.to_s.downcase.intern}"] || name)
|
42
|
+
@jam_name = (options["#{self.to_s.downcase.intern}"] || name).gsub(/\W/, "_").downcase
|
38
43
|
@developer = "#{`whoami`.strip}"
|
39
44
|
@created_on = Date.today.to_s
|
40
45
|
self.destination_root = options[:root]
|
41
|
-
project = options[
|
46
|
+
project = options["#{self.to_s.downcase.intern}"]
|
42
47
|
self.behavior = :revoke if options[:destroy]
|
43
48
|
|
44
|
-
empty_directory "#{@jam_name}"
|
45
|
-
|
49
|
+
#empty_directory "#{@jam_name}"
|
50
|
+
|
51
|
+
View.render(options)
|
46
52
|
say (<<-TEXT).gsub(/ {10}/,'')
|
47
53
|
|
48
54
|
=================================================================
|
@@ -51,6 +57,23 @@ module Appjam
|
|
51
57
|
|
52
58
|
TEXT
|
53
59
|
end
|
60
|
+
|
61
|
+
class << self
|
62
|
+
# The methods below define the JAM DSL.
|
63
|
+
attr_reader :stable, :unstable
|
64
|
+
|
65
|
+
def self.attr_rw(*attrs)
|
66
|
+
attrs.each do |attr|
|
67
|
+
class_eval %Q{
|
68
|
+
def #{attr}(val=nil)
|
69
|
+
val.nil? ? @#{attr} : @#{attr} = val
|
70
|
+
end
|
71
|
+
}
|
72
|
+
end
|
73
|
+
end
|
74
|
+
attr_rw :version, :homepage, :author, :email, :data
|
75
|
+
end
|
76
|
+
|
54
77
|
end # Jam
|
55
78
|
end # Generators
|
56
79
|
end # Appjam
|
@@ -1,26 +1,18 @@
|
|
1
|
-
require 'thor'
|
2
|
-
require 'thor/group'
|
3
|
-
require 'thor/actions'
|
4
|
-
require 'active_support/core_ext/string'
|
5
|
-
require 'active_support/inflector'
|
6
|
-
require File.dirname(__FILE__) + '/actions'
|
7
1
|
require File.dirname(__FILE__) + '/jam'
|
8
|
-
require 'date'
|
9
2
|
|
10
3
|
module Appjam
|
11
4
|
module Generators
|
12
5
|
class Model < Jam
|
13
|
-
|
6
|
+
|
7
|
+
author 'Eiffel Qiu'
|
8
|
+
homepage 'http://www.likenote.com'
|
9
|
+
email 'eiffelqiu@gmail.com'
|
10
|
+
version Appjam::Version::STRING
|
11
|
+
|
14
12
|
# Add this generator to our appjam
|
15
13
|
Appjam::Generators.add_generator(:model, self)
|
16
|
-
|
17
|
-
|
18
|
-
def self.source_root; File.expand_path(File.dirname(__FILE__)); end
|
19
|
-
def self.banner; "appjam model [name]"; end
|
20
|
-
|
21
|
-
# Include related modules
|
22
|
-
include Thor::Actions
|
23
|
-
include Appjam::Generators::Actions
|
14
|
+
|
15
|
+
init_generator
|
24
16
|
|
25
17
|
desc "Description:\n\n\tappjam will generates an new PureMvc Model for iphone"
|
26
18
|
|
@@ -28,10 +20,6 @@ module Appjam
|
|
28
20
|
|
29
21
|
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
30
22
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
31
|
-
|
32
|
-
def in_app_root?
|
33
|
-
File.exist?('Classes')
|
34
|
-
end
|
35
23
|
|
36
24
|
def create_app
|
37
25
|
if in_app_root?
|
@@ -45,44 +33,8 @@ module Appjam
|
|
45
33
|
self.destination_root = options[:root]
|
46
34
|
project = options[:project]
|
47
35
|
self.behavior = :revoke if options[:destroy]
|
48
|
-
|
49
|
-
|
50
|
-
#define ShowNew#{@class_name} @\"ShowNew#{@class_name}\"
|
51
|
-
#define ShowEdit#{@class_name} @\"ShowEdit#{@class_name}\"
|
52
|
-
#define Show#{@class_name}Form @\"Show#{@class_name}Form\"
|
53
|
-
#define Show#{@class_name}List @\"Show#{@class_name}Lis\t\"
|
54
|
-
#define Create#{@class_name} @\"Create#{@class_name}\"
|
55
|
-
#define Update#{@class_name} @\"Update#{@class_name}\"
|
56
|
-
#define Delete#{@class_name} @\"Delete#{@class_name}\"
|
57
|
-
#define Get#{@class_name}s @\"Get#{@class_name}s\"
|
58
|
-
#define Get#{@class_name}sSuccess @\"Get#{@class_name}sSuccess\"
|
59
|
-
"
|
60
|
-
inject_into_file destination_root("Classes/#{@xcode_project_name}/ApplicationFacade.h"), header, :after => "#import \"Facade.h\"\n"
|
61
|
-
template "project/Classes/contacts/controller/CreateUserCommand.h.tt" , "Classes/#{@model_name}/controller/Create#{@class_name}Command.h"
|
62
|
-
template "project/Classes/contacts/controller/CreateUserCommand.m.tt" , "Classes/#{@model_name}/controller/Create#{@class_name}Command.m"
|
63
|
-
template "project/Classes/contacts/controller/DeleteUserCommand.h.tt" , "Classes/#{@model_name}/controller/Delete#{@class_name}Command.h"
|
64
|
-
template "project/Classes/contacts/controller/DeleteUserCommand.m.tt" , "Classes/#{@model_name}/controller/Delete#{@class_name}Command.m"
|
65
|
-
template "project/Classes/contacts/controller/GetUsersCommand.h.tt" , "Classes/#{@model_name}/controller/Get#{@class_name}sCommand.h"
|
66
|
-
template "project/Classes/contacts/controller/GetUsersCommand.m.tt" , "Classes/#{@model_name}/controller/Get#{@class_name}sCommand.m"
|
67
|
-
template "project/Classes/contacts/controller/UpdateUserCommand.h.tt" , "Classes/#{@model_name}/controller/Update#{@class_name}Command.h"
|
68
|
-
template "project/Classes/contacts/controller/UpdateUserCommand.m.tt" , "Classes/#{@model_name}/controller/Update#{@class_name}Command.m"
|
69
|
-
template "project/Classes/contacts/model/UserProxy.h.tt" , "Classes/#{@model_name}/model/#{@class_name}Proxy.h"
|
70
|
-
template "project/Classes/contacts/model/UserProxy.m.tt" , "Classes/#{@model_name}/model/#{@class_name}Proxy.m"
|
71
|
-
template "project/Classes/contacts/model/vo/UserVO.h.tt" , "Classes/#{@model_name}/model/vo/#{@class_name}VO.h"
|
72
|
-
template "project/Classes/contacts/model/vo/UserVO.m.tt" , "Classes/#{@model_name}/model/vo/#{@class_name}VO.m"
|
73
|
-
template "project/Classes/contacts/view/UserMediator.h.tt" , "Classes/#{@model_name}/view/#{@class_name}Mediator.h"
|
74
|
-
template "project/Classes/contacts/view/UserMediator.m.tt" , "Classes/#{@model_name}/view/#{@class_name}Mediator.m"
|
75
|
-
template "project/Classes/contacts/view/UserFormMediator.h.tt" , "Classes/#{@model_name}/view/#{@class_name}FormMediator.h"
|
76
|
-
template "project/Classes/contacts/view/UserFormMediator.m.tt" , "Classes/#{@model_name}/view/#{@class_name}FormMediator.m"
|
77
|
-
template "project/Classes/contacts/view/UserListMediator.h.tt" , "Classes/#{@model_name}/view/#{@class_name}ListMediator.h"
|
78
|
-
template "project/Classes/contacts/view/UserListMediator.m.tt" , "Classes/#{@model_name}/view/#{@class_name}ListMediator.m"
|
79
|
-
template "project/Classes/contacts/view/components/Contacts.h.tt" , "Classes/#{@model_name}/view/components/#{@class_name}.h"
|
80
|
-
template "project/Classes/contacts/view/components/Contacts.m.tt" , "Classes/#{@model_name}/view/components/#{@class_name}.m"
|
81
|
-
template "project/Classes/contacts/view/components/UserForm.h.tt" , "Classes/#{@model_name}/view/components/#{@class_name}Form.h"
|
82
|
-
template "project/Classes/contacts/view/components/UserForm.m.tt" , "Classes/#{@model_name}/view/components/#{@class_name}Form.m"
|
83
|
-
template "project/Classes/contacts/view/components/UserList.h.tt" , "Classes/#{@model_name}/view/components/#{@class_name}List.h"
|
84
|
-
template "project/Classes/contacts/view/components/UserList.m.tt" , "Classes/#{@model_name}/view/components/#{@class_name}List.m"
|
85
|
-
|
36
|
+
|
37
|
+
eval(File.read(__FILE__) =~ /^__END__\n/ && $' || '')
|
86
38
|
|
87
39
|
say (<<-TEXT).gsub(/ {10}/,'')
|
88
40
|
|
@@ -104,4 +56,42 @@ module Appjam
|
|
104
56
|
end
|
105
57
|
end # Model
|
106
58
|
end # Generators
|
107
|
-
end # Appjam
|
59
|
+
end # Appjam
|
60
|
+
|
61
|
+
__END__
|
62
|
+
header = "
|
63
|
+
#define ShowNew#{@class_name} @\"ShowNew#{@class_name}\"
|
64
|
+
#define ShowEdit#{@class_name} @\"ShowEdit#{@class_name}\"
|
65
|
+
#define Show#{@class_name}Form @\"Show#{@class_name}Form\"
|
66
|
+
#define Show#{@class_name}List @\"Show#{@class_name}Lis\t\"
|
67
|
+
#define Create#{@class_name} @\"Create#{@class_name}\"
|
68
|
+
#define Update#{@class_name} @\"Update#{@class_name}\"
|
69
|
+
#define Delete#{@class_name} @\"Delete#{@class_name}\"
|
70
|
+
#define Get#{@class_name}s @\"Get#{@class_name}s\"
|
71
|
+
#define Get#{@class_name}sSuccess @\"Get#{@class_name}sSuccess\"
|
72
|
+
"
|
73
|
+
inject_into_file destination_root("Classes/#{@xcode_project_name}/ApplicationFacade.h"), header, :after => "#import \"Facade.h\"\n"
|
74
|
+
template "project/Classes/contacts/controller/CreateUserCommand.h.tt" , "Classes/#{@model_name}/controller/Create#{@class_name}Command.h"
|
75
|
+
template "project/Classes/contacts/controller/CreateUserCommand.m.tt" , "Classes/#{@model_name}/controller/Create#{@class_name}Command.m"
|
76
|
+
template "project/Classes/contacts/controller/DeleteUserCommand.h.tt" , "Classes/#{@model_name}/controller/Delete#{@class_name}Command.h"
|
77
|
+
template "project/Classes/contacts/controller/DeleteUserCommand.m.tt" , "Classes/#{@model_name}/controller/Delete#{@class_name}Command.m"
|
78
|
+
template "project/Classes/contacts/controller/GetUsersCommand.h.tt" , "Classes/#{@model_name}/controller/Get#{@class_name}sCommand.h"
|
79
|
+
template "project/Classes/contacts/controller/GetUsersCommand.m.tt" , "Classes/#{@model_name}/controller/Get#{@class_name}sCommand.m"
|
80
|
+
template "project/Classes/contacts/controller/UpdateUserCommand.h.tt" , "Classes/#{@model_name}/controller/Update#{@class_name}Command.h"
|
81
|
+
template "project/Classes/contacts/controller/UpdateUserCommand.m.tt" , "Classes/#{@model_name}/controller/Update#{@class_name}Command.m"
|
82
|
+
template "project/Classes/contacts/model/UserProxy.h.tt" , "Classes/#{@model_name}/model/#{@class_name}Proxy.h"
|
83
|
+
template "project/Classes/contacts/model/UserProxy.m.tt" , "Classes/#{@model_name}/model/#{@class_name}Proxy.m"
|
84
|
+
template "project/Classes/contacts/model/vo/UserVO.h.tt" , "Classes/#{@model_name}/model/vo/#{@class_name}VO.h"
|
85
|
+
template "project/Classes/contacts/model/vo/UserVO.m.tt" , "Classes/#{@model_name}/model/vo/#{@class_name}VO.m"
|
86
|
+
template "project/Classes/contacts/view/UserMediator.h.tt" , "Classes/#{@model_name}/view/#{@class_name}Mediator.h"
|
87
|
+
template "project/Classes/contacts/view/UserMediator.m.tt" , "Classes/#{@model_name}/view/#{@class_name}Mediator.m"
|
88
|
+
template "project/Classes/contacts/view/UserFormMediator.h.tt" , "Classes/#{@model_name}/view/#{@class_name}FormMediator.h"
|
89
|
+
template "project/Classes/contacts/view/UserFormMediator.m.tt" , "Classes/#{@model_name}/view/#{@class_name}FormMediator.m"
|
90
|
+
template "project/Classes/contacts/view/UserListMediator.h.tt" , "Classes/#{@model_name}/view/#{@class_name}ListMediator.h"
|
91
|
+
template "project/Classes/contacts/view/UserListMediator.m.tt" , "Classes/#{@model_name}/view/#{@class_name}ListMediator.m"
|
92
|
+
template "project/Classes/contacts/view/components/Contacts.h.tt" , "Classes/#{@model_name}/view/components/#{@class_name}.h"
|
93
|
+
template "project/Classes/contacts/view/components/Contacts.m.tt" , "Classes/#{@model_name}/view/components/#{@class_name}.m"
|
94
|
+
template "project/Classes/contacts/view/components/UserForm.h.tt" , "Classes/#{@model_name}/view/components/#{@class_name}Form.h"
|
95
|
+
template "project/Classes/contacts/view/components/UserForm.m.tt" , "Classes/#{@model_name}/view/components/#{@class_name}Form.m"
|
96
|
+
template "project/Classes/contacts/view/components/UserList.h.tt" , "Classes/#{@model_name}/view/components/#{@class_name}List.h"
|
97
|
+
template "project/Classes/contacts/view/components/UserList.m.tt" , "Classes/#{@model_name}/view/components/#{@class_name}List.m"
|
@@ -1,26 +1,18 @@
|
|
1
|
-
require 'thor'
|
2
|
-
require 'thor/group'
|
3
|
-
require 'thor/actions'
|
4
|
-
require 'active_support/core_ext/string'
|
5
|
-
require 'active_support/inflector'
|
6
|
-
require File.dirname(__FILE__) + '/actions'
|
7
1
|
require File.dirname(__FILE__) + '/jam'
|
8
|
-
require 'date'
|
9
2
|
|
10
3
|
module Appjam
|
11
4
|
module Generators
|
12
5
|
class Project < Jam
|
6
|
+
|
7
|
+
author 'Eiffel Qiu'
|
8
|
+
homepage 'http://www.likenote.com'
|
9
|
+
email 'eiffelqiu@gmail.com'
|
10
|
+
version Appjam::Version::STRING
|
13
11
|
|
14
12
|
# Add this generator to our appjam
|
15
13
|
Appjam::Generators.add_generator(:project, self)
|
16
|
-
|
17
|
-
|
18
|
-
def self.source_root; File.expand_path(File.dirname(__FILE__)); end
|
19
|
-
def self.banner; "appjam project [name]"; end
|
20
|
-
|
21
|
-
# Include related modules
|
22
|
-
include Thor::Actions
|
23
|
-
include Appjam::Generators::Actions
|
14
|
+
|
15
|
+
init_generator
|
24
16
|
|
25
17
|
desc "Description:\n\n\tappjam will generates an new PureMvc application for iphone"
|
26
18
|
|
@@ -29,10 +21,6 @@ module Appjam
|
|
29
21
|
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
30
22
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
31
23
|
|
32
|
-
def in_app_root?
|
33
|
-
File.exist?('Classes')
|
34
|
-
end
|
35
|
-
|
36
24
|
def create_app
|
37
25
|
valid_constant?(options[:project] || name)
|
38
26
|
@project_name = (options[:app] || name).gsub(/\W/, "_").downcase
|
@@ -42,71 +30,9 @@ module Appjam
|
|
42
30
|
self.destination_root = options[:root]
|
43
31
|
project = options[:project]
|
44
32
|
self.behavior = :revoke if options[:destroy]
|
45
|
-
|
46
|
-
empty_directory "#{@project_name}"
|
47
|
-
template "project/Contacts_Prefix.pch.tt", "#{@project_name}/#{@class_name}_Prefix.pch"
|
48
|
-
template "project/Contacts-Info.plist.tt", "#{@project_name}/#{@class_name}-Info.plist"
|
49
|
-
directory "project/Contacts.xcodeproj", "#{@project_name}/#{@class_name}.xcodeproj"
|
50
|
-
fileName = "#{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/project.pbxproj"
|
51
|
-
aFile = File.open(fileName, "r")
|
52
|
-
aString = aFile.read
|
53
|
-
aFile.close
|
54
|
-
|
55
|
-
aString.gsub!('contacts', "#{@project_name}")
|
56
|
-
aString.gsub!('User', "#{@class_name}")
|
57
|
-
aString.gsub!('Contacts', "#{@class_name}")
|
58
|
-
aString.gsub!('Contact', "#{@class_name}")
|
59
|
-
File.open(fileName, "w") { |file| file << aString }
|
60
|
-
|
61
|
-
system "mv #{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/eiffel.pbxuser #{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/#{`whoami`.strip}.pbxuser"
|
62
|
-
system "mv #{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/eiffel.perspectivev3 #{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/#{`whoami`.strip}.perspectivev3"
|
63
|
-
|
64
|
-
template "project/main.m.tt", "#{@project_name}/main.m"
|
65
|
-
|
66
|
-
empty_directory "#{@project_name}/Classes/utils"
|
67
|
-
|
68
|
-
copy_file "project/utils/NSStringWhiteSpace.h", "#{@project_name}/Classes/utils/NSStringWhiteSpace.h"
|
69
|
-
copy_file "project/utils/NSStringWhiteSpace.m", "#{@project_name}/Classes/utils/NSStringWhiteSpace.m"
|
70
|
-
copy_file "project/utils/UIDevice.h", "#{@project_name}/Classes/utils/UIDevice.h"
|
71
|
-
copy_file "project/utils/UIDevice.m", "#{@project_name}/Classes/utils/UIDevice.m"
|
72
|
-
copy_file "project/utils/URLEncodeString.h", "#{@project_name}/Classes/utils/URLEncodeString.h"
|
73
|
-
copy_file "project/utils/URLEncodeString.m", "#{@project_name}/Classes/utils/URLEncodeString.m"
|
74
|
-
|
75
|
-
directory "project/Classes/org", "#{@project_name}/Classes/org"
|
76
|
-
|
77
|
-
template "project/Classes/ContactsAppDelegate.h.tt" , "#{@project_name}/Classes/#{@class_name}AppDelegate.h"
|
78
|
-
template "project/Classes/ContactsAppDelegate.m.tt" , "#{@project_name}/Classes/#{@class_name}AppDelegate.m"
|
79
|
-
template "project/Classes/contacts/ApplicationFacade.h.tt" , "#{@project_name}/Classes/#{@project_name}/ApplicationFacade.h"
|
80
|
-
template "project/Classes/contacts/ApplicationFacade.m.tt" , "#{@project_name}/Classes/#{@project_name}/ApplicationFacade.m"
|
81
|
-
template "project/Classes/contacts/controller/CreateUserCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Create#{@class_name}Command.h"
|
82
|
-
template "project/Classes/contacts/controller/CreateUserCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Create#{@class_name}Command.m"
|
83
|
-
template "project/Classes/contacts/controller/DeleteUserCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Delete#{@class_name}Command.h"
|
84
|
-
template "project/Classes/contacts/controller/DeleteUserCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Delete#{@class_name}Command.m"
|
85
|
-
template "project/Classes/contacts/controller/GetUsersCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Get#{@class_name}sCommand.h"
|
86
|
-
template "project/Classes/contacts/controller/GetUsersCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Get#{@class_name}sCommand.m"
|
87
|
-
template "project/Classes/contacts/controller/StartupCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/StartupCommand.h"
|
88
|
-
template "project/Classes/contacts/controller/StartupCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/StartupCommand.m"
|
89
|
-
template "project/Classes/contacts/controller/UpdateUserCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Update#{@class_name}Command.h"
|
90
|
-
template "project/Classes/contacts/controller/UpdateUserCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Update#{@class_name}Command.m"
|
91
|
-
template "project/Classes/contacts/model/UserProxy.h.tt" , "#{@project_name}/Classes/#{@project_name}/model/#{@class_name}Proxy.h"
|
92
|
-
template "project/Classes/contacts/model/UserProxy.m.tt" , "#{@project_name}/Classes/#{@project_name}/model/#{@class_name}Proxy.m"
|
93
|
-
template "project/Classes/contacts/model/vo/UserVO.h.tt" , "#{@project_name}/Classes/#{@project_name}/model/vo/#{@class_name}VO.h"
|
94
|
-
template "project/Classes/contacts/model/vo/UserVO.m.tt" , "#{@project_name}/Classes/#{@project_name}/model/vo/#{@class_name}VO.m"
|
95
|
-
template "project/Classes/contacts/view/UserMediator.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}Mediator.h"
|
96
|
-
template "project/Classes/contacts/view/UserMediator.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}Mediator.m"
|
97
|
-
template "project/Classes/contacts/view/UserFormMediator.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}FormMediator.h"
|
98
|
-
template "project/Classes/contacts/view/UserFormMediator.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}FormMediator.m"
|
99
|
-
template "project/Classes/contacts/view/UserListMediator.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}ListMediator.h"
|
100
|
-
template "project/Classes/contacts/view/UserListMediator.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}ListMediator.m"
|
101
|
-
template "project/Classes/contacts/view/components/Contacts.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}.h"
|
102
|
-
template "project/Classes/contacts/view/components/Contacts.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}.m"
|
103
|
-
template "project/Classes/contacts/view/components/UserForm.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}Form.h"
|
104
|
-
template "project/Classes/contacts/view/components/UserForm.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}Form.m"
|
105
|
-
template "project/Classes/contacts/view/components/UserList.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}List.h"
|
106
|
-
template "project/Classes/contacts/view/components/UserList.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}List.m"
|
107
33
|
|
34
|
+
eval(File.read(__FILE__) =~ /^__END__\n/ && $' || '')
|
108
35
|
|
109
|
-
|
110
36
|
say (<<-TEXT).gsub(/ {10}/,'')
|
111
37
|
|
112
38
|
=================================================================
|
@@ -119,4 +45,69 @@ module Appjam
|
|
119
45
|
end
|
120
46
|
end # Project
|
121
47
|
end # Generators
|
122
|
-
end # Appjam
|
48
|
+
end # Appjam
|
49
|
+
|
50
|
+
__END__
|
51
|
+
empty_directory "#{@project_name}"
|
52
|
+
template "project/Contacts_Prefix.pch.tt", "#{@project_name}/#{@class_name}_Prefix.pch"
|
53
|
+
template "project/Contacts-Info.plist.tt", "#{@project_name}/#{@class_name}-Info.plist"
|
54
|
+
directory "project/Contacts.xcodeproj", "#{@project_name}/#{@class_name}.xcodeproj"
|
55
|
+
fileName = "#{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/project.pbxproj"
|
56
|
+
aFile = File.open(fileName, "r")
|
57
|
+
aString = aFile.read
|
58
|
+
aFile.close
|
59
|
+
|
60
|
+
aString.gsub!('contacts', "#{@project_name}")
|
61
|
+
aString.gsub!('User', "#{@class_name}")
|
62
|
+
aString.gsub!('Contacts', "#{@class_name}")
|
63
|
+
aString.gsub!('Contact', "#{@class_name}")
|
64
|
+
File.open(fileName, "w") { |file| file << aString }
|
65
|
+
|
66
|
+
system "mv #{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/eiffel.pbxuser #{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/#{`whoami`.strip}.pbxuser"
|
67
|
+
system "mv #{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/eiffel.perspectivev3 #{options[:root]}/#{@project_name}/#{@class_name}.xcodeproj/#{`whoami`.strip}.perspectivev3"
|
68
|
+
|
69
|
+
template "project/main.m.tt", "#{@project_name}/main.m"
|
70
|
+
|
71
|
+
empty_directory "#{@project_name}/Classes/utils"
|
72
|
+
|
73
|
+
copy_file "project/utils/NSStringWhiteSpace.h", "#{@project_name}/Classes/utils/NSStringWhiteSpace.h"
|
74
|
+
copy_file "project/utils/NSStringWhiteSpace.m", "#{@project_name}/Classes/utils/NSStringWhiteSpace.m"
|
75
|
+
copy_file "project/utils/UIDevice.h", "#{@project_name}/Classes/utils/UIDevice.h"
|
76
|
+
copy_file "project/utils/UIDevice.m", "#{@project_name}/Classes/utils/UIDevice.m"
|
77
|
+
copy_file "project/utils/URLEncodeString.h", "#{@project_name}/Classes/utils/URLEncodeString.h"
|
78
|
+
copy_file "project/utils/URLEncodeString.m", "#{@project_name}/Classes/utils/URLEncodeString.m"
|
79
|
+
|
80
|
+
directory "project/Classes/org", "#{@project_name}/Classes/org"
|
81
|
+
|
82
|
+
template "project/Classes/ContactsAppDelegate.h.tt" , "#{@project_name}/Classes/#{@class_name}AppDelegate.h"
|
83
|
+
template "project/Classes/ContactsAppDelegate.m.tt" , "#{@project_name}/Classes/#{@class_name}AppDelegate.m"
|
84
|
+
template "project/Classes/contacts/ApplicationFacade.h.tt" , "#{@project_name}/Classes/#{@project_name}/ApplicationFacade.h"
|
85
|
+
template "project/Classes/contacts/ApplicationFacade.m.tt" , "#{@project_name}/Classes/#{@project_name}/ApplicationFacade.m"
|
86
|
+
template "project/Classes/contacts/controller/CreateUserCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Create#{@class_name}Command.h"
|
87
|
+
template "project/Classes/contacts/controller/CreateUserCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Create#{@class_name}Command.m"
|
88
|
+
template "project/Classes/contacts/controller/DeleteUserCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Delete#{@class_name}Command.h"
|
89
|
+
template "project/Classes/contacts/controller/DeleteUserCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Delete#{@class_name}Command.m"
|
90
|
+
template "project/Classes/contacts/controller/GetUsersCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Get#{@class_name}sCommand.h"
|
91
|
+
template "project/Classes/contacts/controller/GetUsersCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Get#{@class_name}sCommand.m"
|
92
|
+
template "project/Classes/contacts/controller/StartupCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/StartupCommand.h"
|
93
|
+
template "project/Classes/contacts/controller/StartupCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/StartupCommand.m"
|
94
|
+
template "project/Classes/contacts/controller/UpdateUserCommand.h.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Update#{@class_name}Command.h"
|
95
|
+
template "project/Classes/contacts/controller/UpdateUserCommand.m.tt" , "#{@project_name}/Classes/#{@project_name}/controller/Update#{@class_name}Command.m"
|
96
|
+
template "project/Classes/contacts/model/UserProxy.h.tt" , "#{@project_name}/Classes/#{@project_name}/model/#{@class_name}Proxy.h"
|
97
|
+
template "project/Classes/contacts/model/UserProxy.m.tt" , "#{@project_name}/Classes/#{@project_name}/model/#{@class_name}Proxy.m"
|
98
|
+
template "project/Classes/contacts/model/vo/UserVO.h.tt" , "#{@project_name}/Classes/#{@project_name}/model/vo/#{@class_name}VO.h"
|
99
|
+
template "project/Classes/contacts/model/vo/UserVO.m.tt" , "#{@project_name}/Classes/#{@project_name}/model/vo/#{@class_name}VO.m"
|
100
|
+
template "project/Classes/contacts/view/UserMediator.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}Mediator.h"
|
101
|
+
template "project/Classes/contacts/view/UserMediator.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}Mediator.m"
|
102
|
+
template "project/Classes/contacts/view/UserFormMediator.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}FormMediator.h"
|
103
|
+
template "project/Classes/contacts/view/UserFormMediator.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}FormMediator.m"
|
104
|
+
template "project/Classes/contacts/view/UserListMediator.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}ListMediator.h"
|
105
|
+
template "project/Classes/contacts/view/UserListMediator.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/#{@class_name}ListMediator.m"
|
106
|
+
template "project/Classes/contacts/view/components/Contacts.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}.h"
|
107
|
+
template "project/Classes/contacts/view/components/Contacts.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}.m"
|
108
|
+
template "project/Classes/contacts/view/components/UserForm.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}Form.h"
|
109
|
+
template "project/Classes/contacts/view/components/UserForm.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}Form.m"
|
110
|
+
template "project/Classes/contacts/view/components/UserList.h.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}List.h"
|
111
|
+
template "project/Classes/contacts/view/components/UserList.m.tt" , "#{@project_name}/Classes/#{@project_name}/view/components/#{@class_name}List.m"
|
112
|
+
|
113
|
+
|
@@ -6,3 +6,11 @@
|
|
6
6
|
#import <Foundation/Foundation.h>
|
7
7
|
#import <UIKit/UIKit.h>
|
8
8
|
#endif
|
9
|
+
|
10
|
+
#define ALog(format, ...) NSLog((@"%s [L%d] " format), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
|
11
|
+
|
12
|
+
#ifdef DEBUG
|
13
|
+
#define DLog(format, ...) ALog(format, ##__VA_ARGS__);
|
14
|
+
#else
|
15
|
+
#define DLog(...)
|
16
|
+
#endif
|
data/lib/appjam/tasks/plugin.rb
CHANGED
@@ -1,15 +1,9 @@
|
|
1
|
-
TEMPLATE =
|
2
|
-
require '
|
3
|
-
require 'thor/group'
|
4
|
-
require 'thor/actions'
|
5
|
-
require 'active_support/core_ext/string'
|
6
|
-
require 'active_support/inflector'
|
7
|
-
require File.dirname(__FILE__) + '/actions'
|
8
|
-
require 'date'
|
1
|
+
TEMPLATE = <<-BLOCK
|
2
|
+
require File.dirname(__FILE__) + '/jam'
|
9
3
|
|
10
4
|
module Appjam
|
11
5
|
module Generators
|
12
|
-
class Template <
|
6
|
+
class Template < Jam
|
13
7
|
|
14
8
|
# Add this generator to our appjam
|
15
9
|
Appjam::Generators.add_generator(:template, self)
|
@@ -28,14 +22,14 @@ module Appjam
|
|
28
22
|
|
29
23
|
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
30
24
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
31
|
-
|
25
|
+
|
32
26
|
def in_app_root?
|
33
27
|
File.exist?('Classes')
|
34
28
|
end
|
35
29
|
|
36
30
|
def create_app
|
37
31
|
if in_app_root?
|
38
|
-
|
32
|
+
|
39
33
|
say (<<-TEXT).gsub(/ {10}/,'')
|
40
34
|
|
41
35
|
=================================================================
|
@@ -48,7 +42,7 @@ TEXT
|
|
48
42
|
end # Template
|
49
43
|
end # Generators
|
50
44
|
end # Appjam
|
51
|
-
|
45
|
+
BLOCK
|
52
46
|
|
53
47
|
namespace :appjam do
|
54
48
|
namespace :plugin do
|
@@ -62,6 +56,9 @@ namespace :appjam do
|
|
62
56
|
Dir.mkdir plugin_dir unless File.exist?(plugin_dir)
|
63
57
|
File.open(plugin_name, 'w') {|f| f.write(TEMPLATE) }
|
64
58
|
end
|
59
|
+
|
60
|
+
|
65
61
|
|
66
62
|
end # plugin
|
67
63
|
end # appjam
|
64
|
+
|
data/lib/appjam/version.rb
CHANGED
data/lib/appjam/view.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
module Appjam
|
2
|
+
module View
|
3
|
+
extend self
|
4
|
+
|
5
|
+
# Enables hirb and reads a config file from the main repo's config/hirb.yml.
|
6
|
+
def enable
|
7
|
+
unless @enabled
|
8
|
+
Hirb::View.enable(:config_file=>File.join(Appjam.repo.config_dir, 'hirb.yml'))
|
9
|
+
Hirb::Helpers::Table.filter_any = true
|
10
|
+
end
|
11
|
+
@enabled = true
|
12
|
+
end
|
13
|
+
|
14
|
+
# Renders any object via Hirb. Options are passed directly to
|
15
|
+
# {Hirb::Console.render_output}[http://tagaholic.me/hirb/doc/classes/Hirb/Console.html#M000011].
|
16
|
+
def render(object, options={}, return_obj=false)
|
17
|
+
if options[:inspect]
|
18
|
+
puts(object.inspect)
|
19
|
+
else
|
20
|
+
render_object(object, options, return_obj) unless silent_object?(object)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
#:stopdoc:
|
25
|
+
def class_config(klass)
|
26
|
+
opts = (Hirb::View.formatter_config[klass] || {}).dup
|
27
|
+
opts.delete(:ancestor)
|
28
|
+
opts.merge!((opts.delete(:options) || {}).dup)
|
29
|
+
OptionParser.make_mergeable!(opts)
|
30
|
+
opts
|
31
|
+
end
|
32
|
+
|
33
|
+
def toggle_pager
|
34
|
+
Hirb::View.toggle_pager
|
35
|
+
end
|
36
|
+
|
37
|
+
def silent_object?(obj)
|
38
|
+
[nil,false,true].include?(obj)
|
39
|
+
end
|
40
|
+
|
41
|
+
def render_object(object, options={}, return_obj=false)
|
42
|
+
options[:class] ||= :auto_table
|
43
|
+
render_result = Hirb::Console.render_output(object, options)
|
44
|
+
return_obj ? object : render_result
|
45
|
+
end
|
46
|
+
#:startdoc:
|
47
|
+
end
|
48
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appjam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Eiffel Q
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-06 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
type: :runtime
|
@@ -46,8 +46,36 @@ dependencies:
|
|
46
46
|
name: activesupport
|
47
47
|
prerelease: false
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
type: :
|
49
|
+
type: :runtime
|
50
50
|
requirement: &id003 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
hash: 3
|
56
|
+
segments:
|
57
|
+
- 0
|
58
|
+
version: "0"
|
59
|
+
version_requirements: *id003
|
60
|
+
name: cli-colorize
|
61
|
+
prerelease: false
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
type: :runtime
|
64
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
hash: 3
|
70
|
+
segments:
|
71
|
+
- 0
|
72
|
+
version: "0"
|
73
|
+
version_requirements: *id004
|
74
|
+
name: hirb
|
75
|
+
prerelease: false
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
type: :development
|
78
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
51
79
|
none: false
|
52
80
|
requirements:
|
53
81
|
- - ">="
|
@@ -58,12 +86,12 @@ dependencies:
|
|
58
86
|
- 8
|
59
87
|
- 7
|
60
88
|
version: 0.8.7
|
61
|
-
version_requirements: *
|
89
|
+
version_requirements: *id005
|
62
90
|
name: rake
|
63
91
|
prerelease: false
|
64
92
|
- !ruby/object:Gem::Dependency
|
65
93
|
type: :development
|
66
|
-
requirement: &
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
67
95
|
none: false
|
68
96
|
requirements:
|
69
97
|
- - ">="
|
@@ -74,12 +102,12 @@ dependencies:
|
|
74
102
|
- 9
|
75
103
|
- 8
|
76
104
|
version: 0.9.8
|
77
|
-
version_requirements: *
|
105
|
+
version_requirements: *id006
|
78
106
|
name: mocha
|
79
107
|
prerelease: false
|
80
108
|
- !ruby/object:Gem::Dependency
|
81
109
|
type: :development
|
82
|
-
requirement: &
|
110
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
83
111
|
none: false
|
84
112
|
requirements:
|
85
113
|
- - ">="
|
@@ -90,12 +118,12 @@ dependencies:
|
|
90
118
|
- 5
|
91
119
|
- 0
|
92
120
|
version: 0.5.0
|
93
|
-
version_requirements: *
|
121
|
+
version_requirements: *id007
|
94
122
|
name: rack-test
|
95
123
|
prerelease: false
|
96
124
|
- !ruby/object:Gem::Dependency
|
97
125
|
type: :development
|
98
|
-
requirement: &
|
126
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
99
127
|
none: false
|
100
128
|
requirements:
|
101
129
|
- - ">="
|
@@ -106,12 +134,12 @@ dependencies:
|
|
106
134
|
- 2
|
107
135
|
- 8
|
108
136
|
version: 1.2.8
|
109
|
-
version_requirements: *
|
137
|
+
version_requirements: *id008
|
110
138
|
name: fakeweb
|
111
139
|
prerelease: false
|
112
140
|
- !ruby/object:Gem::Dependency
|
113
141
|
type: :development
|
114
|
-
requirement: &
|
142
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
115
143
|
none: false
|
116
144
|
requirements:
|
117
145
|
- - "="
|
@@ -122,12 +150,12 @@ dependencies:
|
|
122
150
|
- 5
|
123
151
|
- 1
|
124
152
|
version: 0.5.1
|
125
|
-
version_requirements: *
|
153
|
+
version_requirements: *id009
|
126
154
|
name: webrat
|
127
155
|
prerelease: false
|
128
156
|
- !ruby/object:Gem::Dependency
|
129
157
|
type: :development
|
130
|
-
requirement: &
|
158
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
131
159
|
none: false
|
132
160
|
requirements:
|
133
161
|
- - ">="
|
@@ -138,12 +166,12 @@ dependencies:
|
|
138
166
|
- 10
|
139
167
|
- 3
|
140
168
|
version: 2.10.3
|
141
|
-
version_requirements: *
|
169
|
+
version_requirements: *id010
|
142
170
|
name: shoulda
|
143
171
|
prerelease: false
|
144
172
|
- !ruby/object:Gem::Dependency
|
145
173
|
type: :development
|
146
|
-
requirement: &
|
174
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
147
175
|
none: false
|
148
176
|
requirements:
|
149
177
|
- - ">="
|
@@ -154,12 +182,12 @@ dependencies:
|
|
154
182
|
- 3
|
155
183
|
- 1
|
156
184
|
version: 2.3.1
|
157
|
-
version_requirements: *
|
185
|
+
version_requirements: *id011
|
158
186
|
name: uuid
|
159
187
|
prerelease: false
|
160
188
|
- !ruby/object:Gem::Dependency
|
161
189
|
type: :development
|
162
|
-
requirement: &
|
190
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
163
191
|
none: false
|
164
192
|
requirements:
|
165
193
|
- - ">="
|
@@ -170,12 +198,12 @@ dependencies:
|
|
170
198
|
- 1
|
171
199
|
- 2
|
172
200
|
version: 2.1.2
|
173
|
-
version_requirements: *
|
201
|
+
version_requirements: *id012
|
174
202
|
name: builder
|
175
203
|
prerelease: false
|
176
204
|
- !ruby/object:Gem::Dependency
|
177
205
|
type: :development
|
178
|
-
requirement: &
|
206
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
179
207
|
none: false
|
180
208
|
requirements:
|
181
209
|
- - ~>
|
@@ -186,12 +214,12 @@ dependencies:
|
|
186
214
|
- 5
|
187
215
|
- 2
|
188
216
|
version: 1.5.2
|
189
|
-
version_requirements: *
|
217
|
+
version_requirements: *id013
|
190
218
|
name: jeweler
|
191
219
|
prerelease: false
|
192
220
|
- !ruby/object:Gem::Dependency
|
193
221
|
type: :development
|
194
|
-
requirement: &
|
222
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
195
223
|
none: false
|
196
224
|
requirements:
|
197
225
|
- - ~>
|
@@ -202,12 +230,12 @@ dependencies:
|
|
202
230
|
- 9
|
203
231
|
- 8
|
204
232
|
version: 0.9.8
|
205
|
-
version_requirements: *
|
233
|
+
version_requirements: *id014
|
206
234
|
name: rcov
|
207
235
|
prerelease: false
|
208
236
|
- !ruby/object:Gem::Dependency
|
209
237
|
type: :development
|
210
|
-
requirement: &
|
238
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
211
239
|
none: false
|
212
240
|
requirements:
|
213
241
|
- - ">="
|
@@ -216,12 +244,12 @@ dependencies:
|
|
216
244
|
segments:
|
217
245
|
- 0
|
218
246
|
version: "0"
|
219
|
-
version_requirements: *
|
247
|
+
version_requirements: *id015
|
220
248
|
name: grit
|
221
249
|
prerelease: false
|
222
250
|
- !ruby/object:Gem::Dependency
|
223
251
|
type: :development
|
224
|
-
requirement: &
|
252
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
225
253
|
none: false
|
226
254
|
requirements:
|
227
255
|
- - ">="
|
@@ -230,12 +258,12 @@ dependencies:
|
|
230
258
|
segments:
|
231
259
|
- 0
|
232
260
|
version: "0"
|
233
|
-
version_requirements: *
|
261
|
+
version_requirements: *id016
|
234
262
|
name: i18n
|
235
263
|
prerelease: false
|
236
264
|
- !ruby/object:Gem::Dependency
|
237
265
|
type: :development
|
238
|
-
requirement: &
|
266
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
239
267
|
none: false
|
240
268
|
requirements:
|
241
269
|
- - ">="
|
@@ -246,12 +274,12 @@ dependencies:
|
|
246
274
|
- 9
|
247
275
|
- 1
|
248
276
|
version: 0.9.1
|
249
|
-
version_requirements: *
|
277
|
+
version_requirements: *id017
|
250
278
|
name: ruby-prof
|
251
279
|
prerelease: false
|
252
280
|
- !ruby/object:Gem::Dependency
|
253
281
|
type: :development
|
254
|
-
requirement: &
|
282
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
255
283
|
none: false
|
256
284
|
requirements:
|
257
285
|
- - ">="
|
@@ -261,12 +289,12 @@ dependencies:
|
|
261
289
|
- 1
|
262
290
|
- 0
|
263
291
|
version: "1.0"
|
264
|
-
version_requirements: *
|
292
|
+
version_requirements: *id018
|
265
293
|
name: system_timer
|
266
294
|
prerelease: false
|
267
295
|
- !ruby/object:Gem::Dependency
|
268
296
|
type: :runtime
|
269
|
-
requirement: &
|
297
|
+
requirement: &id019 !ruby/object:Gem::Requirement
|
270
298
|
none: false
|
271
299
|
requirements:
|
272
300
|
- - ">="
|
@@ -275,12 +303,12 @@ dependencies:
|
|
275
303
|
segments:
|
276
304
|
- 0
|
277
305
|
version: "0"
|
278
|
-
version_requirements: *
|
306
|
+
version_requirements: *id019
|
279
307
|
name: activesupport
|
280
308
|
prerelease: false
|
281
309
|
- !ruby/object:Gem::Dependency
|
282
310
|
type: :runtime
|
283
|
-
requirement: &
|
311
|
+
requirement: &id020 !ruby/object:Gem::Requirement
|
284
312
|
none: false
|
285
313
|
requirements:
|
286
314
|
- - ">="
|
@@ -289,12 +317,12 @@ dependencies:
|
|
289
317
|
segments:
|
290
318
|
- 0
|
291
319
|
version: "0"
|
292
|
-
version_requirements: *
|
320
|
+
version_requirements: *id020
|
293
321
|
name: grit
|
294
322
|
prerelease: false
|
295
323
|
- !ruby/object:Gem::Dependency
|
296
324
|
type: :runtime
|
297
|
-
requirement: &
|
325
|
+
requirement: &id021 !ruby/object:Gem::Requirement
|
298
326
|
none: false
|
299
327
|
requirements:
|
300
328
|
- - ">="
|
@@ -303,9 +331,37 @@ dependencies:
|
|
303
331
|
segments:
|
304
332
|
- 0
|
305
333
|
version: "0"
|
306
|
-
version_requirements: *
|
334
|
+
version_requirements: *id021
|
307
335
|
name: i18n
|
308
336
|
prerelease: false
|
337
|
+
- !ruby/object:Gem::Dependency
|
338
|
+
type: :runtime
|
339
|
+
requirement: &id022 !ruby/object:Gem::Requirement
|
340
|
+
none: false
|
341
|
+
requirements:
|
342
|
+
- - ">="
|
343
|
+
- !ruby/object:Gem::Version
|
344
|
+
hash: 3
|
345
|
+
segments:
|
346
|
+
- 0
|
347
|
+
version: "0"
|
348
|
+
version_requirements: *id022
|
349
|
+
name: hirb
|
350
|
+
prerelease: false
|
351
|
+
- !ruby/object:Gem::Dependency
|
352
|
+
type: :runtime
|
353
|
+
requirement: &id023 !ruby/object:Gem::Requirement
|
354
|
+
none: false
|
355
|
+
requirements:
|
356
|
+
- - ">="
|
357
|
+
- !ruby/object:Gem::Version
|
358
|
+
hash: 3
|
359
|
+
segments:
|
360
|
+
- 0
|
361
|
+
version: "0"
|
362
|
+
version_requirements: *id023
|
363
|
+
name: cli-colorize
|
364
|
+
prerelease: false
|
309
365
|
description: generate iphone app skeleton based on pure mvc framework
|
310
366
|
email: eiffelqiu@gmail.com
|
311
367
|
executables:
|
@@ -400,6 +456,7 @@ files:
|
|
400
456
|
- lib/appjam/tasks.rb
|
401
457
|
- lib/appjam/tasks/plugin.rb
|
402
458
|
- lib/appjam/version.rb
|
459
|
+
- lib/appjam/view.rb
|
403
460
|
- LICENSE.txt
|
404
461
|
- README.rdoc
|
405
462
|
- test/helper.rb
|