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 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 '-'*70
39
- puts "Please specify generator to use (#{Appjam::Generators.mappings.keys.join(", ")})"
40
- puts '-'*70
41
- puts 'Usage1: appjam project todo # generate iphone project skeleton'
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
- # Define the source template root
17
- def self.source_root; File.expand_path(File.dirname(__FILE__)); end
18
- def self.banner; "appjam jam [name]"; end
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
- # Include related modules
21
- include Thor::Actions
22
- include Appjam::Generators::Actions
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 jam"
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[:project] || name)
37
- @jam_name = (options[:jam] || name).gsub(/\W/, "_").downcase
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[:jam]
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
- # Define the source template root
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
- header = "
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
- # Define the source template root
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
@@ -1,15 +1,9 @@
1
- TEMPLATE = (<<-TEMPLATE)
2
- require 'thor'
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 < Thor::Group
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
- TEMPLATE
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
+
@@ -2,7 +2,7 @@ module Appjam
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 4
5
+ PATCH = 5
6
6
  BUILD = ''
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.').chomp('.')
@@ -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: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
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-04 00:00:00 Z
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: :development
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: *id003
89
+ version_requirements: *id005
62
90
  name: rake
63
91
  prerelease: false
64
92
  - !ruby/object:Gem::Dependency
65
93
  type: :development
66
- requirement: &id004 !ruby/object:Gem::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: *id004
105
+ version_requirements: *id006
78
106
  name: mocha
79
107
  prerelease: false
80
108
  - !ruby/object:Gem::Dependency
81
109
  type: :development
82
- requirement: &id005 !ruby/object:Gem::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: *id005
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: &id006 !ruby/object:Gem::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: *id006
137
+ version_requirements: *id008
110
138
  name: fakeweb
111
139
  prerelease: false
112
140
  - !ruby/object:Gem::Dependency
113
141
  type: :development
114
- requirement: &id007 !ruby/object:Gem::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: *id007
153
+ version_requirements: *id009
126
154
  name: webrat
127
155
  prerelease: false
128
156
  - !ruby/object:Gem::Dependency
129
157
  type: :development
130
- requirement: &id008 !ruby/object:Gem::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: *id008
169
+ version_requirements: *id010
142
170
  name: shoulda
143
171
  prerelease: false
144
172
  - !ruby/object:Gem::Dependency
145
173
  type: :development
146
- requirement: &id009 !ruby/object:Gem::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: *id009
185
+ version_requirements: *id011
158
186
  name: uuid
159
187
  prerelease: false
160
188
  - !ruby/object:Gem::Dependency
161
189
  type: :development
162
- requirement: &id010 !ruby/object:Gem::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: *id010
201
+ version_requirements: *id012
174
202
  name: builder
175
203
  prerelease: false
176
204
  - !ruby/object:Gem::Dependency
177
205
  type: :development
178
- requirement: &id011 !ruby/object:Gem::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: *id011
217
+ version_requirements: *id013
190
218
  name: jeweler
191
219
  prerelease: false
192
220
  - !ruby/object:Gem::Dependency
193
221
  type: :development
194
- requirement: &id012 !ruby/object:Gem::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: *id012
233
+ version_requirements: *id014
206
234
  name: rcov
207
235
  prerelease: false
208
236
  - !ruby/object:Gem::Dependency
209
237
  type: :development
210
- requirement: &id013 !ruby/object:Gem::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: *id013
247
+ version_requirements: *id015
220
248
  name: grit
221
249
  prerelease: false
222
250
  - !ruby/object:Gem::Dependency
223
251
  type: :development
224
- requirement: &id014 !ruby/object:Gem::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: *id014
261
+ version_requirements: *id016
234
262
  name: i18n
235
263
  prerelease: false
236
264
  - !ruby/object:Gem::Dependency
237
265
  type: :development
238
- requirement: &id015 !ruby/object:Gem::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: *id015
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: &id016 !ruby/object:Gem::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: *id016
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: &id017 !ruby/object:Gem::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: *id017
306
+ version_requirements: *id019
279
307
  name: activesupport
280
308
  prerelease: false
281
309
  - !ruby/object:Gem::Dependency
282
310
  type: :runtime
283
- requirement: &id018 !ruby/object:Gem::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: *id018
320
+ version_requirements: *id020
293
321
  name: grit
294
322
  prerelease: false
295
323
  - !ruby/object:Gem::Dependency
296
324
  type: :runtime
297
- requirement: &id019 !ruby/object:Gem::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: *id019
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