juice 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +1 -3
- data/README.rdoc +1 -1
- data/StarterApplication/Framework/Application.js +3 -3
- data/StarterApplication/Framework/Console.js +70 -0
- data/StarterApplication/Framework/Juice.js +6 -18
- data/StarterApplication/Framework/Resources/images/Thumbs.db +0 -0
- data/StarterApplication/Framework/Window.js +12 -7
- data/StarterApplication/README.rdoc +1 -1
- data/lib/juice.rb +1 -1
- metadata +5 -7
- data/StarterApplication/Framework/Template.js +0 -82
- data/StarterApplication/Framework/View.js +0 -51
- data/StarterApplication/Views/example.juice +0 -1
data/Manifest.txt
CHANGED
@@ -13,13 +13,10 @@ script/destroy.cmd
|
|
13
13
|
script/destroy
|
14
14
|
script/console.cmd
|
15
15
|
script/console
|
16
|
-
StarterApplication/Views/example.juice
|
17
16
|
StarterApplication/README.rdoc
|
18
17
|
StarterApplication/LICENSE
|
19
18
|
StarterApplication/index.html
|
20
19
|
StarterApplication/Framework/Window.js
|
21
|
-
StarterApplication/Framework/View.js
|
22
|
-
StarterApplication/Framework/Template.js
|
23
20
|
StarterApplication/Framework/Resources/Themes/Default.css
|
24
21
|
StarterApplication/Framework/Resources/Themes/Default/images/Thumbs.db
|
25
22
|
StarterApplication/Framework/Resources/Themes/Default/images/spinner.gif
|
@@ -36,6 +33,7 @@ StarterApplication/Framework/i18n.js
|
|
36
33
|
StarterApplication/Framework/Event.js
|
37
34
|
StarterApplication/Framework/DOM.js
|
38
35
|
StarterApplication/Framework/Cookie.js
|
36
|
+
StarterApplication/Framework/Console.js
|
39
37
|
StarterApplication/Framework/Confirm.js
|
40
38
|
StarterApplication/Framework/Button.js
|
41
39
|
StarterApplication/Framework/Application.js
|
data/README.rdoc
CHANGED
@@ -49,11 +49,11 @@ Juice.Application.prototype = {
|
|
49
49
|
};
|
50
50
|
Juice.Application.observer = new Juice.Observer();
|
51
51
|
Juice.Application._bindEvent = function(){
|
52
|
-
|
53
|
-
|
52
|
+
|
53
|
+
var event = new Juice.Event(window,"resize",function set_new_bounds(){
|
54
54
|
Juice.Application.observer.fire({height:Juice.Layout.fullHeight(),width:Juice.Layout.fullWidth()});
|
55
|
-
Juice.Layout.body.setStyle({height:Juice.Layout.fullHeight()+'px',width:Juice.Layout.fullWidth()+'px'});
|
56
55
|
});
|
56
|
+
|
57
57
|
event.create();
|
58
58
|
}
|
59
59
|
Juice.Application._bindEvent();
|
@@ -0,0 +1,70 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2009 Justin Baker
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
a copy of this software and associated documentation files (the
|
6
|
+
"Software"), to deal in the Software without restriction, including
|
7
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
*/
|
23
|
+
Juice.Console = Juice.Class.create();
|
24
|
+
Juice.Console.prototype = {
|
25
|
+
initialize: function Console_initialize(){
|
26
|
+
this.container = document.createElement("div");
|
27
|
+
this.error_list = document.createElement("ul");
|
28
|
+
this.title = document.createElement("h2");
|
29
|
+
this.title.setAttribute('id','JuiceConsoleTitle');
|
30
|
+
this.title.innerHTML = "Juice Error Console";
|
31
|
+
this.error_list.setAttribute('id','JuiceConsoleList');
|
32
|
+
this.container.setAttribute('id','JuiceConsole');
|
33
|
+
this.container.appendChild(this.title);
|
34
|
+
this.container.appendChild(this.error_list);
|
35
|
+
document.getElementsByTagName('body')[0].appendChild(this.container);
|
36
|
+
Juice.$('JuiceConsoleTitle').setStyle({
|
37
|
+
fontSize:"20px",
|
38
|
+
marginBottom:"20px"
|
39
|
+
});
|
40
|
+
Juice.$('JuiceConsole').setStyle({
|
41
|
+
top:"80px",
|
42
|
+
right:"40px",
|
43
|
+
width:"400px",
|
44
|
+
position:"absolute",
|
45
|
+
background:"rgba(0,0,0,0.8)",
|
46
|
+
"zIndex":"10000",
|
47
|
+
padding:"20px",
|
48
|
+
MozBorderRadius:"5px",
|
49
|
+
color:"#FFF",
|
50
|
+
});
|
51
|
+
}
|
52
|
+
};
|
53
|
+
Juice.Console.addError = function Juice_Console_addError(text,options){
|
54
|
+
var error = document.createElement("li");
|
55
|
+
error.innerHTML = text;
|
56
|
+
Juice.$('JuiceConsoleList').appendChild(error);
|
57
|
+
error.style.padding = "10px ";
|
58
|
+
error.style.listStyle="none" ;
|
59
|
+
error.style.display='block';
|
60
|
+
error.style.background="rgba(0,0,0,0.8)";
|
61
|
+
error.style.MozBorderRadius="5px";
|
62
|
+
error.style.marginBottom="5px";
|
63
|
+
};
|
64
|
+
if(Juice._debug){
|
65
|
+
new Juice.Console();
|
66
|
+
window.onerror = function Init_Console(_message,_file,_line){
|
67
|
+
Juice.Console.addError("Error: "+_message);
|
68
|
+
console.log('error');
|
69
|
+
}
|
70
|
+
}
|
@@ -49,7 +49,7 @@ Juice = {
|
|
49
49
|
label:'JuiceLabel'
|
50
50
|
},
|
51
51
|
// Modules. You can define custom ones.
|
52
|
-
_modules: ['
|
52
|
+
_modules: ['DOM','Console','i18n','Event','Observer','Ajax','JSONPConnection','Layout','Application','Window','Button','Alert','Confirm','Label'],
|
53
53
|
// File Extensions for css, javascript, and views.
|
54
54
|
_fileExtensions: {
|
55
55
|
css: "css",
|
@@ -58,8 +58,9 @@ Juice = {
|
|
58
58
|
viewDir:"Views"
|
59
59
|
},
|
60
60
|
// Set our version information
|
61
|
-
version: "0.2.
|
62
|
-
|
61
|
+
version: "0.2.2",
|
62
|
+
// Set debugging to true
|
63
|
+
_debug:true,
|
63
64
|
// Extend the Juice object quickly
|
64
65
|
extend: function Juice_extend(obj){
|
65
66
|
return Juice.Object.extend(Juice,obj);
|
@@ -183,19 +184,6 @@ Juice.Object.extend(String.prototype,{
|
|
183
184
|
return parseInt(this,16);
|
184
185
|
}
|
185
186
|
});
|
186
|
-
Juice.Object.extend(Function.prototype,{
|
187
|
-
unless:function Function_unless(fn){
|
188
|
-
if(fn.isFunction()){
|
189
|
-
var cond = fn.call();
|
190
|
-
}
|
191
|
-
else var cond = fn;
|
192
|
-
if(cond){
|
193
|
-
var args = arguments;
|
194
|
-
alert(args);
|
195
|
-
this.call(args);
|
196
|
-
}
|
197
|
-
}
|
198
|
-
});
|
199
187
|
// Our number object
|
200
188
|
Juice.Object.extend(Number.prototype,{
|
201
189
|
toRandomString: function Number_toRandomString(){
|
@@ -303,8 +291,8 @@ Juice.extend({
|
|
303
291
|
document.title = str;
|
304
292
|
},
|
305
293
|
// Select elements by their id
|
306
|
-
$: function Juice_$(
|
307
|
-
return document.getElementById(
|
294
|
+
$: function Juice_$(id){
|
295
|
+
return document.getElementById(id);
|
308
296
|
},
|
309
297
|
// require files, once and only once.
|
310
298
|
Require: function Juice_Require(name){
|
Binary file
|
@@ -31,7 +31,7 @@ Juice.Window.prototype = {
|
|
31
31
|
this.theDiv.setAttribute("id",this.name);
|
32
32
|
this.theDiv.setAttribute("class",theclass);
|
33
33
|
var hex_id = this.name;
|
34
|
-
var event = new Juice.Event(window,"resize",function
|
34
|
+
var event = new Juice.Event(window,"resize",function set_new_bounds(){
|
35
35
|
Juice.$(hex_id).parentNode.setStyle({
|
36
36
|
height: Juice.$(hex_id).parentNode.parentNode.getHeight()+"px",
|
37
37
|
width: Juice.$(hex_id).parentNode.parentNode.getWidth()+"px"
|
@@ -94,7 +94,7 @@ Juice.Window.prototype = {
|
|
94
94
|
break;
|
95
95
|
}
|
96
96
|
}
|
97
|
-
Juice.Application.observer.subscribe(function
|
97
|
+
Juice.Application.observer.subscribe(function Window_centering(data){
|
98
98
|
var top = (Juice.$(hex_id).parentNode.parentNode.getHeight()-Juice.$(hex_id).getHeight())/2;
|
99
99
|
var left = (Juice.$(hex_id).parentNode.parentNode.getWidth()/2)-(Juice.$(hex_id).getWidth()/2);
|
100
100
|
Juice.$(hex_id ).setStyle({
|
@@ -102,7 +102,7 @@ Juice.Window.prototype = {
|
|
102
102
|
left:left+"px"
|
103
103
|
});
|
104
104
|
});
|
105
|
-
var event = new Juice.Event(window,"load",function
|
105
|
+
var event = new Juice.Event(window,"load",function object_position_set(){
|
106
106
|
if(top){
|
107
107
|
Juice.$(hex_id ).setStyle({top:top+'px'});
|
108
108
|
}
|
@@ -118,11 +118,16 @@ Juice.Window.prototype = {
|
|
118
118
|
return this;
|
119
119
|
},
|
120
120
|
setStringValue: function Window_setStringValue(text){
|
121
|
-
|
121
|
+
try{
|
122
|
+
Juice.$(this.name).innerHTML = text;
|
123
|
+
}
|
124
|
+
catch(e){
|
125
|
+
Juice.Console.addError(e);
|
126
|
+
}
|
122
127
|
return this;
|
123
128
|
},
|
124
|
-
setCenter: function Window_setCenter(
|
125
|
-
if(
|
129
|
+
setCenter: function Window_setCenter(aBoolean){
|
130
|
+
if(aBoolean){
|
126
131
|
Juice.$(this.name).setStyle({
|
127
132
|
marginLeft:"auto",
|
128
133
|
marginRight:"auto"
|
@@ -130,7 +135,7 @@ Juice.Window.prototype = {
|
|
130
135
|
}
|
131
136
|
},
|
132
137
|
setBackground: function Window_setBackground(color){
|
133
|
-
|
138
|
+
Juice.$(this.name).parentNode.setStyle({background:color});
|
134
139
|
return this;
|
135
140
|
},
|
136
141
|
setForeground: function Window_setForeground(color){
|
data/lib/juice.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: juice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Baker
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-28 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
version: 2.3.2
|
34
34
|
version:
|
35
35
|
description: |-
|
36
|
-
This is version 0.2.
|
36
|
+
This is version 0.2.2 of Juice Js Framework
|
37
37
|
|
38
38
|
Juice is a framework similar to Sproutcore and Cappuccino in that it is centered towards
|
39
39
|
creating desktop applications that run in the browser.
|
@@ -61,13 +61,10 @@ files:
|
|
61
61
|
- "script/destroy "
|
62
62
|
- "script/console.cmd "
|
63
63
|
- "script/console "
|
64
|
-
- "StarterApplication/Views/example.juice "
|
65
64
|
- "StarterApplication/README.rdoc "
|
66
65
|
- "StarterApplication/LICENSE "
|
67
66
|
- "StarterApplication/index.html "
|
68
67
|
- "StarterApplication/Framework/Window.js "
|
69
|
-
- "StarterApplication/Framework/View.js "
|
70
|
-
- "StarterApplication/Framework/Template.js "
|
71
68
|
- "StarterApplication/Framework/Resources/Themes/Default.css "
|
72
69
|
- "StarterApplication/Framework/Resources/Themes/Default/images/Thumbs.db "
|
73
70
|
- "StarterApplication/Framework/Resources/Themes/Default/images/spinner.gif "
|
@@ -84,6 +81,7 @@ files:
|
|
84
81
|
- "StarterApplication/Framework/Event.js "
|
85
82
|
- "StarterApplication/Framework/DOM.js "
|
86
83
|
- "StarterApplication/Framework/Cookie.js "
|
84
|
+
- "StarterApplication/Framework/Console.js "
|
87
85
|
- "StarterApplication/Framework/Confirm.js "
|
88
86
|
- "StarterApplication/Framework/Button.js "
|
89
87
|
- "StarterApplication/Framework/Application.js "
|
@@ -119,6 +117,6 @@ rubyforge_project: juice
|
|
119
117
|
rubygems_version: 1.3.5
|
120
118
|
signing_key:
|
121
119
|
specification_version: 3
|
122
|
-
summary: This is version 0.2.
|
120
|
+
summary: This is version 0.2.2 of Juice Js Framework Juice is a framework similar to Sproutcore and Cappuccino in that it is centered towards creating desktop applications that run in the browser.
|
123
121
|
test_files: []
|
124
122
|
|
@@ -1,82 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Copyright (c) 2009 Justin Baker
|
3
|
-
|
4
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
a copy of this software and associated documentation files (the
|
6
|
-
"Software"), to deal in the Software without restriction, including
|
7
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be
|
13
|
-
included in all copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
OF CONTRACT, TORT OR O\\THERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
|
23
|
-
*/
|
24
|
-
Juice.Template = Juice.Class.create();
|
25
|
-
Juice.Template.prototype = {
|
26
|
-
initialize: function Template_initialize(url,data){
|
27
|
-
// url is taken from example to views/example.juice
|
28
|
-
url = Juice._fileExtensions.viewDir+"/"+url+"."+Juice._fileExtensions.view;
|
29
|
-
// Request the template data
|
30
|
-
var request = new Juice.Ajax(url);
|
31
|
-
// Get the response
|
32
|
-
var final_parsed_text = request.response().responseText;
|
33
|
-
|
34
|
-
// This bit was taken from j.resig's mini templates . Thanks John!
|
35
|
-
final_parsed_text = final_parsed_text.replace(/[\r\t\n]/g, " ")
|
36
|
-
.split("<%").join("\t")
|
37
|
-
.replace(/((^|%>)[^\t]*)'/g, "$1\r")
|
38
|
-
.replace(/\t=(.*?)%>/g, "puts($1);")
|
39
|
-
.split("%>").join("")
|
40
|
-
.split("\r").join("\\'");
|
41
|
-
// Because we love ruby, no ()'s in fors. now do for.. do.. end..
|
42
|
-
final_parsed_text = final_parsed_text.replace(/for(.*|\s)do(.*|\s)end/,"for($1){$2}");
|
43
|
-
// Because we love ruby, no ()'s in each's. now do for.. do.. end..
|
44
|
-
final_parsed_text = final_parsed_text.replace(/each(.*|\s)do(.*|\s) \|([a-zA-Z]+)\|(.*|\s)end/,"each(function($3){$4});");
|
45
|
-
// Create the script, add text/javascript type
|
46
|
-
var script = document.createElement('script');
|
47
|
-
script.writeAttributes({
|
48
|
-
type: 'text/javascript'
|
49
|
-
});
|
50
|
-
// Begin the code, copy all in data to local namespace
|
51
|
-
var code = "(function(data){ for(var prop in data){this[prop] = data[prop];}";
|
52
|
-
// define functions used in templates
|
53
|
-
var our_functions = {
|
54
|
-
puts: function(str){
|
55
|
-
alert(str);
|
56
|
-
},
|
57
|
-
link_to: function(text,href){
|
58
|
-
var a = document.createElement("a");
|
59
|
-
a.writeAttributes({
|
60
|
-
href:href
|
61
|
-
}).update(text);
|
62
|
-
return a;
|
63
|
-
}
|
64
|
-
};
|
65
|
-
// Copy functions
|
66
|
-
for(var value in our_functions){
|
67
|
-
code+= "var "+value+"="+our_functions[value].toSource()+";";;
|
68
|
-
}
|
69
|
-
// Take the data and get code
|
70
|
-
data = data || {};
|
71
|
-
code+=final_parsed_text+"})("+data.toSource()+");";
|
72
|
-
// code is now parsed
|
73
|
-
script.update(code);
|
74
|
-
Juice.Layout.head.appendChild(script);
|
75
|
-
this.script = script;
|
76
|
-
console.log(code);
|
77
|
-
},
|
78
|
-
remove: function(){
|
79
|
-
this.script.remove();
|
80
|
-
}
|
81
|
-
|
82
|
-
};
|
@@ -1,51 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Copyright (c) 2009 Justin Baker
|
3
|
-
|
4
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
a copy of this software and associated documentation files (the
|
6
|
-
"Software"), to deal in the Software without restriction, including
|
7
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be
|
13
|
-
included in all copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
*/
|
23
|
-
Juice.View = Juice.Class.create();
|
24
|
-
Juice.View.prototype = {
|
25
|
-
initialize: function View_initialize(url,data){
|
26
|
-
this.url = url;
|
27
|
-
this.data = data;
|
28
|
-
},
|
29
|
-
render: function View_render(){
|
30
|
-
var data = this.data || {};
|
31
|
-
var url = "/"+Juice._fileExtensions.viewDir+this.url+"."+Juice._fileExtensions.view;
|
32
|
-
var _request;
|
33
|
-
if (window.XMLHttpRequest){
|
34
|
-
// code for IE7+, Firefox, Chrome, Opera, Safari
|
35
|
-
_request=new XMLHttpRequest();
|
36
|
-
}
|
37
|
-
else{
|
38
|
-
// code for IE6, IE5
|
39
|
-
_request=new ActiveXObject("Microsoft.XMLHTTP");
|
40
|
-
}
|
41
|
-
_request.open("GET",url,false);
|
42
|
-
_request.send(null);
|
43
|
-
var template = _request.responseText;
|
44
|
-
return template.replace(/\{([\w\.]*)}/g, function(str, key){
|
45
|
-
var keys = key.split("."), value = data[keys.shift()];
|
46
|
-
keys.each( function(){ value = value[this] })
|
47
|
-
return value
|
48
|
-
})
|
49
|
-
}
|
50
|
-
};
|
51
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= hi %>
|