cappruby 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/cappruby.gemspec +15 -5
- data/demos/simple_app/lib/application.rb +16 -19
- data/demos/twitter_client/config/build.yml +0 -0
- data/demos/twitter_client/lib/application.rb +23 -0
- data/framework/button.js +74 -0
- data/framework/mapings.js +2 -0
- data/framework/slider.js +50 -0
- data/framework/variable.js +8 -0
- data/framework/window.js +1 -1
- data/gen/app/config/build.yml +0 -0
- data/gen/app/lib/application.rb +23 -0
- data/lib/cappruby/app_builder.rb +1 -1
- data/lib/cappruby/app_generator.rb +80 -0
- data/lib/cappruby/ruby_builder.rb +19 -2
- data/lib/cappruby.rb +8 -5
- metadata +20 -3
data/Rakefile
CHANGED
@@ -10,7 +10,8 @@ begin
|
|
10
10
|
gem.email = "adam@adambeynon.com"
|
11
11
|
gem.homepage = "http://github.com/adambeynon/cappruby"
|
12
12
|
gem.authors = ["Adam Beynon"]
|
13
|
-
gem.
|
13
|
+
gem.add_dependency "vienna", ">= 0.0.5"
|
14
|
+
gem.add_development_dependency "racc", ">= 1.4.6"
|
14
15
|
end
|
15
16
|
Jeweler::GemcutterTasks.new
|
16
17
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/cappruby.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cappruby}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Adam Beynon"]
|
12
|
-
s.date = %q{2010-01
|
12
|
+
s.date = %q{2010-02-01}
|
13
13
|
s.default_executable = %q{cappruby}
|
14
14
|
s.description = %q{cappruby}
|
15
15
|
s.email = %q{adam@adambeynon.com}
|
@@ -23,7 +23,10 @@ Gem::Specification.new do |s|
|
|
23
23
|
"demos/simple_app/config/build.yml",
|
24
24
|
"demos/simple_app/lib/application.rb",
|
25
25
|
"demos/simple_app/lib/menu.rb",
|
26
|
+
"demos/twitter_client/config/build.yml",
|
27
|
+
"demos/twitter_client/lib/application.rb",
|
26
28
|
"framework/array.js",
|
29
|
+
"framework/button.js",
|
27
30
|
"framework/cappruby.js",
|
28
31
|
"framework/class.js",
|
29
32
|
"framework/enumerator.js",
|
@@ -36,12 +39,16 @@ Gem::Specification.new do |s|
|
|
36
39
|
"framework/object.js",
|
37
40
|
"framework/objj_additions.js",
|
38
41
|
"framework/proc.js",
|
42
|
+
"framework/slider.js",
|
39
43
|
"framework/string.js",
|
40
44
|
"framework/variable.js",
|
41
45
|
"framework/vm.js",
|
42
46
|
"framework/window.js",
|
47
|
+
"gen/app/config/build.yml",
|
48
|
+
"gen/app/lib/application.rb",
|
43
49
|
"lib/cappruby.rb",
|
44
50
|
"lib/cappruby/app_builder.rb",
|
51
|
+
"lib/cappruby/app_generator.rb",
|
45
52
|
"lib/cappruby/framework_builder.rb",
|
46
53
|
"lib/cappruby/ruby_builder.rb"
|
47
54
|
]
|
@@ -56,12 +63,15 @@ Gem::Specification.new do |s|
|
|
56
63
|
s.specification_version = 3
|
57
64
|
|
58
65
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
59
|
-
s.
|
66
|
+
s.add_runtime_dependency(%q<vienna>, [">= 0.0.5"])
|
67
|
+
s.add_development_dependency(%q<racc>, [">= 1.4.6"])
|
60
68
|
else
|
61
|
-
s.add_dependency(%q<vienna>, [">= 0"])
|
69
|
+
s.add_dependency(%q<vienna>, [">= 0.0.5"])
|
70
|
+
s.add_dependency(%q<racc>, [">= 1.4.6"])
|
62
71
|
end
|
63
72
|
else
|
64
|
-
s.add_dependency(%q<vienna>, [">= 0"])
|
73
|
+
s.add_dependency(%q<vienna>, [">= 0.0.5"])
|
74
|
+
s.add_dependency(%q<racc>, [">= 1.4.6"])
|
65
75
|
end
|
66
76
|
end
|
67
77
|
|
@@ -1,29 +1,26 @@
|
|
1
1
|
class AppController
|
2
2
|
|
3
|
-
attr_accessor :adam
|
4
|
-
|
5
3
|
def applicationWillFinishLaunching(notification)
|
6
|
-
|
7
|
-
window :title => "Main Window" do |win|
|
8
|
-
|
9
|
-
end
|
4
|
+
main_window
|
10
5
|
end
|
11
6
|
|
12
7
|
def applicationDidFinishLaunching(notification)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
# return or build the main window
|
12
|
+
def main_window
|
13
|
+
@main_window ||= window :title => "Main Window" do |win|
|
14
|
+
# A button example
|
15
|
+
button :title => "First Button" do |btn|
|
16
|
+
btn.on_action { puts "Wow, button was clicked" }
|
17
|
+
win << btn
|
18
|
+
end
|
19
|
+
# A simple slider (doesnt send actions..)
|
20
|
+
slider :min => 0, :max => 1000, :value => 900 do |slider|
|
21
|
+
win << slider
|
22
|
+
end
|
19
23
|
end
|
20
|
-
|
21
|
-
bob = 20
|
22
|
-
|
23
24
|
end
|
24
25
|
|
25
26
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# AppController class is the CPApp delegate
|
2
|
+
class AppController
|
3
|
+
|
4
|
+
def applicationWillFinishLaunching(notification)
|
5
|
+
main_window
|
6
|
+
end
|
7
|
+
|
8
|
+
def applicationDidFinishLaunching(notification)
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
# return or build the main window
|
13
|
+
def main_window
|
14
|
+
@main_window ||= window :title => "Twitter Client" do |win|
|
15
|
+
|
16
|
+
button :title => "First Button" do |btn|
|
17
|
+
btn.on_action { puts "Wow, button was clicked" }
|
18
|
+
win << btn
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/framework/button.js
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
/*
|
2
|
+
* button.js
|
3
|
+
* cappruby
|
4
|
+
*
|
5
|
+
* Created by Adam Beynon.
|
6
|
+
* Copyright 2010 Adam Beynon.
|
7
|
+
*
|
8
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
* of this software and associated documentation files (the "Software"), to deal
|
10
|
+
* in the Software without restriction, including without limitation the rights
|
11
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12
|
+
* copies of the Software, and to permit persons to whom the Software is
|
13
|
+
* furnished to do so, subject to the following conditions:
|
14
|
+
*
|
15
|
+
* The above copyright notice and this permission notice shall be included in
|
16
|
+
* all copies or substantial portions of the Software.
|
17
|
+
*
|
18
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
* THE SOFTWARE.
|
25
|
+
*/
|
26
|
+
|
27
|
+
function cr_mappings_button(self, sel, options) {
|
28
|
+
var _$ = cappruby_block; cappruby_block = nil;
|
29
|
+
var h = cr_mappings_collate_options('button', options);
|
30
|
+
|
31
|
+
var btn = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(100,100,84,24));
|
32
|
+
|
33
|
+
if(_$) { // if block given
|
34
|
+
cr_yield(_$, [btn]);
|
35
|
+
}
|
36
|
+
|
37
|
+
objj_msgSend(btn, "setTitle:", "My Button");
|
38
|
+
|
39
|
+
return btn;
|
40
|
+
};
|
41
|
+
|
42
|
+
/**
|
43
|
+
CPButton#on_action(&block)
|
44
|
+
|
45
|
+
When the action event of the button fires, run the block.
|
46
|
+
|
47
|
+
This method makes a fake target for the button, and adds a single method, to
|
48
|
+
act as the action, which essentially calls the proc. The proc will have access
|
49
|
+
to the scope in which it was defined.
|
50
|
+
*/
|
51
|
+
function cr_window_on_action(btn, sel) {
|
52
|
+
var _$ = cappruby_block; cappruby_block = nil;
|
53
|
+
if (!_$) {
|
54
|
+
throw "no block given for CPButton#on_action"
|
55
|
+
}
|
56
|
+
|
57
|
+
var target = class_createInstance(rb_cObject);
|
58
|
+
rb_define_singleton_method(target, "button_action:",function(self, sel, obj) {
|
59
|
+
// call the proc with the "sender" as the param (if needed)
|
60
|
+
rb_ivar_get(self, '@button_action')(obj);
|
61
|
+
}, 1);
|
62
|
+
|
63
|
+
rb_ivar_set(target, '@button_action', _$);
|
64
|
+
|
65
|
+
objj_msgSend(btn, "setTarget:", target);
|
66
|
+
objj_msgSend(btn, "setAction:", 'button_action:');
|
67
|
+
|
68
|
+
return btn;
|
69
|
+
};
|
70
|
+
|
71
|
+
function Init_Mappings_Button() {
|
72
|
+
rb_define_method(rb_mKernel, "button:", cr_mappings_button, 1);
|
73
|
+
rb_define_method(CPButton, "on_action", cr_window_on_action, 0);
|
74
|
+
};
|
data/framework/mapings.js
CHANGED
data/framework/slider.js
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
/*
|
2
|
+
* slider.js
|
3
|
+
* cappruby
|
4
|
+
*
|
5
|
+
* Created by Adam Beynon.
|
6
|
+
* Copyright 2010 Adam Beynon.
|
7
|
+
*
|
8
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
* of this software and associated documentation files (the "Software"), to deal
|
10
|
+
* in the Software without restriction, including without limitation the rights
|
11
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12
|
+
* copies of the Software, and to permit persons to whom the Software is
|
13
|
+
* furnished to do so, subject to the following conditions:
|
14
|
+
*
|
15
|
+
* The above copyright notice and this permission notice shall be included in
|
16
|
+
* all copies or substantial portions of the Software.
|
17
|
+
*
|
18
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
* THE SOFTWARE.
|
25
|
+
*/
|
26
|
+
|
27
|
+
function cr_mappings_slider(self, sel, options) {
|
28
|
+
var _$ = cappruby_block; cappruby_block = nil;
|
29
|
+
var h = cr_mappings_collate_options('slider', options);
|
30
|
+
|
31
|
+
var slider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CGRectMake(100,200,84,24));
|
32
|
+
|
33
|
+
if(_$) { // if block given
|
34
|
+
cr_yield(_$, [slider]);
|
35
|
+
}
|
36
|
+
|
37
|
+
objj_msgSend(slider, "setMinValue:", rb_hash_delete(h, 'delete:', ID2SYM("min")));
|
38
|
+
|
39
|
+
objj_msgSend(slider, "setMaxValue:", rb_hash_delete(h, 'delete:', ID2SYM("max")));
|
40
|
+
|
41
|
+
objj_msgSend(slider, "setValue:", rb_hash_delete(h, 'delete:', ID2SYM("value")));
|
42
|
+
|
43
|
+
// objj_msgSend(btn, "setTitle:", "My Button");
|
44
|
+
|
45
|
+
return slider;
|
46
|
+
};
|
47
|
+
|
48
|
+
function Init_Mappings_Slider() {
|
49
|
+
rb_define_method(rb_mKernel, "slider:", cr_mappings_slider, 1);
|
50
|
+
};
|
data/framework/variable.js
CHANGED
data/framework/window.js
CHANGED
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# AppController class is the CPApp delegate
|
2
|
+
class AppController
|
3
|
+
|
4
|
+
def applicationWillFinishLaunching(notification)
|
5
|
+
main_window
|
6
|
+
end
|
7
|
+
|
8
|
+
def applicationDidFinishLaunching(notification)
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
# return or build the main window
|
13
|
+
def main_window
|
14
|
+
@main_window ||= window :title => "__APPLICATION_TITLE__" do |win|
|
15
|
+
|
16
|
+
button :title => "First Button" do |btn|
|
17
|
+
btn.on_action { puts "Wow, button was clicked" }
|
18
|
+
win << btn
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/lib/cappruby/app_builder.rb
CHANGED
@@ -55,7 +55,7 @@ module CappRuby
|
|
55
55
|
write_main_j_file
|
56
56
|
write_index_html_file
|
57
57
|
|
58
|
-
File.symlink(File.join(@app_root, '
|
58
|
+
File.symlink(File.join(@app_root, 'Frameworks'), File.join(build_dir, 'Frameworks')) unless File.exist? File.join(build_dir, 'Frameworks')
|
59
59
|
end
|
60
60
|
|
61
61
|
def info_plist_file
|
@@ -0,0 +1,80 @@
|
|
1
|
+
#
|
2
|
+
# application_generator.rb
|
3
|
+
# cappruby
|
4
|
+
#
|
5
|
+
# Created by Adam Beynon.
|
6
|
+
# Copyright 2010 Adam Beynon.
|
7
|
+
#
|
8
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
# of this software and associated documentation files (the "Software"), to deal
|
10
|
+
# in the Software without restriction, including without limitation the rights
|
11
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12
|
+
# copies of the Software, and to permit persons to whom the Software is
|
13
|
+
# furnished to do so, subject to the following conditions:
|
14
|
+
#
|
15
|
+
# The above copyright notice and this permission notice shall be included in
|
16
|
+
# all copies or substantial portions of the Software.
|
17
|
+
#
|
18
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
# THE SOFTWARE.
|
25
|
+
#
|
26
|
+
|
27
|
+
module CappRuby
|
28
|
+
|
29
|
+
class AppGenerator
|
30
|
+
|
31
|
+
def initialize(args)
|
32
|
+
@app_name = args[0]
|
33
|
+
@app_title = (@app_name.split('_').collect { |p| p.capitalize }).join ' '
|
34
|
+
@app_root = File.join(Dir.getwd, @app_name)
|
35
|
+
|
36
|
+
if File.exists? @app_root
|
37
|
+
puts "#{@app_name} already exists. Choose a different path"
|
38
|
+
exit
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# all source files
|
43
|
+
def source_files
|
44
|
+
File.join(CappRuby::ROOTPATH, 'gen', 'app')
|
45
|
+
end
|
46
|
+
|
47
|
+
# do generate
|
48
|
+
def gen!
|
49
|
+
puts "Generating project: '#{@app_title}' in '#{@app_name}'"
|
50
|
+
FileUtils.mkdir_p @app_root
|
51
|
+
|
52
|
+
Dir.glob(File.join(source_files, '**', '*')) do |f|
|
53
|
+
relative = f[source_files.length..-1]
|
54
|
+
if File.directory? f
|
55
|
+
FileUtils.mkdir_p File.join(@app_root, relative)
|
56
|
+
else
|
57
|
+
File.open(File.join(@app_root, relative), 'w') do |o|
|
58
|
+
t = File.read f
|
59
|
+
t.gsub!(/__APPLICATION_NAME__/, @app_name)
|
60
|
+
t.gsub!(/__APPLICATION_TITLE__/, @app_title)
|
61
|
+
o.write t
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
puts "Generating capp frameworks (might take a few secs)"
|
67
|
+
gen_capp_frameworks
|
68
|
+
end
|
69
|
+
|
70
|
+
# capp frameworks
|
71
|
+
def gen_capp_frameworks
|
72
|
+
if %x{which capp} == ""
|
73
|
+
puts "Capp is not installed. Required for frameworks. Generating anyway."
|
74
|
+
else
|
75
|
+
%x{capp gen #{@app_name} -f}
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
@@ -287,7 +287,7 @@ module CappRuby
|
|
287
287
|
|
288
288
|
def generate_call call, context
|
289
289
|
# capture "function calls"
|
290
|
-
if call[:meth].match
|
290
|
+
if call[:meth].match(/^[A-Z](.*)$/)
|
291
291
|
return generate_function_call call, context
|
292
292
|
end
|
293
293
|
# capture objj
|
@@ -408,7 +408,7 @@ module CappRuby
|
|
408
408
|
def gen_call_should_use_colon?(c)
|
409
409
|
# basically, if a "special" method using ruby only things, then dont use
|
410
410
|
# a colon
|
411
|
-
return false if c[:meth].match
|
411
|
+
return false if c[:meth].match(/(\<|\!|\?\>\=\!)/)
|
412
412
|
|
413
413
|
args_len = 0
|
414
414
|
if c[:call_args] and c[:call_args][:args]
|
@@ -490,5 +490,22 @@ module CappRuby
|
|
490
490
|
|
491
491
|
write ";" if context[:full_stmt]
|
492
492
|
end
|
493
|
+
|
494
|
+
def generate_op_asgn(stmt, context)
|
495
|
+
write "return " if context[:full_stmt] and context[:last_stmt]
|
496
|
+
|
497
|
+
if stmt[:lhs].node == :ivar
|
498
|
+
write %{(function(asgn)\{if(asgn!==nil && asgn!==undefined)\{}
|
499
|
+
write %{return asgn;\}else\{}
|
500
|
+
write "rb_ivar_set(_a, '#{stmt[:lhs][:name]}',"
|
501
|
+
generate_stmt stmt[:rhs], :full_stmt => false, :last_stmt => false
|
502
|
+
write ")"
|
503
|
+
write %{\}\})(rb_ivar_get(_a,"#{stmt[:lhs][:name]}"))}
|
504
|
+
else
|
505
|
+
abort "bad op_asgn lhs: #{stmt[:lhs].node}"
|
506
|
+
end
|
507
|
+
|
508
|
+
write ";" if context[:full_stmt]
|
509
|
+
end
|
493
510
|
end
|
494
511
|
end
|
data/lib/cappruby.rb
CHANGED
@@ -44,8 +44,15 @@ module CappRuby
|
|
44
44
|
|
45
45
|
case cmd
|
46
46
|
when "gen"
|
47
|
-
|
47
|
+
if args.length == 0
|
48
|
+
print_usage
|
49
|
+
exit
|
50
|
+
end
|
51
|
+
|
52
|
+
require_libs
|
53
|
+
AppGenerator.new(args).gen!
|
48
54
|
when "build"
|
55
|
+
|
49
56
|
require_libs
|
50
57
|
AppBuilder.new(args).build!
|
51
58
|
when "-f"
|
@@ -61,10 +68,6 @@ module CappRuby
|
|
61
68
|
puts "Usage: cappruby gen <app name>"
|
62
69
|
end
|
63
70
|
|
64
|
-
def self.gen(args)
|
65
|
-
puts "gen.."
|
66
|
-
end
|
67
|
-
|
68
71
|
def self.require_libs
|
69
72
|
libs = File.join(File.dirname(__FILE__), 'cappruby', '**', '*.rb')
|
70
73
|
Dir.glob(libs).each { |f| require f }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cappruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Beynon
|
@@ -9,18 +9,28 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01
|
12
|
+
date: 2010-02-01 00:00:00 +00:00
|
13
13
|
default_executable: cappruby
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: vienna
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.5
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: racc
|
17
27
|
type: :development
|
18
28
|
version_requirement:
|
19
29
|
version_requirements: !ruby/object:Gem::Requirement
|
20
30
|
requirements:
|
21
31
|
- - ">="
|
22
32
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
33
|
+
version: 1.4.6
|
24
34
|
version:
|
25
35
|
description: cappruby
|
26
36
|
email: adam@adambeynon.com
|
@@ -39,7 +49,10 @@ files:
|
|
39
49
|
- demos/simple_app/config/build.yml
|
40
50
|
- demos/simple_app/lib/application.rb
|
41
51
|
- demos/simple_app/lib/menu.rb
|
52
|
+
- demos/twitter_client/config/build.yml
|
53
|
+
- demos/twitter_client/lib/application.rb
|
42
54
|
- framework/array.js
|
55
|
+
- framework/button.js
|
43
56
|
- framework/cappruby.js
|
44
57
|
- framework/class.js
|
45
58
|
- framework/enumerator.js
|
@@ -52,12 +65,16 @@ files:
|
|
52
65
|
- framework/object.js
|
53
66
|
- framework/objj_additions.js
|
54
67
|
- framework/proc.js
|
68
|
+
- framework/slider.js
|
55
69
|
- framework/string.js
|
56
70
|
- framework/variable.js
|
57
71
|
- framework/vm.js
|
58
72
|
- framework/window.js
|
73
|
+
- gen/app/config/build.yml
|
74
|
+
- gen/app/lib/application.rb
|
59
75
|
- lib/cappruby.rb
|
60
76
|
- lib/cappruby/app_builder.rb
|
77
|
+
- lib/cappruby/app_generator.rb
|
61
78
|
- lib/cappruby/framework_builder.rb
|
62
79
|
- lib/cappruby/ruby_builder.rb
|
63
80
|
has_rdoc: true
|