cuba-contrib 3.0.1 → 3.1.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.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cuba-contrib"
3
- s.version = "3.0.1"
3
+ s.version = "3.1.0.rc1"
4
4
  s.summary = "Cuba plugins and utilities."
5
5
  s.description = "Includes various helper tools for Cuba."
6
6
  s.authors = ["Cyril David"]
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  "views/*.mote"
18
18
  ]
19
19
 
20
- s.add_dependency "cuba", "~> 3.0"
20
+ s.add_dependency "cuba", "3.0.1.rc3"
21
21
  s.add_development_dependency "cutest"
22
22
  s.add_development_dependency "capybara"
23
23
  end
@@ -5,28 +5,33 @@ class Cuba
5
5
  include ::Mote::Helpers
6
6
 
7
7
  def self.setup(app)
8
- app.settings[:views] ||= File.expand_path("views", Dir.pwd)
9
- app.settings[:layout] ||= "layout"
8
+ app.settings[:mote] ||= {}
9
+ app.settings[:mote][:views] ||= File.expand_path("views", Dir.pwd)
10
+ app.settings[:mote][:layout] ||= "layout"
10
11
  end
11
12
 
12
13
  def partial(template, locals = {})
13
- mote(mote_path(template), locals)
14
+ mote(mote_path(template), locals.merge(this: self))
14
15
  end
15
16
 
16
- def view(template, locals = {}, layout = settings[:layout])
17
+ def view(template, locals = {}, layout = settings[:mote][:layout])
17
18
  raise NoLayout.new(self) unless layout
18
19
 
19
20
  partial(layout, locals.merge(mote_vars(partial(template, locals))))
20
21
  end
21
22
 
23
+ def render(template, locals = {}, layout = settings[:mote][:layout])
24
+ res.write view(template, locals, layout)
25
+ end
26
+
22
27
  def mote_path(template)
23
28
  return template if template.end_with?(".mote")
24
29
 
25
- File.join(settings[:views], "#{template}.mote")
30
+ File.join(settings[:mote][:views], "#{template}.mote")
26
31
  end
27
32
 
28
33
  def mote_vars(content)
29
- { content: content, session: session }
34
+ { content: content }
30
35
  end
31
36
 
32
37
  class NoLayout < StandardError
@@ -1,19 +1,20 @@
1
1
  require_relative "helper"
2
2
 
3
3
  test "doesn't override already existing settings" do
4
- Cuba.settings[:views] = "./templates"
5
- Cuba.settings[:layout] = "guest"
4
+ Cuba.settings[:mote] ||= {}
5
+ Cuba.settings[:mote][:views] = "./templates"
6
+ Cuba.settings[:mote][:layout] = "guest"
6
7
 
7
8
  Cuba.plugin Cuba::Mote
8
9
 
9
- assert_equal "./templates", Cuba.settings[:views]
10
- assert_equal "guest", Cuba.settings[:layout]
10
+ assert_equal "./templates", Cuba.settings[:mote][:views]
11
+ assert_equal "guest", Cuba.settings[:mote][:layout]
11
12
  end
12
13
 
13
14
  Cuba.plugin Cuba::Mote
14
15
  Cuba.use Rack::Session::Cookie
15
- Cuba.settings[:views] = "./test/views"
16
- Cuba.settings[:layout] = "layout"
16
+ Cuba.settings[:mote][:views] = "./test/views"
17
+ Cuba.settings[:mote][:layout] = "layout"
17
18
 
18
19
  Cuba.define do
19
20
  on "frag" do
@@ -24,25 +25,57 @@ Cuba.define do
24
25
  res.write view("home", title: "Hola")
25
26
  end
26
27
 
28
+ on "render" do
29
+ render("home", title: "Hola")
30
+ end
31
+
32
+ on "partial-fu" do
33
+ res.write partial("partial1")
34
+ end
35
+
27
36
  on "abs_path" do
28
37
  res.write view("./test/views/custom/abs_path.mote", title: "Absolute")
29
38
  end
30
39
  end
31
40
 
32
- test do
41
+ test "view" do
33
42
  _, _, body = Cuba.call({ "PATH_INFO" => "/", "SCRIPT_NAME" => "" })
34
43
 
35
44
  assert_response body, ["<title>Hola</title>\n<h1>Home</h1>\n\n"]
36
45
  end
37
46
 
38
- test do
47
+ test "render" do
48
+ _, _, body = Cuba.call({ "PATH_INFO" => "/render", "SCRIPT_NAME" => "" })
49
+
50
+ assert_response body, ["<title>Hola</title>\n<h1>Home</h1>\n\n"]
51
+ end
52
+
53
+ test "partial-fu" do
54
+ # We verify that nesting partials and contexts are passed along properly.
55
+ _, _, body = Cuba.call({ "PATH_INFO" => "/partial-fu/A", "SCRIPT_NAME" => "" })
56
+ assert_response body, ["partial1\npartial2\n/partial-fu/A\n\n"]
57
+
58
+ # And that we're able to use req.path in the inner partials without an issue.
59
+ _, _, body = Cuba.call({ "PATH_INFO" => "/partial-fu/B", "SCRIPT_NAME" => "" })
60
+ assert_response body, ["partial1\npartial2\n/partial-fu/B\n\n"]
61
+ end
62
+
63
+ test "partial" do
39
64
  _, _, body = Cuba.call({ "PATH_INFO" => "/frag", "SCRIPT_NAME" => "" })
40
65
 
41
66
  assert_response body, ["<h1>Bar</h1>\n"]
42
67
  end
43
68
 
44
- test do
69
+ test "use of absolute mote path" do
45
70
  _, _, body = Cuba.call({ "PATH_INFO" => "/abs_path", "SCRIPT_NAME" => "" })
46
71
 
47
72
  assert_response body, ["<title>Absolute</title>\n<h1>Abs Path</h1>\n\n"]
48
73
  end
74
+
75
+ test "use of absolute mote path for the layout" do
76
+ Cuba.settings[:mote][:layout] = "./test/views/custom_layout.mote"
77
+
78
+ _, _, body = Cuba.call({ "PATH_INFO" => "/", "SCRIPT_NAME" => "" })
79
+
80
+ assert_response body, ["<title>Custom Layout: Hola</title>\n<h1>Home</h1>\n\n"]
81
+ end
metadata CHANGED
@@ -1,30 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuba-contrib
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
5
- prerelease:
4
+ version: 3.1.0.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Cyril David
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-20 00:00:00.000000000 Z
12
+ date: 2012-07-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cuba
16
- requirement: &70149650848280 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: '3.0'
21
+ version: 3.0.1.rc3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70149650848280
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - '='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.1.rc3
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: cutest
27
- requirement: &70149650847560 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70149650847560
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: capybara
38
- requirement: &70149650846740 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,7 +53,12 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70149650846740
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  description: Includes various helper tools for Cuba.
48
63
  email:
49
64
  - me@cyrildavid.com
@@ -87,12 +102,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
102
  required_rubygems_version: !ruby/object:Gem::Requirement
88
103
  none: false
89
104
  requirements:
90
- - - ! '>='
105
+ - - ! '>'
91
106
  - !ruby/object:Gem::Version
92
- version: '0'
107
+ version: 1.3.1
93
108
  requirements: []
94
109
  rubyforge_project:
95
- rubygems_version: 1.8.11
110
+ rubygems_version: 1.8.23
96
111
  signing_key:
97
112
  specification_version: 3
98
113
  summary: Cuba plugins and utilities.