hmote 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62b364d0904c64b47d40549e99b1b074f3b34830
4
- data.tar.gz: 4f636c64838e7abfd047a963e37ce5d2de5392b8
3
+ metadata.gz: 855833b547b4d187ff22113c18fe341b5c51d5cb
4
+ data.tar.gz: ede1156a3d50af5965e2bf39a5bd9dc550feb767
5
5
  SHA512:
6
- metadata.gz: cecb32632d690a9e5fccf139cf298c9d462633aa1438f2e935ddabc2b344e93d29249a9670ea2ee94dcd408c0b837deafdb1d1acb3aa979369411cc3d9827a56
7
- data.tar.gz: 2df94a7b9b45bcf51978cb6bd326c3f86de5929777fc50ea91663f0abced820afc7aee35fceeb9c29c25ecf782189ad4735ab4886cffe6cc6edd6a45c0896976
6
+ metadata.gz: f8f3e5add70ab91115ffd4c3ec06fccee2527e3a77351aa2d225f7dbf5ee43a4777c70f7c4e54ecbcd598f9b1b7c8f7f9efa48a68d95a48e0b876d16a5d21006
7
+ data.tar.gz: d38d472e9bc930879e9261f1ddfa6c4e4a00255c0dbc236a1274489af5c1f8c0524a40bca639ea2f0b65535db23d34e614e0c11655254c6c251f5cd398a4cd9a
data/.gems CHANGED
@@ -1,4 +1,2 @@
1
1
  cutest -v 1.2.2
2
2
  hache -v 1.1.0
3
- cuba -v 3.4.0
4
- rack-test -v 0.6.3
data/README.md CHANGED
@@ -127,87 +127,10 @@ For example:
127
127
  hmote("foo.mote", a: 1, b: 2)
128
128
  ```
129
129
 
130
- HMote::Render
131
- -------------
132
-
133
- To use HMote in [Cuba][cuba], you need to load the `HMote::Render`
134
- plugin as shown below:
135
-
136
- ```ruby
137
- require "hmote"
138
- require "hmote/render"
139
-
140
- Cuba.plugin(HMote::Render)
141
- ```
142
-
143
- `HMote::Render` provides three helper methods for rendering templates:
144
- `partial`, `view` and `render`.
130
+ Related projects:
131
+ -----------------
145
132
 
146
- ```ruby
147
- Cuba.define do
148
- on "about" do
149
- # `partial` renders a template without a layout.
150
- res.write partial("about")
151
- end
152
-
153
- on "home" do
154
- # `view` renders a template within a layout.
155
- res.write view("about")
156
- end
157
-
158
- on "contact" do
159
- # `render` is a shortcut to `res.write view(...)`
160
- render("contact")
161
- end
162
- end
163
- ```
164
-
165
- By default, `HMote::Render` assumes that all view templates are placed
166
- in a folder named `views` and that they use the `.mote` extension. Also
167
- for `view` and `render` methods, it assumes that the layout template is
168
- called `layout.mote`.
169
-
170
- The defaults can be changed through the `Cuba.settings` method:
171
-
172
- ```ruby
173
- Cuba.settings[:hmote][:views] = "./views/admin/"
174
- Cuba.settings[:hmote][:layout] = "admin"
175
- ```
176
-
177
- ### Layouts
178
-
179
- To render inner content into a layout, use the `{{! content }}` tag.
180
-
181
- ```html
182
- <html>
183
- <head>
184
- <title>Mote Layout</title>
185
- </head>
186
- <body>
187
- <h1>Hello, world!</h1>
188
-
189
- {{! content }}
190
- </body>
191
- </html>
192
- ```
193
-
194
- ### Helpers
195
-
196
- You can use the `app` variable to access the application helpers.
197
-
198
- ```ruby
199
- Cuba.define do
200
- def h(unsafe)
201
- ...
202
- end
203
- end
204
- ```
205
-
206
- ```html
207
- <h1>{{! app.h("unsafe") }}</h1>
208
-
209
- {{ app.partial("list") }}
210
- ```
133
+ - [hmote-render][hmote-render]: HMote plugin for Cuba.
211
134
 
212
135
  Installation
213
136
  ------------
@@ -216,7 +139,7 @@ Installation
216
139
  $ gem install hmote
217
140
  ```
218
141
 
219
- [cuba]: http://cuba.is
220
142
  [mote]: https://github.com/soveran/mote
221
143
  [hache]: https://github.com/harmoni/hache
144
+ [hmote-render]: https://github.com/harmoni/hmote-render
222
145
  [xss]: http://en.wikipedia.org/wiki/Cross-Site_Scripting
data/lib/hmote/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class HMote
2
- VERSION = "1.3.0"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hmote
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francesco Rodríguez
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-17 00:00:00.000000000 Z
12
+ date: 2015-10-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hache
@@ -62,14 +62,12 @@ files:
62
62
  - benchmarks/templates/mote
63
63
  - hmote.gemspec
64
64
  - lib/hmote.rb
65
- - lib/hmote/render.rb
66
65
  - lib/hmote/version.rb
67
66
  - makefile
68
67
  - test/foo.mote
69
68
  - test/helper.rb
70
69
  - test/helpers.rb
71
70
  - test/parsing.rb
72
- - test/render.rb
73
71
  - test/views/context.mote
74
72
  - test/views/home.mote
75
73
  - test/views/layout.mote
@@ -93,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
91
  version: '0'
94
92
  requirements: []
95
93
  rubyforge_project:
96
- rubygems_version: 2.4.5
94
+ rubygems_version: 2.4.8
97
95
  signing_key:
98
96
  specification_version: 4
99
97
  summary: A minimum operational template that escapes HTML tags by default.
data/lib/hmote/render.rb DELETED
@@ -1,45 +0,0 @@
1
- require_relative "../hmote"
2
-
3
- module HMote::Render
4
- include HMote::Helpers
5
-
6
- CONTENT_TYPE = "Content-Type".freeze
7
- DEFAULT_CONTENT_TYPE = "text/html; charset=utf-8".freeze
8
-
9
- def self.setup(app)
10
- app.settings[:hmote] ||= {}
11
-
12
- app.layout("layout")
13
- app.view_path("views")
14
- end
15
-
16
- def render(template, params = {}, layout = settings[:hmote][:layout])
17
- res.status ||= 200
18
- res.headers[CONTENT_TYPE] ||= DEFAULT_CONTENT_TYPE
19
- res.write(view(template, params, layout))
20
-
21
- halt(res.finish)
22
- end
23
-
24
- def view(template, params = {}, layout = settings[:hmote][:layout])
25
- return partial(layout, params.merge(content: partial(template, params)))
26
- end
27
-
28
- def partial(template, params = {})
29
- return hmote(template_path(template), params.merge(app: self), TOPLEVEL_BINDING)
30
- end
31
-
32
- def template_path(template)
33
- return File.join(settings[:hmote][:views], "#{template}.mote")
34
- end
35
-
36
- module ClassMethods
37
- def layout(name)
38
- settings[:hmote][:layout] = name
39
- end
40
-
41
- def view_path(path)
42
- settings[:hmote][:views] = File.expand_path(path, Dir.pwd)
43
- end
44
- end
45
- end
data/test/render.rb DELETED
@@ -1,67 +0,0 @@
1
- require_relative "helper"
2
- require "cuba/test"
3
- require_relative "../lib/hmote/render"
4
-
5
- Cuba.plugin(HMote::Render)
6
- Cuba.settings[:hmote][:views] = "./test/views"
7
-
8
- Cuba.define do
9
- def name
10
- "App"
11
- end
12
-
13
- on "partial" do
14
- res.write partial("home")
15
- end
16
-
17
- on "view" do
18
- res.write view("home", title: "Hello")
19
- end
20
-
21
- on "render" do
22
- render("home", title: "Hola")
23
- end
24
-
25
- on "context" do
26
- res.write partial("context")
27
- end
28
-
29
- on "halt" do
30
- render("home", title: "Halt before error")
31
- raise "This is invalid"
32
- end
33
- end
34
-
35
- scope do
36
- test "view renders view with layout" do
37
- expected = "<title>Hello</title>\n<h1>Home</h1>"
38
-
39
- get "/view"
40
-
41
- assert last_response.body[expected]
42
- end
43
-
44
- test "partial renders view without layout" do
45
- get "/partial"
46
-
47
- assert last_response.body["<h1>Home</h1>"]
48
- end
49
-
50
- test "render renders view with layout" do
51
- get "/render"
52
-
53
- assert last_response.body["<title>Hola</title>\n<h1>Home</h1>"]
54
- end
55
-
56
- test "access to application context" do
57
- get "/context"
58
-
59
- assert last_response.body["App"]
60
- end
61
-
62
- test "render halts request" do
63
- get "/halt"
64
-
65
- assert true
66
- end
67
- end