dryml 1.3.3 → 1.4.0.pre2
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/Gemfile +6 -0
- data/README +2 -0
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/cucumber.yml +9 -0
- data/dryml.gemspec +4 -2
- data/features/cookbook/01_simple_page_templates.feature +44 -0
- data/features/cookbook/02_defining_simple_tags.feature +375 -0
- data/features/cookbook/03_implicit_context.feature +229 -0
- data/features/cookbook/04_tag_attributes.feature +120 -0
- data/features/cookbook/05_repeated_and_optional_content.feature +241 -0
- data/features/cookbook/06_pseudo_parameters.feature +191 -0
- data/features/cookbook/07_nested_parameters.feature +147 -0
- data/features/cookbook/08_customizing_tags.feature +307 -0
- data/features/cookbook/09_aliasing_tags.feature +50 -0
- data/features/cookbook/10_polymorphic_tags.feature +168 -0
- data/features/cookbook/11_wrapping_content.feature +57 -0
- data/features/cookbook/12_local_and_scoped_variables.feature +102 -0
- data/features/doctest_examples.feature +187 -0
- data/features/merge_params.feature +36 -0
- data/features/replace_parameters.feature +21 -0
- data/features/static_tags.feature +91 -0
- data/features/step_definitions/contexts.rb +25 -0
- data/features/step_definitions/dom_comparison.rb +10 -0
- data/features/step_definitions/rendering.rb +21 -0
- data/features/support/env.rb +32 -0
- data/features/support/models/author.rb +18 -0
- data/features/support/models/blog_post.rb +37 -0
- data/features/support/models/discussion.rb +15 -0
- data/features/support/models/post.rb +12 -0
- data/features/support/strip_formatter.rb +14 -0
- data/lib/dryml/dryml_builder.rb +4 -14
- data/lib/dryml/dryml_doc.rb +6 -1
- data/lib/dryml/helper.rb +17 -1
- data/lib/dryml/part_context.rb +12 -15
- data/lib/dryml/railtie/template_handler.rb +1 -3
- data/lib/dryml/railtie.rb +1 -0
- data/lib/dryml/taglib.rb +24 -30
- data/lib/dryml/template.rb +32 -86
- data/lib/dryml/template_environment.rb +40 -17
- data/lib/dryml.rb +22 -11
- data/taglibs/core.dryml +18 -12
- data/taglibs/dryml.dryml +3 -0
- metadata +97 -56
data/Gemfile
ADDED
data/README
CHANGED
data/Rakefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'rake'
|
2
|
-
require '
|
2
|
+
require 'rdoc/task'
|
3
3
|
require 'rake/testtask'
|
4
4
|
|
5
5
|
RUBY = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']).sub(/.*\s.*/m, '"\&"')
|
@@ -17,6 +17,7 @@ end
|
|
17
17
|
|
18
18
|
# --- RDOC --- #
|
19
19
|
|
20
|
+
require 'rubygems'
|
20
21
|
require 'yard'
|
21
22
|
YARD::Rake::YardocTask.new do |t|
|
22
23
|
t.files = ['lib/**/*.rb', 'README', 'LICENSE.txt', 'CHANGES.txt']
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0.pre2
|
data/cucumber.yml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
<%
|
2
|
+
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
3
|
+
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
4
|
+
std_opts = "--require features --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
|
5
|
+
%>
|
6
|
+
default: <%= std_opts %> features
|
7
|
+
wip: --tags @wip:3 --wip features
|
8
|
+
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
9
|
+
|
data/dryml.gemspec
CHANGED
@@ -11,9 +11,11 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.summary = "The Don't Repeat Yourself Markup Language"
|
12
12
|
s.description = "The Don't Repeat Yourself Markup Language"
|
13
13
|
|
14
|
-
s.add_runtime_dependency('actionpack', ["~> 3.
|
14
|
+
s.add_runtime_dependency('actionpack', ["~> 3.1.0"])
|
15
15
|
s.add_runtime_dependency('hobo_support', ["= #{version}"])
|
16
|
-
s.add_development_dependency('rubydoctest', [">=
|
16
|
+
s.add_development_dependency('rubydoctest', [">= 1.1.3"])
|
17
|
+
s.add_development_dependency('cucumber', '~> 1.1.0')
|
18
|
+
s.add_development_dependency('aruba', '~> 0.4.6')
|
17
19
|
|
18
20
|
s.files = `git ls-files -x #{name}/* -z`.split("\0")
|
19
21
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
Feature: Simple page templates and ERB
|
2
|
+
|
3
|
+
Scenario: Interpolating in HTML attributes
|
4
|
+
Given a file named "example.dryml" with:
|
5
|
+
"""
|
6
|
+
<% my_url = '/foo/bar' %>
|
7
|
+
<a href="#{my_url}">Link Text</a>
|
8
|
+
"""
|
9
|
+
When I render "example.dryml"
|
10
|
+
Then the output DOM should be:
|
11
|
+
"""
|
12
|
+
<a href="/foo/bar">Link Text</a>
|
13
|
+
"""
|
14
|
+
|
15
|
+
Scenario: Merging a hash of attributes
|
16
|
+
Given a file named "example.dryml" with:
|
17
|
+
"""
|
18
|
+
<% hash = { :action => '/foo/bar', :method => 'get' } %>
|
19
|
+
<form merge-attrs="&hash">
|
20
|
+
<input type="text" name="wut" />
|
21
|
+
</form>
|
22
|
+
"""
|
23
|
+
When I render "example.dryml"
|
24
|
+
Then the output DOM should be:
|
25
|
+
"""
|
26
|
+
<form action="/foo/bar" method="get">
|
27
|
+
<input type="text" name="wut" />
|
28
|
+
</form>
|
29
|
+
"""
|
30
|
+
|
31
|
+
Scenario: Dynamically calling tags
|
32
|
+
Given a file named "example.dryml" with:
|
33
|
+
"""
|
34
|
+
<% my_tag_name = "div" %>
|
35
|
+
<%= raw "<#{my_tag_name}>" %>FOO<%= raw "</#{my_tag_name}>" %>
|
36
|
+
<call-tag tag="&my_tag_name">BAR</call-tag>
|
37
|
+
"""
|
38
|
+
When I render "example.dryml"
|
39
|
+
Then the output DOM should be:
|
40
|
+
"""
|
41
|
+
<div>FOO</div>
|
42
|
+
<div>BAR</div>
|
43
|
+
"""
|
44
|
+
|
@@ -0,0 +1,375 @@
|
|
1
|
+
Feature: Defining simple tags
|
2
|
+
|
3
|
+
Scenario: A simple tag
|
4
|
+
Given a file named "example_taglib.dryml" with:
|
5
|
+
"""
|
6
|
+
<def tag="page">
|
7
|
+
<html>
|
8
|
+
<head>
|
9
|
+
<title>My Blog</title>
|
10
|
+
</head>
|
11
|
+
<body>
|
12
|
+
<h1>My Famous Blog!</h1>
|
13
|
+
<h2><%= @post_title %></h2>
|
14
|
+
|
15
|
+
<div class="post-body">
|
16
|
+
<%= @post_body %>
|
17
|
+
</div>
|
18
|
+
</body>
|
19
|
+
</html>
|
20
|
+
</def>
|
21
|
+
"""
|
22
|
+
And a file named "example.dryml" with:
|
23
|
+
"""
|
24
|
+
<% @post_title = 'FOO' %>
|
25
|
+
<% @post_body = 'Blah blah blah' %>
|
26
|
+
<page />
|
27
|
+
"""
|
28
|
+
When I include the taglib "example_taglib"
|
29
|
+
And I render "example.dryml"
|
30
|
+
Then the output DOM should be:
|
31
|
+
"""
|
32
|
+
<html>
|
33
|
+
<head>
|
34
|
+
<title>My Blog</title>
|
35
|
+
</head>
|
36
|
+
<body>
|
37
|
+
<h1>My Famous Blog!</h1>
|
38
|
+
<h2>FOO</h2>
|
39
|
+
<div class="post-body">
|
40
|
+
Blah blah blah
|
41
|
+
</div>
|
42
|
+
</body>
|
43
|
+
</html>
|
44
|
+
"""
|
45
|
+
|
46
|
+
Scenario: a simple tag with a param
|
47
|
+
Given a file named "example_taglib.dryml" with:
|
48
|
+
"""
|
49
|
+
<def tag="page">
|
50
|
+
<html>
|
51
|
+
<head>
|
52
|
+
<title>My Blog</title>
|
53
|
+
</head>
|
54
|
+
<body param/>
|
55
|
+
</html>
|
56
|
+
</def>
|
57
|
+
"""
|
58
|
+
And a file named "example.dryml" with:
|
59
|
+
"""
|
60
|
+
<% @post_title = 'FOO' %>
|
61
|
+
<% @post_body = 'Blah blah blah' %>
|
62
|
+
<page>
|
63
|
+
<body:>
|
64
|
+
<h1>My Famous Blog!</h1>
|
65
|
+
<h2><%= @post_title %></h2>
|
66
|
+
|
67
|
+
<div class="post-body">
|
68
|
+
<%= @post_body %>
|
69
|
+
</div>
|
70
|
+
</body:>
|
71
|
+
</page>
|
72
|
+
"""
|
73
|
+
When I include the taglib "example_taglib"
|
74
|
+
And I render "example.dryml"
|
75
|
+
Then the output DOM should be:
|
76
|
+
"""
|
77
|
+
<html>
|
78
|
+
<head>
|
79
|
+
<title>My Blog</title>
|
80
|
+
</head>
|
81
|
+
<body>
|
82
|
+
<h1>My Famous Blog!</h1>
|
83
|
+
<h2>FOO</h2>
|
84
|
+
<div class="post-body">
|
85
|
+
Blah blah blah
|
86
|
+
</div>
|
87
|
+
</body>
|
88
|
+
</html>
|
89
|
+
"""
|
90
|
+
Scenario: a simple tag with a renamed param
|
91
|
+
Given a file named "example_taglib.dryml" with:
|
92
|
+
"""
|
93
|
+
<def tag="page">
|
94
|
+
<html>
|
95
|
+
<head>
|
96
|
+
<title>My Blog</title>
|
97
|
+
</head>
|
98
|
+
<body param="content"/>
|
99
|
+
</html>
|
100
|
+
</def>
|
101
|
+
"""
|
102
|
+
And a file named "example.dryml" with:
|
103
|
+
"""
|
104
|
+
<% @post_title = 'FOO' %>
|
105
|
+
<% @post_body = 'Blah blah blah' %>
|
106
|
+
<page>
|
107
|
+
<content:>
|
108
|
+
<h1>My Famous Blog!</h1>
|
109
|
+
<h2><%= @post_title %></h2>
|
110
|
+
|
111
|
+
<div class="post-body">
|
112
|
+
<%= @post_body %>
|
113
|
+
</div>
|
114
|
+
</content:>
|
115
|
+
</page>
|
116
|
+
"""
|
117
|
+
When I include the taglib "example_taglib"
|
118
|
+
And I render "example.dryml"
|
119
|
+
Then the output DOM should be:
|
120
|
+
"""
|
121
|
+
<html>
|
122
|
+
<head>
|
123
|
+
<title>My Blog</title>
|
124
|
+
</head>
|
125
|
+
<body class="content">
|
126
|
+
<h1>My Famous Blog!</h1>
|
127
|
+
<h2>FOO</h2>
|
128
|
+
<div class="post-body">
|
129
|
+
Blah blah blah
|
130
|
+
</div>
|
131
|
+
</body>
|
132
|
+
</html>
|
133
|
+
"""
|
134
|
+
|
135
|
+
Scenario: a simple tag with two parameters
|
136
|
+
Given a file named "example_taglib.dryml" with:
|
137
|
+
"""
|
138
|
+
<def tag="page">
|
139
|
+
<html>
|
140
|
+
<head>
|
141
|
+
<title>My Blog</title>
|
142
|
+
</head>
|
143
|
+
<body>
|
144
|
+
<div param="content" />
|
145
|
+
<div param="aside" />
|
146
|
+
</body>
|
147
|
+
</html>
|
148
|
+
</def>
|
149
|
+
"""
|
150
|
+
And a file named "example.dryml" with:
|
151
|
+
"""
|
152
|
+
<% @post_title = 'FOO' %>
|
153
|
+
<% @post_body = 'Blah blah blah' %>
|
154
|
+
<page>
|
155
|
+
<content:>
|
156
|
+
<h1>My Famous Blog!</h1>
|
157
|
+
<h2><%= @post_title %></h2>
|
158
|
+
|
159
|
+
<div class="post-body">
|
160
|
+
<%= @post_body %>
|
161
|
+
</div>
|
162
|
+
</content:>
|
163
|
+
<aside:>
|
164
|
+
Here is some aside content!
|
165
|
+
</aside:>
|
166
|
+
</page>
|
167
|
+
"""
|
168
|
+
When I include the taglib "example_taglib"
|
169
|
+
And I render "example.dryml"
|
170
|
+
Then the output DOM should be:
|
171
|
+
"""
|
172
|
+
<html>
|
173
|
+
<head>
|
174
|
+
<title>My Blog</title>
|
175
|
+
</head>
|
176
|
+
<body>
|
177
|
+
<div class="content">
|
178
|
+
<h1>My Famous Blog!</h1>
|
179
|
+
<h2>FOO</h2>
|
180
|
+
<div class="post-body">
|
181
|
+
Blah blah blah
|
182
|
+
</div>
|
183
|
+
</div>
|
184
|
+
<div class="aside">
|
185
|
+
Here is some aside content!
|
186
|
+
</div>
|
187
|
+
</body>
|
188
|
+
</html>
|
189
|
+
"""
|
190
|
+
|
191
|
+
Scenario: a simple tag with default parameter content
|
192
|
+
Given a file named "example_taglib.dryml" with:
|
193
|
+
"""
|
194
|
+
<def tag="page">
|
195
|
+
<html>
|
196
|
+
<head>
|
197
|
+
<title param>My Blog</title>
|
198
|
+
</head>
|
199
|
+
<body param/>
|
200
|
+
</html>
|
201
|
+
</def>
|
202
|
+
"""
|
203
|
+
And a file named "example.dryml" with:
|
204
|
+
"""
|
205
|
+
<% @post_title = 'FOO' %>
|
206
|
+
<% @post_body = 'Blah blah blah' %>
|
207
|
+
<page>
|
208
|
+
<title:>My VERY EXCITING Blog</title:>
|
209
|
+
<body:>
|
210
|
+
<h1>My Famous Blog!</h1>
|
211
|
+
<h2><%= @post_title %></h2>
|
212
|
+
|
213
|
+
<div class="post-body">
|
214
|
+
<%= @post_body %>
|
215
|
+
</div>
|
216
|
+
</body:>
|
217
|
+
</page>
|
218
|
+
"""
|
219
|
+
When I include the taglib "example_taglib"
|
220
|
+
And I render "example.dryml"
|
221
|
+
Then the output DOM should be:
|
222
|
+
"""
|
223
|
+
<html>
|
224
|
+
<head>
|
225
|
+
<title>My VERY EXCITING Blog</title>
|
226
|
+
</head>
|
227
|
+
<body>
|
228
|
+
<h1>My Famous Blog!</h1>
|
229
|
+
<h2>FOO</h2>
|
230
|
+
<div class="post-body">
|
231
|
+
Blah blah blah
|
232
|
+
</div>
|
233
|
+
</body>
|
234
|
+
</html>
|
235
|
+
"""
|
236
|
+
|
237
|
+
Scenario: a simple tag with nested parameters
|
238
|
+
Given a file named "example_taglib.dryml" with:
|
239
|
+
"""
|
240
|
+
<def tag="page">
|
241
|
+
<html>
|
242
|
+
<head>
|
243
|
+
<title>My Blog</title>
|
244
|
+
</head>
|
245
|
+
<body param>
|
246
|
+
<div param="content" />
|
247
|
+
<div param="aside" />
|
248
|
+
</body>
|
249
|
+
</html>
|
250
|
+
</def>
|
251
|
+
"""
|
252
|
+
And a file named "example.dryml" with:
|
253
|
+
"""
|
254
|
+
<% @post_title = 'FOO' %>
|
255
|
+
<% @post_body = 'Blah blah blah' %>
|
256
|
+
<page>
|
257
|
+
<content:>
|
258
|
+
<h1>My Famous Blog!</h1>
|
259
|
+
<h2><%= @post_title %></h2>
|
260
|
+
|
261
|
+
<div class="post-body">
|
262
|
+
<%= @post_body %>
|
263
|
+
</div>
|
264
|
+
</content:>
|
265
|
+
<aside:>
|
266
|
+
Here is some aside content!
|
267
|
+
</aside:>
|
268
|
+
</page>
|
269
|
+
"""
|
270
|
+
When I include the taglib "example_taglib"
|
271
|
+
And I render "example.dryml"
|
272
|
+
Then the output DOM should be:
|
273
|
+
"""
|
274
|
+
<html>
|
275
|
+
<head>
|
276
|
+
<title>My Blog</title>
|
277
|
+
</head>
|
278
|
+
<body>
|
279
|
+
<div class="content">
|
280
|
+
<h1>My Famous Blog!</h1>
|
281
|
+
<h2>FOO</h2>
|
282
|
+
<div class="post-body">
|
283
|
+
Blah blah blah
|
284
|
+
</div>
|
285
|
+
</div>
|
286
|
+
<div class="aside">
|
287
|
+
Here is some aside content!
|
288
|
+
</div>
|
289
|
+
</body>
|
290
|
+
</html>
|
291
|
+
"""
|
292
|
+
|
293
|
+
Scenario: a simple tag with nested parameters, using the outside param
|
294
|
+
Given a file named "example_taglib.dryml" with:
|
295
|
+
"""
|
296
|
+
<def tag="page">
|
297
|
+
<html>
|
298
|
+
<head>
|
299
|
+
<title>My Blog</title>
|
300
|
+
</head>
|
301
|
+
<body param>
|
302
|
+
<div param="content" />
|
303
|
+
<div param="aside" />
|
304
|
+
</body>
|
305
|
+
</html>
|
306
|
+
</def>
|
307
|
+
"""
|
308
|
+
And a file named "example.dryml" with:
|
309
|
+
"""
|
310
|
+
<% @post_title = 'FOO' %>
|
311
|
+
<% @post_body = 'Blah blah blah' %>
|
312
|
+
<page>
|
313
|
+
<body:>
|
314
|
+
This is body content!
|
315
|
+
</body:>
|
316
|
+
</page>
|
317
|
+
"""
|
318
|
+
When I include the taglib "example_taglib"
|
319
|
+
And I render "example.dryml"
|
320
|
+
Then the output DOM should be:
|
321
|
+
"""
|
322
|
+
<html>
|
323
|
+
<head>
|
324
|
+
<title>My Blog</title>
|
325
|
+
</head>
|
326
|
+
<body>
|
327
|
+
This is body content!
|
328
|
+
</body>
|
329
|
+
</html>
|
330
|
+
"""
|
331
|
+
|
332
|
+
Scenario: a simple tag with a default parameter
|
333
|
+
Given a file named "example_taglib.dryml" with:
|
334
|
+
"""
|
335
|
+
<def tag="page">
|
336
|
+
<html>
|
337
|
+
<head>
|
338
|
+
<title>My Blog</title>
|
339
|
+
</head>
|
340
|
+
<body param="default" />
|
341
|
+
</html>
|
342
|
+
</def>
|
343
|
+
"""
|
344
|
+
And a file named "example.dryml" with:
|
345
|
+
"""
|
346
|
+
<% @post_title = 'FOO' %>
|
347
|
+
<% @post_body = 'Blah blah blah' %>
|
348
|
+
<page>
|
349
|
+
<h1>My Famous Blog!</h1>
|
350
|
+
<h2><%= @post_title %></h2>
|
351
|
+
|
352
|
+
<div class="post-body">
|
353
|
+
<%= @post_body %>
|
354
|
+
</div>
|
355
|
+
</page>
|
356
|
+
"""
|
357
|
+
When I include the taglib "example_taglib"
|
358
|
+
And I render "example.dryml"
|
359
|
+
Then the output DOM should be:
|
360
|
+
"""
|
361
|
+
<html>
|
362
|
+
<head>
|
363
|
+
<title>My Blog</title>
|
364
|
+
</head>
|
365
|
+
<body>
|
366
|
+
<h1>My Famous Blog!</h1>
|
367
|
+
<h2>FOO</h2>
|
368
|
+
<div class="post-body">
|
369
|
+
Blah blah blah
|
370
|
+
</div>
|
371
|
+
</body>
|
372
|
+
</html>
|
373
|
+
"""
|
374
|
+
|
375
|
+
|