curtain 0.1.2 → 0.1.3

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.md CHANGED
@@ -20,82 +20,114 @@ Or install it yourself as:
20
20
 
21
21
  To use Curtain, you define a view and then have that view render templates:
22
22
 
23
- # hello.erb
24
- <h1><%= msg %></h1>
25
-
26
- # my_view.rb
27
- class MyView < Struct.new(:msg)
28
- include Curtain
29
- end
30
-
31
- view = MyView.new("Hello, World!")
32
- view.render("hello") # => <h1>Hello, World!</h1>
23
+ ### hello.erb
24
+ ``` erb
25
+ <h1><%= msg %></h1>
26
+ ```
27
+
28
+ ### my_view.rb
29
+ ``` ruby
30
+ class MyView
31
+ include Curtain
32
+
33
+ attr_accessor :msg
34
+
35
+ def initialize(msg)
36
+ @msg = msg
37
+ end
38
+ end
39
+ ```
40
+
41
+ ``` ruby
42
+ view = MyView.new("Hello, World!")
43
+ view.render("hello") # => <h1>Hello, World!</h1>
44
+ ```
33
45
 
34
46
  The template is rendered in the scope of the view object, so any methods defined in the view are available to the template. You don't have to create a subclass if you don't need to:
35
47
 
36
- Curtain::View.new.render("hello", :msg => "Hello, World!")
48
+ ``` ruby
49
+ Curtain::View.new.render("hello", :msg => "Hello, World!")
50
+ ```
37
51
 
38
52
  There is an equivalent shortcut available:
39
53
 
40
- Curtain.render("hello", :msg => "Hello, World!")
54
+ ``` ruby
55
+ Curtain.render("hello", :msg => "Hello, World!")
56
+ ```
41
57
 
42
58
  Curtain includes many useful methods. Here's a more realistic example that shows some of the built-in methods. If you have templates like this:
43
59
 
44
- # friends.erb
45
- <% cache "friends-#{current_user.id}", ttl: 5.minutes do %>
46
- <% friends.each do |friend| %>
47
- <%= render "profile", :profile => friend %>
48
- <% end %>
49
- <% end %>
50
-
51
- # profile.erb
52
- <ul>
53
- <li><%= link_to profile.name, path(:profile, :id => profile.id) %></li>
54
- </ul>
60
+ ### friends.erb
61
+ ``` erb
62
+ <% cache "friends-#{current_user.id}", ttl: 5.minutes do %>
63
+ <% friends.each do |friend| %>
64
+ <%= render "profile", :profile => friend %>
65
+ <% end %>
66
+ <% end %>
67
+ ```
68
+
69
+ ### profile.erb
70
+ ``` erb
71
+ <ul>
72
+ <li><%= link_to profile.name, path(:profile, :id => profile.id) %></li>
73
+ </ul>
74
+ ```
55
75
 
56
76
  You can use them in this way:
57
77
 
58
- class ApplicationView < Curtain::View
59
- attr_accessor :current_user
60
- end
78
+ ``` ruby
79
+ class ApplicationView < Curtain::View
80
+ attr_accessor :current_user
81
+ end
61
82
 
62
- class FriendsView < Curtain::View
63
- delegate :friends, :to => :current_user
64
- end
83
+ class FriendsView < Curtain::View
84
+ delegate :friends, :to => :current_user
85
+ end
65
86
 
66
- view = FriendsView.new(:current_user => User.first)
87
+ view = FriendsView.new(:current_user => User.first)
67
88
 
68
- # The default template name is based on the name of the class of the view
69
- view.render
89
+ # The default template name is based on the name of the class of the view
90
+ view.render
91
+ ```
70
92
 
71
93
  ### Variables
72
94
 
73
95
  If you don't want to define a subclass of `Curtain::View` and add attributes to it, you can also use variables. `Curtain::View` supports the hash-like Ruby method `[]` and `[]=` to define variables that will act as locals in when the template is rendered:
74
96
 
75
- # hello.erb
76
- <h1><%= msg %></h1>
97
+ ### hello.erb
98
+ ``` erb
99
+ <h1><%= msg %></h1>
100
+ ```
77
101
 
78
- view = Curtain::View.new
79
- view[:msg] = "Hello"
80
- view.render # => "<h1>Hello</h1>"
102
+ ``` ruby
103
+ view = Curtain::View.new
104
+ view[:msg] = "Hello"
105
+ view.render(:hello) # => "<h1>Hello</h1>"
106
+ ```
81
107
 
82
108
  Note that unlike locals, variables exist throughout nested scope of render calls:
83
109
 
84
- # main.erb
85
- foo: <%= foo %>
86
- bar: <%= bar %>
87
- <%= render "partial" %>
88
-
89
- # partial.erb
90
- foo: <%= foo %>
91
- bar: <%= bar %>
92
-
93
- class MainView < Curtain::View
94
- end
110
+ ### main.erb
111
+ ``` erb
112
+ foo: <%= foo %>
113
+ bar: <%= bar %>
114
+ <%= render "partial" %>
115
+ ```
95
116
 
96
- view = MainView.new
97
- view[:foo] = "foo"
98
- view.render :bar => "bar"
117
+ ### partial.erb
118
+ ``` erb
119
+ foo: <%= foo %>
120
+ bar: <%= bar %>
121
+ ```
122
+
123
+ ``` ruby
124
+ class MainView < Curtain::View
125
+ end
126
+
127
+ view = MainView.new
128
+ view[:foo] = "foo"
129
+ view.render :bar => "bar"
130
+ ```
99
131
 
100
132
  This example would result in an error. As the main template is first rendered, foo is defined as "foo" because it is a variable, the bar is "bar" because it is passed in as a local. Then the partial template is rendered, and foo is still defined as "foo" because it is a variable, but since bar was a local passed to the rendering of main, it doesn't carry through to the rendering of partial.
101
133
 
data/curtain.gemspec CHANGED
@@ -5,14 +5,14 @@ Gem::Specification.new do |gem|
5
5
  gem.email = ["mail@paulbarry.com"]
6
6
  gem.description = %q{A template rendering framework}
7
7
  gem.summary = %q{A template rendering framework}
8
- gem.homepage = ""
8
+ gem.homepage = "http://github.com/pjb3/curtain"
9
9
 
10
10
  gem.files = `git ls-files`.split($\)
11
11
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
13
  gem.name = "curtain"
14
14
  gem.require_paths = ["lib"]
15
- gem.version = "0.1.2"
15
+ gem.version = "0.1.3"
16
16
 
17
17
  gem.add_runtime_dependency "activesupport"
18
18
  gem.add_runtime_dependency "tilt"
@@ -1,3 +1,3 @@
1
1
  module Curtain
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curtain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-04 00:00:00.000000000 Z
12
+ date: 2013-03-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -129,7 +129,7 @@ files:
129
129
  - test/html_helpers_test.rb
130
130
  - test/test_helper.rb
131
131
  - test/url_helpers_test.rb
132
- homepage: ''
132
+ homepage: http://github.com/pjb3/curtain
133
133
  licenses: []
134
134
  post_install_message:
135
135
  rdoc_options: []
@@ -166,3 +166,4 @@ test_files:
166
166
  - test/html_helpers_test.rb
167
167
  - test/test_helper.rb
168
168
  - test/url_helpers_test.rb
169
+ has_rdoc: