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 +2 -27
- data/base/templates/dynamics.rb +51 -0
- data/bin/dynamics +3 -87
- data/lib/dynamics.rb +111 -41
- metadata +4 -4
- data/base/templates/layouts/_navigation.rb +0 -7
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
|
-
|
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
|
-
|
4
|
-
|
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
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
35
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
49
|
-
|
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:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
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/
|
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
|