dynamics 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/base/Rakefile CHANGED
@@ -5,37 +5,12 @@ $LOAD_PATH.unshift('/Library/RubyMotion/lib')
5
5
  require 'motion/project'
6
6
  require 'rubygems'
7
7
  require 'bubble-wrap'
8
-
9
- def render_code(name)
10
- f = File.open(name)
11
- content = f.read
12
- f.close
13
- content
14
- end
8
+ require 'dynamics'
15
9
 
16
10
  Motion::Project::App.setup do |app|
17
11
  app.name = ''
18
12
  app.delegate_class = ''
19
13
 
20
- # Copy gem library to tmp location
21
- tmp_dir = File.join(File.dirname(__FILE__), 'tmp')
22
- f = File.new(File.join(tmp_dir, 'dynamics.rb'), 'w+')
23
- f.write(render_code(File.join(Gem.bin_path('dynamics', 'dynamics').gsub(File.join('bin', 'dynamics'), ''), 'lib', 'dynamics.rb')))
24
- f.close
25
-
26
- # Parse layouts
27
- layouts_dir = File.join(File.dirname(__FILE__), 'templates', 'layouts')
28
- lib_code = render_code(File.join(tmp_dir, 'dynamics.rb'))
29
- new_code = lib_code
30
- lib_code.scan(/# \@layouts\/[a-z_]+\@/) do |layout|
31
- layout_file = '_' + layout.split('/')[1].chomp('@') + '.rb'
32
- layout_code = render_code(File.join(layouts_dir, layout_file))
33
- new_code = new_code.gsub(layout, layout_code)
34
- end
35
- f = File.open(File.join(tmp_dir, 'dynamics.rb'), 'w+')
36
- f.write(new_code)
37
- f.close
38
-
39
- app.files.unshift(File.join(tmp_dir, 'dynamics.rb'))
14
+ Dynamics::setup_framework(app, File.dirname(__FILE__))
40
15
  end
41
16
 
@@ -0,0 +1,51 @@
1
+
2
+ module Dynamics
3
+
4
+ class Application
5
+ def initialize(layout)
6
+ @layout = layout
7
+ end
8
+
9
+ def application(application, didFinishLaunchingWithOptions:launchOptions)
10
+ @window = MainView.alloc.initWithFrame(UIScreen.mainScreen.bounds)
11
+ @window.makeKeyAndVisible
12
+ if @layout == 'Navigation'
13
+ # @@Navigation@@
14
+ # @@End@@
15
+
16
+ @window.rootViewController = UINavigationController.alloc.initWithRootViewController(controller)
17
+ elsif @layout == 'Tab Bar'
18
+ controller = MainController.alloc.initWithNibName(nil, bundle: nil)
19
+ nav_controller = UINavigationController.alloc.initWithRootViewController(controller)
20
+
21
+ tab_controller = UITabBarController.alloc.initWithNibName(nil, bundle: nil)
22
+ tab_controller.viewControllers = [nav_controller]
23
+
24
+ @window.rootViewController = tab_controller
25
+ else
26
+ @window.rootViewController = MainController.alloc.initWithNibName(nil, bundle: nil)
27
+ end
28
+ true
29
+ end
30
+ end
31
+
32
+ class Controller < UIViewController
33
+ attr_accessor :next_controller
34
+
35
+ def on_next
36
+ self.navigationController.pushViewController(@next_controller, animated: true)
37
+ end
38
+
39
+ private
40
+
41
+ def viewDidLoad
42
+ super
43
+
44
+ self.title = App.name
45
+ self.view.backgroundColor = UIColor.whiteColor
46
+ end
47
+ end
48
+
49
+ class Window < UIWindow
50
+ end
51
+ end
data/bin/dynamics CHANGED
@@ -1,84 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- def create_scaffold(name)
4
- if File.exists?(name)
5
- puts "Error, #{name} already exists!"
6
- else
7
- Dir.mkdir(name)
8
-
9
- # Base
10
-
11
- app_dir = File.join(name, 'app')
12
- build_dir = File.join(name, 'build')
13
- resources_dir = File.join(name, 'resources')
14
- templates_dir = File.join(name, 'templates')
15
- tmp_dir = File.join(name, 'tmp')
16
-
17
- Dir.mkdir(app_dir)
18
- Dir.mkdir(build_dir)
19
- Dir.mkdir(resources_dir)
20
- Dir.mkdir(templates_dir)
21
- Dir.mkdir(tmp_dir)
22
-
23
- base_dir = File.join(File.dirname(__FILE__), '..', 'base')
24
-
25
- f = File.new(File.join(name, 'Rakefile'), 'w+')
26
- code = render_code(File.join(base_dir, 'Rakefile'))
27
- code.gsub!("app.name = ''", "app.name = '#{name}'")
28
- code.gsub!("app.delegate_class = ''", "app.delegate_class = '#{name}'")
29
- f.write(code)
30
- f.close
31
-
32
- f = File.new(File.join(app_dir, 'application.rb'), 'w+')
33
- code = render_code(File.join(base_dir, 'app', 'application.rb'))
34
- code.gsub!("class Application", "class #{name}")
35
- f.write(code)
36
- f.close
37
-
38
- # Controllers
39
-
40
- controllers_dir = File.join(app_dir, 'controllers')
41
- Dir.mkdir(controllers_dir)
42
-
43
- f = File.new(File.join(controllers_dir, 'main_controller.rb'), 'w+')
44
- f.write(render_code(File.join(base_dir, 'app', 'controllers', 'main_controller.rb')))
45
- f.close
46
-
47
- f = File.new(File.join(controllers_dir, 'sub1_controller.rb'), 'w+')
48
- f.write(render_code(File.join(base_dir, 'app', 'controllers', 'sub1_controller.rb')))
49
- f.close
50
-
51
- f = File.new(File.join(controllers_dir, 'sub2_controller.rb'), 'w+')
52
- f.write(render_code(File.join(base_dir, 'app', 'controllers', 'sub2_controller.rb')))
53
- f.close
54
-
55
- # Views
56
-
57
- views_dir = File.join(app_dir, 'views')
58
- Dir.mkdir(views_dir)
59
-
60
- f = File.new(File.join(views_dir, 'main_view.rb'), 'w+')
61
- f.write(render_code(File.join(base_dir, 'app', 'views', 'main_view.rb')))
62
- f.close
63
-
64
- f = File.new(File.join(views_dir, 'sub1_view.rb'), 'w+')
65
- f.write(render_code(File.join(base_dir, 'app', 'views', 'sub1_view.rb')))
66
- f.close
67
-
68
- f = File.new(File.join(views_dir, 'sub2_view.rb'), 'w+')
69
- f.write(render_code(File.join(base_dir, 'app', 'views', 'sub2_view.rb')))
70
- f.close
71
-
72
- # Layouts
73
-
74
- layouts_dir = File.join(templates_dir, 'layouts')
75
- Dir.mkdir(layouts_dir)
76
-
77
- f = File.new(File.join(templates_dir, 'layouts', '_navigation.rb'), 'w+')
78
- f.write(render_code(File.join(base_dir, 'templates', 'layouts', '_navigation.rb')))
79
- f.close
80
- end
81
- end
3
+ require 'rubygems'
4
+ require 'dynamics'
82
5
 
83
6
  def display_usage
84
7
  str = "Dynamics is a framework for RubyMotion.\n"
@@ -92,13 +15,6 @@ def display_usage
92
15
  puts str
93
16
  end
94
17
 
95
- def render_code(name)
96
- f = File.open(name)
97
- content = f.read
98
- f.close
99
- content
100
- end
101
-
102
18
  i = 1
103
19
  for arg in ARGV
104
20
  case i
@@ -110,7 +26,7 @@ for arg in ARGV
110
26
  end
111
27
  case command
112
28
  when '-h', '--help' then display_usage
113
- when 'create' then create_scaffold(args)
29
+ when 'create' then Dynamics::create_scaffold(args, File.dirname(__FILE__))
114
30
  else display_usage
115
31
  end
116
32
 
data/lib/dynamics.rb CHANGED
@@ -1,50 +1,120 @@
1
1
 
2
2
  module Dynamics
3
-
4
- class Application
5
- def initialize(layout)
6
- @layout = layout
3
+
4
+ def self.create_scaffold(name, path)
5
+ if File.exists?(name)
6
+ puts "Error, #{name} already exists!"
7
+ else
8
+ Dir.mkdir(name)
9
+
10
+ # Base
11
+
12
+ app_dir = File.join(name, 'app')
13
+ build_dir = File.join(name, 'build')
14
+ resources_dir = File.join(name, 'resources')
15
+ lib_dir = File.join(name, 'lib')
16
+
17
+ Dir.mkdir(app_dir)
18
+ Dir.mkdir(build_dir)
19
+ Dir.mkdir(resources_dir)
20
+ Dir.mkdir(lib_dir)
21
+
22
+ base_dir = File.join(File.dirname(__FILE__), '..', 'base')
23
+
24
+ f = File.new(File.join(name, 'Rakefile'), 'w+')
25
+ code = render_code(File.join(base_dir, 'Rakefile'))
26
+ code.gsub!("app.name = ''", "app.name = '#{name}'")
27
+ code.gsub!("app.delegate_class = ''", "app.delegate_class = '#{name}'")
28
+ f.write(code)
29
+ f.close
30
+
31
+ # App
32
+
33
+ f = File.new(File.join(app_dir, 'application.rb'), 'w+')
34
+ code = render_code(File.join(base_dir, 'app', 'application.rb'))
35
+ code.gsub!("class Application", "class #{name}")
36
+ f.write(code)
37
+ f.close
38
+
39
+ # Controllers
40
+
41
+ controllers_dir = File.join(app_dir, 'controllers')
42
+ Dir.mkdir(controllers_dir)
43
+
44
+ f = File.new(File.join(controllers_dir, 'main_controller.rb'), 'w+')
45
+ f.write(render_code(File.join(base_dir, 'app', 'controllers', 'main_controller.rb')))
46
+ f.close
47
+
48
+ f = File.new(File.join(controllers_dir, 'sub1_controller.rb'), 'w+')
49
+ f.write(render_code(File.join(base_dir, 'app', 'controllers', 'sub1_controller.rb')))
50
+ f.close
51
+
52
+ f = File.new(File.join(controllers_dir, 'sub2_controller.rb'), 'w+')
53
+ f.write(render_code(File.join(base_dir, 'app', 'controllers', 'sub2_controller.rb')))
54
+ f.close
55
+
56
+ # Views
57
+
58
+ views_dir = File.join(app_dir, 'views')
59
+ Dir.mkdir(views_dir)
60
+
61
+ f = File.new(File.join(views_dir, 'main_view.rb'), 'w+')
62
+ f.write(render_code(File.join(base_dir, 'app', 'views', 'main_view.rb')))
63
+ f.close
64
+
65
+ f = File.new(File.join(views_dir, 'sub1_view.rb'), 'w+')
66
+ f.write(render_code(File.join(base_dir, 'app', 'views', 'sub1_view.rb')))
67
+ f.close
68
+
69
+ f = File.new(File.join(views_dir, 'sub2_view.rb'), 'w+')
70
+ f.write(render_code(File.join(base_dir, 'app', 'views', 'sub2_view.rb')))
71
+ f.close
72
+
73
+ # Lib
74
+
75
+ f = File.new(File.join(lib_dir, 'dynamics.rb'), 'w+')
76
+ f.write(render_code(File.join(base_dir, 'templates', 'dynamics.rb')) )
77
+ f.close
7
78
  end
8
-
9
- def application(application, didFinishLaunchingWithOptions:launchOptions)
10
- @window = MainView.alloc.initWithFrame(UIScreen.mainScreen.bounds)
11
- @window.makeKeyAndVisible
12
- if @layout == 'Navigation'
13
- # @layouts/navigation@
14
-
15
- @window.rootViewController = UINavigationController.alloc.initWithRootViewController(controller)
16
- elsif @layout == 'Tab Bar'
17
- controller = MainController.alloc.initWithNibName(nil, bundle: nil)
18
- nav_controller = UINavigationController.alloc.initWithRootViewController(controller)
19
-
20
- tab_controller = UITabBarController.alloc.initWithNibName(nil, bundle: nil)
21
- tab_controller.viewControllers = [nav_controller]
22
-
23
- @window.rootViewController = tab_controller
24
- else
25
- @window.rootViewController = MainController.alloc.initWithNibName(nil, bundle: nil)
26
- end
27
- true
28
- end
29
79
  end
30
-
31
- class Controller < UIViewController
32
- attr_accessor :next_controller
33
80
 
34
- def on_next
35
- self.navigationController.pushViewController(@next_controller, animated: true)
81
+ def self.setup_framework(app, path)
82
+ lib_dir = File.join(path, 'lib')
83
+ lib_code = render_code(File.join(lib_dir, 'dynamics.rb'))
84
+ new_code = lib_code
85
+ lib_code.scan(/# \@\@.+\@\@.+# \@\@End\@\@/m) do |block|
86
+ block.scan(/# \@\@.+\@\@/) do |placeholder|
87
+ layout = placeholder.split(' ')[1].gsub('@', '')
88
+ case layout
89
+ when 'Navigation' then new_code = new_code.gsub(block, code_navigation)
90
+ end
91
+ end
36
92
  end
37
-
38
- private
39
-
40
- def viewDidLoad
41
- super
42
-
43
- self.title = App.name
44
- self.view.backgroundColor = UIColor.whiteColor
45
- end
93
+ f = File.open(File.join(lib_dir, 'dynamics.rb'), 'w+')
94
+ f.write(new_code)
95
+ f.close
96
+
97
+ app.files.unshift(File.join(lib_dir, 'dynamics.rb'))
46
98
  end
47
99
 
48
- class Window < UIWindow
49
- end
100
+ private
101
+
102
+ def self.code_navigation
103
+ code = "# @@Navigation@@\n"
104
+ code += "controller = MainController.alloc.initWithNibName(nil, bundle: nil)\n"
105
+ code += "controller.navigationItem.rightBarButtonItem = UIBarButtonItem.alloc.initWithTitle('Next', style: UIBarButtonItemStyleBordered, target:controller, action:'on_next')\n"
106
+ code += "sub1_controller = Sub1Controller.alloc.initWithNibName(nil, bundle: nil)\n"
107
+ code += "sub1_controller.navigationItem.rightBarButtonItem = UIBarButtonItem.alloc.initWithTitle('Next', style: UIBarButtonItemStyleBordered, target:sub1_controller, action:'on_next')\n"
108
+ code += "controller.next_controller = sub1_controller\n"
109
+ code += "sub2_controller = Sub2Controller.alloc.initWithNibName(nil, bundle: nil)\n"
110
+ code += "sub1_controller.next_controller = sub2_controller\n"
111
+ code += "# @@End@@"
112
+ end
113
+
114
+ def self.render_code(name)
115
+ f = File.open(name)
116
+ content = f.read
117
+ f.close
118
+ content
119
+ end
50
120
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamics
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 8
10
- version: 0.0.8
9
+ - 9
10
+ version: 0.0.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ng Say Joe
@@ -36,7 +36,7 @@ files:
36
36
  - base/app/views/main_view.rb
37
37
  - base/app/views/sub1_view.rb
38
38
  - base/app/views/sub2_view.rb
39
- - base/templates/layouts/_navigation.rb
39
+ - base/templates/dynamics.rb
40
40
  - bin/dynamics
41
41
  homepage: http://www.dynamics.io/
42
42
  licenses: []
@@ -1,7 +0,0 @@
1
- controller = MainController.alloc.initWithNibName(nil, bundle: nil)
2
- controller.navigationItem.rightBarButtonItem = UIBarButtonItem.alloc.initWithTitle("Next", style: UIBarButtonItemStyleBordered, target:controller, action:'on_next')
3
- sub1_controller = Sub1Controller.alloc.initWithNibName(nil, bundle: nil)
4
- sub1_controller.navigationItem.rightBarButtonItem = UIBarButtonItem.alloc.initWithTitle("Next", style: UIBarButtonItemStyleBordered, target:sub1_controller, action:'on_next')
5
- controller.next_controller = sub1_controller
6
- sub2_controller = Sub2Controller.alloc.initWithNibName(nil, bundle: nil)
7
- sub1_controller.next_controller = sub2_controller