ice 0.2.1 → 0.2.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/README.markdown +5 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/ice.gemspec +6 -5
- data/ice_js/lib/path_helper.js +18 -11
- data/ice_js/spec/unit/spec.js +8 -31
- data/lib/extras/ice_view.rb +12 -0
- data/lib/ice.rb +5 -8
- data/lib/routes_js.rb +55 -0
- metadata +6 -5
data/README.markdown
CHANGED
@@ -60,9 +60,13 @@ In order for everything to work easily, you can have your cubes inherit from our
|
|
60
60
|
|
61
61
|
class BookCube < Ice::BaseCube
|
62
62
|
revealing :title, :author_id, :genre_id
|
63
|
+
|
64
|
+
def reviewer_names
|
65
|
+
@source.reviewers.map(&:name)
|
66
|
+
end
|
63
67
|
end
|
64
68
|
|
65
|
-
would provide a cube with access to the title, author_id and genre properties of the underlying ActiveRecord.
|
69
|
+
would provide a cube with access to the title, author_id and genre properties of the underlying ActiveRecord. In addition, it exposes a reviewer_names function that uses the @source instance variable to get at the record which is being filtered.
|
66
70
|
|
67
71
|
These cubes also have simple belongs_to and has_many associations, so you can write things like:
|
68
72
|
|
data/Rakefile
CHANGED
@@ -11,7 +11,7 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/ludicast/ice"
|
12
12
|
gem.authors = ["Nate Kidwell"]
|
13
13
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
-
gem.add_dependency "therubyracer", "0.7.
|
14
|
+
gem.add_dependency "therubyracer", "0.7.1"
|
15
15
|
gem.add_dependency "activesupport", ">= 2.2.0"
|
16
16
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
17
17
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/ice.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ice}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nate Kidwell"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-06-04}
|
13
13
|
s.description = %q{User templates written in javascript}
|
14
14
|
s.email = %q{nate@ludicast.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -42,6 +42,7 @@ Gem::Specification.new do |s|
|
|
42
42
|
"lib/ice/cube_association.rb",
|
43
43
|
"lib/ice/cubeable.rb",
|
44
44
|
"lib/parser.js",
|
45
|
+
"lib/routes_js.rb",
|
45
46
|
"rails/init.rb",
|
46
47
|
"spec/base_cube_spec.rb",
|
47
48
|
"spec/cube_spec.rb",
|
@@ -67,16 +68,16 @@ Gem::Specification.new do |s|
|
|
67
68
|
|
68
69
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
69
70
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
70
|
-
s.add_runtime_dependency(%q<therubyracer>, ["= 0.7.
|
71
|
+
s.add_runtime_dependency(%q<therubyracer>, ["= 0.7.1"])
|
71
72
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.2.0"])
|
72
73
|
else
|
73
74
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
74
|
-
s.add_dependency(%q<therubyracer>, ["= 0.7.
|
75
|
+
s.add_dependency(%q<therubyracer>, ["= 0.7.1"])
|
75
76
|
s.add_dependency(%q<activesupport>, [">= 2.2.0"])
|
76
77
|
end
|
77
78
|
else
|
78
79
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
79
|
-
s.add_dependency(%q<therubyracer>, ["= 0.7.
|
80
|
+
s.add_dependency(%q<therubyracer>, ["= 0.7.1"])
|
80
81
|
s.add_dependency(%q<activesupport>, [">= 2.2.0"])
|
81
82
|
end
|
82
83
|
end
|
data/ice_js/lib/path_helper.js
CHANGED
@@ -1,17 +1,24 @@
|
|
1
|
-
function
|
2
|
-
|
1
|
+
function link_to(location, default_label, opts) {
|
2
|
+
if (! default_label) {
|
3
|
+
default_label = location
|
4
|
+
}
|
5
|
+
label = (opts && opts.label) || default_label
|
6
|
+
return "<a href=\"" + location + "\">" + label + "</a>"
|
3
7
|
}
|
4
8
|
|
5
|
-
function
|
6
|
-
|
9
|
+
var NavBar = function () {
|
10
|
+
|
11
|
+
}
|
12
|
+
|
13
|
+
NavBar.prototype.link_to = function (link) {
|
14
|
+
return "<li>" + link_to(link) + "</li>"
|
15
|
+
}
|
16
|
+
|
17
|
+
NavBar.prototype.open = function () {
|
18
|
+
return "<ul class=\"linkBar\">"
|
7
19
|
}
|
8
20
|
|
9
|
-
function
|
10
|
-
|
11
|
-
return "<a href=\"" + view_path(item) + "\">" + label + "</a>"
|
21
|
+
NavBar.prototype.close = function () {
|
22
|
+
return "</ul>"
|
12
23
|
}
|
13
24
|
|
14
|
-
function edit_link(item, opts) {
|
15
|
-
label = (opts && opts.label) || "Edit"
|
16
|
-
return "<a href=\"" + edit_path(item) + "\">" + label + "</a>"
|
17
|
-
}
|
data/ice_js/spec/unit/spec.js
CHANGED
@@ -1,40 +1,17 @@
|
|
1
|
-
|
2
|
-
describe 'path_helper'
|
1
|
+
describe "nav bar helper"
|
3
2
|
before_each
|
4
|
-
|
3
|
+
bar = new NavBar()
|
5
4
|
end
|
6
5
|
|
7
|
-
describe 'for paths'
|
8
|
-
it "should generate view path from item"
|
9
|
-
view_path(user).should.eql "/users/1"
|
10
|
-
end
|
11
6
|
|
12
|
-
|
13
|
-
|
14
|
-
end
|
7
|
+
it "should generate list by default"
|
8
|
+
(bar.open() + bar.close()).should.eql "<ul class=\"linkBar\"></ul>"
|
15
9
|
end
|
16
10
|
|
11
|
+
it "should generate list with internal links"
|
17
12
|
|
18
|
-
|
19
|
-
describe "without parameters"
|
20
|
-
it "should generate view link from item"
|
21
|
-
view_link(user).should.eql "<a href=\"/users/1\">View</a>"
|
22
|
-
end
|
23
|
-
it "should generate edit link from item"
|
24
|
-
edit_link(user).should.eql "<a href=\"/users/1/edit\">Edit</a>"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "with parameters"
|
29
|
-
it "should generate view link from item"
|
30
|
-
view_link(user, {label:"See Info"}).should.eql "<a href=\"/users/1\">See Info</a>"
|
31
|
-
end
|
32
|
-
it "should generate edit link from item"
|
33
|
-
edit_link(user, {label:"Change Info"}).should.eql "<a href=\"/users/1/edit\">Change Info</a>"
|
34
|
-
end
|
35
|
-
end
|
13
|
+
links = (bar.open() + bar.link_to("ff") + bar.link_to("aa") + bar.close())
|
36
14
|
|
15
|
+
links.should.eql "<ul class=\"linkBar\"><li><a href=\"ff\">ff</a></li><li><a href=\"aa\">aa</a></li></ul>"
|
37
16
|
end
|
38
|
-
|
39
|
-
|
40
|
-
end
|
17
|
+
end
|
data/lib/extras/ice_view.rb
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
#
|
6
6
|
# ActionView::Base::register_template_handler :ice, IceView
|
7
7
|
class IceView
|
8
|
+
include RoutesJs
|
8
9
|
PROTECTED_ASSIGNS = %w( template_root response _session template_class action_name request_origin session template
|
9
10
|
_response url _request _cookies variables_added _flash params _headers request cookies
|
10
11
|
ignore_missing_templates flash _params logger before_filter_chain_aborted headers )
|
@@ -41,6 +42,17 @@ class IceView
|
|
41
42
|
assigns['content_for_layout'] = content_for_layout
|
42
43
|
end
|
43
44
|
assigns.merge!(local_assigns.stringify_keys)
|
45
|
+
|
46
|
+
route_functions = "<% " + get_routes + " %>"
|
47
|
+
puts route_functions
|
48
|
+
5.times {puts "****************************"}
|
49
|
+
|
50
|
+
path_helper_code = File.read(File.dirname(__FILE__) + "/../../ice_js/lib/path_helper.js")
|
51
|
+
path_helper = "<% " + path_helper_code + " %>"
|
52
|
+
puts path_helper
|
53
|
+
source = route_functions + path_helper + source
|
54
|
+
|
55
|
+
|
44
56
|
Ice.convert_template(source, assigns)
|
45
57
|
#ice = Ice::Template.parse(source)
|
46
58
|
#ice.render(assigns, :filters => [@view.controller.master_helper_module], :registers => {:action_view => @view, :controller => @view.controller})
|
data/lib/ice.rb
CHANGED
@@ -7,12 +7,12 @@ class Object
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
[FalseClass, TrueClass, Numeric, String].each do |
|
11
|
-
|
10
|
+
[FalseClass, TrueClass, Numeric, String].each do |cls|
|
11
|
+
cls.class_eval do
|
12
12
|
def to_ice
|
13
13
|
self
|
14
14
|
end
|
15
|
-
end
|
15
|
+
end
|
16
16
|
end
|
17
17
|
|
18
18
|
class Array
|
@@ -43,12 +43,9 @@ module Ice
|
|
43
43
|
cxt[key] = value.to_ice
|
44
44
|
end
|
45
45
|
|
46
|
-
cxt['
|
47
|
-
|
48
|
-
@evaled = cxt.eval "Jst.evaluate(Jst.compile(____templateText), {});"
|
49
|
-
|
46
|
+
jst = cxt['Jst']
|
47
|
+
return @evaled = jst.evaluate(jst.compile(template_text), {})
|
50
48
|
end
|
51
|
-
@evaled
|
52
49
|
end
|
53
50
|
end
|
54
51
|
|
data/lib/routes_js.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
module RoutesJs
|
2
|
+
|
3
|
+
def get_routes
|
4
|
+
|
5
|
+
response = rails_route_function
|
6
|
+
|
7
|
+
ActionController::Routing::Routes.routes.collect do |route|
|
8
|
+
path = route.segments.inject('') { |str,s| str << s.to_s }
|
9
|
+
|
10
|
+
named_route = ActionController::Routing::Routes.
|
11
|
+
named_routes.routes.key(route).to_s
|
12
|
+
|
13
|
+
if named_route != ''
|
14
|
+
response << route_function("#{named_route}_path", path)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
response
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def rails_route_function
|
24
|
+
<<EOF
|
25
|
+
function rails_route(path, var_pairs) {
|
26
|
+
var pair_index = 0,
|
27
|
+
path_copy = path;
|
28
|
+
for(; pair_index < var_pairs.length; pair_index++) {
|
29
|
+
path_copy = path_copy.replace(
|
30
|
+
':' + var_pairs[pair_index][0],
|
31
|
+
var_pairs[pair_index][1]
|
32
|
+
);
|
33
|
+
}
|
34
|
+
return(
|
35
|
+
path_copy
|
36
|
+
.replace(/[(][.]:.+[)][?]/g, '')
|
37
|
+
.replace(/[(]|[)][?]/g, '')
|
38
|
+
);
|
39
|
+
}
|
40
|
+
EOF
|
41
|
+
end
|
42
|
+
|
43
|
+
def route_function name, path
|
44
|
+
<<EOF
|
45
|
+
function #{name}(variables) {
|
46
|
+
var var_pairs = [];
|
47
|
+
for(var key in variables) {
|
48
|
+
var_pairs.push([key, variables[key]]);
|
49
|
+
}
|
50
|
+
return(rails_route('#{path}', var_pairs));
|
51
|
+
}
|
52
|
+
EOF
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 2
|
9
|
+
version: 0.2.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Nate Kidwell
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-06-04 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -41,8 +41,8 @@ dependencies:
|
|
41
41
|
segments:
|
42
42
|
- 0
|
43
43
|
- 7
|
44
|
-
-
|
45
|
-
version: 0.7.
|
44
|
+
- 1
|
45
|
+
version: 0.7.1
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id002
|
48
48
|
- !ruby/object:Gem::Dependency
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/ice/cube_association.rb
|
95
95
|
- lib/ice/cubeable.rb
|
96
96
|
- lib/parser.js
|
97
|
+
- lib/routes_js.rb
|
97
98
|
- rails/init.rb
|
98
99
|
- spec/base_cube_spec.rb
|
99
100
|
- spec/cube_spec.rb
|