cuba-contrib 0.1.0.rc2 → 3.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/cuba-contrib.gemspec +1 -1
- data/lib/cuba/contrib.rb +4 -17
- data/lib/cuba/contrib/mote.rb +6 -8
- data/lib/cuba/contrib/rendering.rb +14 -7
- data/test/caching.rb +17 -0
- data/test/layout.rb +16 -0
- data/test/mote.rb +2 -2
- data/test/rendering.rb +4 -4
- data/test/test.erb +1 -0
- metadata +11 -11
- data/lib/cuba/contrib/settings.rb +0 -25
- data/test/contrib.rb +0 -68
- data/test/settings.rb +0 -38
data/cuba-contrib.gemspec
CHANGED
data/lib/cuba/contrib.rb
CHANGED
@@ -1,22 +1,9 @@
|
|
1
1
|
class Cuba
|
2
2
|
CONTRIB_ROOT = File.expand_path("../../", File.dirname(__FILE__))
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
mixin.setup(self) if mixin.respond_to?(:setup)
|
9
|
-
end
|
10
|
-
|
11
|
-
# TODO: remove this as soon as cuba core implements this.
|
12
|
-
def session
|
13
|
-
env["rack.session"]
|
14
|
-
end
|
15
|
-
|
16
|
-
autoload :Prelude, "cuba/contrib/prelude"
|
17
|
-
autoload :Rendering, "cuba/contrib/rendering"
|
18
|
-
autoload :Settings, "cuba/contrib/settings"
|
19
|
-
autoload :Mote, "cuba/contrib/mote"
|
4
|
+
autoload :Prelude, "cuba/contrib/prelude"
|
5
|
+
autoload :Rendering, "cuba/contrib/rendering"
|
6
|
+
autoload :Mote, "cuba/contrib/mote"
|
20
7
|
autoload :TextHelpers, "cuba/contrib/text_helpers"
|
21
8
|
autoload :FormHelpers, "cuba/contrib/form_helpers"
|
22
|
-
end
|
9
|
+
end
|
data/lib/cuba/contrib/mote.rb
CHANGED
@@ -5,17 +5,15 @@ class Cuba
|
|
5
5
|
include ::Mote::Helpers
|
6
6
|
|
7
7
|
def self.setup(app)
|
8
|
-
app.
|
9
|
-
|
10
|
-
app.set :views, File.expand_path("views", Dir.pwd)
|
11
|
-
app.set :layout, "layout"
|
8
|
+
app.settings[:views] = File.expand_path("views", Dir.pwd)
|
9
|
+
app.settings[:layout] = "layout"
|
12
10
|
end
|
13
11
|
|
14
12
|
def partial(template, locals = {})
|
15
13
|
mote(mote_path(template), locals)
|
16
14
|
end
|
17
15
|
|
18
|
-
def view(template, locals = {}, layout = settings
|
16
|
+
def view(template, locals = {}, layout = settings[:layout])
|
19
17
|
raise NoLayout.new(self) unless layout
|
20
18
|
|
21
19
|
partial(layout, locals.merge(mote_vars(partial(template, locals))))
|
@@ -24,7 +22,7 @@ class Cuba
|
|
24
22
|
def mote_path(template)
|
25
23
|
return template if template.end_with?(".mote")
|
26
24
|
|
27
|
-
File.
|
25
|
+
File.join(settings[:views], "#{template}.mote")
|
28
26
|
end
|
29
27
|
|
30
28
|
def mote_vars(content)
|
@@ -39,8 +37,8 @@ class Cuba
|
|
39
37
|
end
|
40
38
|
|
41
39
|
def message
|
42
|
-
"Missing Layout: Try doing #{instance.class}.
|
40
|
+
"Missing Layout: Try doing #{instance.class}.settings[:layout] = 'layout'"
|
43
41
|
end
|
44
42
|
end
|
45
43
|
end
|
46
|
-
end
|
44
|
+
end
|
@@ -3,17 +3,17 @@ require "tilt"
|
|
3
3
|
class Cuba
|
4
4
|
module Rendering
|
5
5
|
def self.setup(app)
|
6
|
-
app.
|
7
|
-
app.
|
8
|
-
app.
|
6
|
+
app.settings[:template_engine] = "erb"
|
7
|
+
app.settings[:views] = File.expand_path("views", Dir.pwd)
|
8
|
+
app.settings[:layout] = "layout"
|
9
9
|
end
|
10
10
|
|
11
|
-
def view(template, locals = {}, layout =
|
11
|
+
def view(template, locals = {}, layout = settings[:layout])
|
12
12
|
partial(layout, { content: partial(template, locals) }.merge(locals))
|
13
13
|
end
|
14
14
|
|
15
15
|
def partial(template, locals = {})
|
16
|
-
render("#{settings
|
16
|
+
render("#{settings[:views]}/#{template}.#{settings[:template_engine]}",
|
17
17
|
locals, default_encoding: Encoding.default_external)
|
18
18
|
end
|
19
19
|
|
@@ -34,9 +34,16 @@ class Cuba
|
|
34
34
|
# render("layout.haml") { render("home.haml") }
|
35
35
|
#
|
36
36
|
def render(template, locals = {}, options = {}, &block)
|
37
|
-
_cache.fetch(template
|
37
|
+
_cache.fetch(template) {
|
38
38
|
Tilt.new(template, 1, options)
|
39
39
|
}.render(self, locals, &block)
|
40
40
|
end
|
41
|
+
|
42
|
+
# @private Used internally by #render to cache the
|
43
|
+
# Tilt templates.
|
44
|
+
def _cache
|
45
|
+
Thread.current[:_cache] ||= Tilt::Cache.new
|
46
|
+
end
|
47
|
+
private :_cache
|
41
48
|
end
|
42
|
-
end
|
49
|
+
end
|
data/test/caching.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path("helper", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
test "executes on true" do
|
4
|
+
Cuba.plugin Cuba::Rendering
|
5
|
+
|
6
|
+
Cuba.define do
|
7
|
+
on "foo/:i" do |i|
|
8
|
+
res.write render("test/test.erb", title: i)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
1000.times do |i|
|
13
|
+
_, _, resp = Cuba.call({ "PATH_INFO" => "/foo/#{i}", "SCRIPT_NAME" => "" })
|
14
|
+
end
|
15
|
+
|
16
|
+
assert_equal 1, Thread.current[:_cache].instance_variable_get(:@cache).size
|
17
|
+
end
|
data/test/layout.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path("helper", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
test "simple layout support" do
|
4
|
+
Cuba.plugin Cuba::Rendering
|
5
|
+
Cuba.define do
|
6
|
+
on true do
|
7
|
+
res.write render("test/fixtures/layout.erb") {
|
8
|
+
render("test/fixtures/content.erb")
|
9
|
+
}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
_, _, resp = Cuba.call({})
|
14
|
+
|
15
|
+
assert_equal ["alfa beta\n\n"], resp.body
|
16
|
+
end
|
data/test/mote.rb
CHANGED
data/test/rendering.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative "helper"
|
2
2
|
|
3
3
|
Cuba.plugin Cuba::Rendering
|
4
|
-
Cuba.views = "./test/views"
|
4
|
+
Cuba.settings[:views] = "./test/views"
|
5
5
|
|
6
6
|
Cuba.define do
|
7
7
|
on "home" do
|
@@ -26,7 +26,7 @@ test "view" do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
test "partial with str as engine" do
|
29
|
-
Cuba.template_engine = "str"
|
29
|
+
Cuba.settings[:template_engine] = "str"
|
30
30
|
|
31
31
|
_, _, body = Cuba.call({ "PATH_INFO" => "/about", "SCRIPT_NAME" => "/" })
|
32
32
|
|
@@ -34,9 +34,9 @@ test "partial with str as engine" do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
test "view with str as engine" do
|
37
|
-
Cuba.template_engine = "str"
|
37
|
+
Cuba.settings[:template_engine] = "str"
|
38
38
|
|
39
39
|
_, _, body = Cuba.call({ "PATH_INFO" => "/home", "SCRIPT_NAME" => "/" })
|
40
40
|
|
41
41
|
assert_response body, ["<title>Cuba: Home</title>\n<h1>Home</h1>\n<p>Hello Agent Smith</p>"]
|
42
|
-
end
|
42
|
+
end
|
data/test/test.erb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<%= title %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuba-contrib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 3.0.0.rc1
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cuba
|
16
|
-
requirement: &
|
16
|
+
requirement: &2152386960 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2152386960
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: cutest
|
27
|
-
requirement: &
|
27
|
+
requirement: &2152385700 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2152385700
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: capybara
|
38
|
-
requirement: &
|
38
|
+
requirement: &2152401460 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2152401460
|
47
47
|
description: Includes various helper tools for Cuba.
|
48
48
|
email:
|
49
49
|
- me@cyrildavid.com
|
@@ -58,15 +58,15 @@ files:
|
|
58
58
|
- lib/cuba/contrib/mote.rb
|
59
59
|
- lib/cuba/contrib/prelude.rb
|
60
60
|
- lib/cuba/contrib/rendering.rb
|
61
|
-
- lib/cuba/contrib/settings.rb
|
62
61
|
- lib/cuba/contrib/text_helpers.rb
|
63
62
|
- lib/cuba/contrib.rb
|
64
63
|
- cuba-contrib.gemspec
|
65
|
-
- test/
|
64
|
+
- test/caching.rb
|
66
65
|
- test/helper.rb
|
66
|
+
- test/layout.rb
|
67
67
|
- test/mote.rb
|
68
68
|
- test/rendering.rb
|
69
|
-
- test/
|
69
|
+
- test/test.erb
|
70
70
|
- test/text_helper.rb
|
71
71
|
- views/field.mote
|
72
72
|
- views/file.mote
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class Cuba
|
2
|
-
module Settings
|
3
|
-
def settings
|
4
|
-
self.class
|
5
|
-
end
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
def set(key, value)
|
9
|
-
metaclass.send :attr_writer, key
|
10
|
-
metaclass.module_eval %{
|
11
|
-
def #{key}
|
12
|
-
@#{key} ||= #{value.inspect}
|
13
|
-
end
|
14
|
-
}
|
15
|
-
|
16
|
-
send :"#{key}=", value
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
def metaclass
|
21
|
-
class << self; self; end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/test/contrib.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
require_relative "helper"
|
2
|
-
|
3
|
-
scope do
|
4
|
-
module Helper
|
5
|
-
def clean(str)
|
6
|
-
str.strip
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
Cuba.plugin Helper
|
11
|
-
|
12
|
-
Cuba.define do
|
13
|
-
on default do
|
14
|
-
res.write clean " foo "
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
test do
|
19
|
-
_, _, body = Cuba.call({ "PATH_INFO" => "", "SCRIPT_NAME" => "" })
|
20
|
-
|
21
|
-
assert_response body, ["foo"]
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
scope do
|
26
|
-
module Number
|
27
|
-
def num
|
28
|
-
1
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
module Plugin
|
33
|
-
def self.setup(app)
|
34
|
-
app.plugin Number
|
35
|
-
end
|
36
|
-
|
37
|
-
def bar
|
38
|
-
"baz"
|
39
|
-
end
|
40
|
-
|
41
|
-
module ClassMethods
|
42
|
-
def foo
|
43
|
-
"bar"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
Cuba.reset!
|
49
|
-
|
50
|
-
Cuba.plugin Plugin
|
51
|
-
|
52
|
-
Cuba.define do
|
53
|
-
on default do
|
54
|
-
res.write bar
|
55
|
-
res.write num
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
test do
|
60
|
-
assert_equal "bar", Cuba.foo
|
61
|
-
end
|
62
|
-
|
63
|
-
test do
|
64
|
-
_, _, body = Cuba.call({ "PATH_INFO" => "", "SCRIPT_NAME" => "" })
|
65
|
-
|
66
|
-
assert_response body, ["baz", "1"]
|
67
|
-
end
|
68
|
-
end
|
data/test/settings.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require_relative "helper"
|
2
|
-
|
3
|
-
Cuba.plugin Cuba::Settings
|
4
|
-
Cuba.set :foo, "bar"
|
5
|
-
|
6
|
-
Cuba.define do
|
7
|
-
on default do
|
8
|
-
res.write settings.foo
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class Admin < Cuba
|
13
|
-
end
|
14
|
-
|
15
|
-
test do
|
16
|
-
assert_equal "bar", Cuba.foo
|
17
|
-
end
|
18
|
-
|
19
|
-
test do
|
20
|
-
_, _, body = Cuba.call({ "PATH_INFO" => "", "SCRIPT_NAME" => "" })
|
21
|
-
assert_response body, ["bar"]
|
22
|
-
end
|
23
|
-
|
24
|
-
test do
|
25
|
-
assert_equal "bar", Admin.foo
|
26
|
-
|
27
|
-
Admin.foo = "baz"
|
28
|
-
|
29
|
-
assert_equal "baz", Admin.foo
|
30
|
-
assert_equal "bar", Cuba.foo
|
31
|
-
end
|
32
|
-
|
33
|
-
test do
|
34
|
-
Cuba.foo = "baz"
|
35
|
-
assert_equal "baz", Cuba.foo
|
36
|
-
end
|
37
|
-
|
38
|
-
|