cuba-contrib 0.1.0.rc2 → 3.0.0.rc1
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/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
|
-
|