deas 0.39.1 → 0.39.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -4
- data/deas.gemspec +6 -6
- data/lib/deas/template_engine.rb +3 -4
- data/lib/deas/template_source.rb +25 -20
- data/lib/deas/version.rb +1 -1
- data/test/support/template-compiled1.test.json +1 -0
- data/test/support/template-compiled2.json.test +1 -0
- data/test/support/{template.erb → template.z.erb} +0 -0
- data/test/unit/template_engine_tests.rb +9 -13
- data/test/unit/template_source_tests.rb +31 -27
- metadata +37 -34
- data/Rakefile +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
|
4
|
-
|
3
|
+
metadata.gz: a00b252a65f50835be12b3dfaa0250f7604daaa4
|
4
|
+
data.tar.gz: 8e0056e396f5f24f9d65f5422d8f418eb01e567c
|
5
5
|
SHA512:
|
6
|
-
|
7
|
-
|
6
|
+
metadata.gz: 01bff2c3747cf37a17ab7840bc2e332889a0acf0c436b3a9c62531cbfb83f123e1ce80ca6654bec9217b35b44106469ce76040332cbde6cd34a633563847b858
|
7
|
+
data.tar.gz: 2465addcff960eab76c8d9a0fa71b3105574d00b84b703461fcf7b22fda388452b8f86dafc35e0406d7f6e2382c6be1988796e7964122ed9e10e993252ea51e2
|
data/Gemfile
CHANGED
data/deas.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.version = Deas::VERSION
|
9
9
|
gem.authors = ["Kelly Redding", "Collin Redding"]
|
10
10
|
gem.email = ["kelly@kellyredding.com", "collin.redding@me.com"]
|
11
|
-
gem.description = %q{Handler-based web framework powered by Sinatra}
|
12
11
|
gem.summary = %q{Handler-based web framework powered by Sinatra}
|
12
|
+
gem.description = %q{Handler-based web framework powered by Sinatra}
|
13
13
|
gem.homepage = "http://github.com/redding/deas"
|
14
14
|
gem.license = 'MIT'
|
15
15
|
|
@@ -18,12 +18,12 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.
|
22
|
-
gem.
|
21
|
+
gem.add_development_dependency("assert", ["~> 2.15.1"])
|
22
|
+
gem.add_development_dependency("assert-rack-test", ["~> 1.0.3"])
|
23
|
+
|
24
|
+
gem.add_dependency("much-plugin", ["~> 0.1.0"])
|
25
|
+
gem.add_dependency("ns-options", ["~> 1.1.6"])
|
23
26
|
gem.add_dependency("rack", ["~> 1.1"])
|
24
27
|
gem.add_dependency("sinatra", ["~> 1.2"])
|
25
28
|
|
26
|
-
gem.add_development_dependency("assert", ["~> 2.15"])
|
27
|
-
gem.add_development_dependency("assert-rack-test")
|
28
|
-
|
29
29
|
end
|
data/lib/deas/template_engine.rb
CHANGED
@@ -30,11 +30,10 @@ module Deas
|
|
30
30
|
class NullTemplateEngine < TemplateEngine
|
31
31
|
|
32
32
|
def render(template_name, view_handler, locals, &content)
|
33
|
-
|
34
|
-
|
35
|
-
raise ArgumentError, "template file `#{template_file}` does not exist"
|
33
|
+
if (path = Dir.glob(self.source_path.join("#{template_name}*")).first).nil?
|
34
|
+
raise ArgumentError, "template file `#{path}` does not exist"
|
36
35
|
end
|
37
|
-
File.read(
|
36
|
+
File.read(path)
|
38
37
|
end
|
39
38
|
|
40
39
|
def partial(template_name, locals, &content)
|
data/lib/deas/template_source.rb
CHANGED
@@ -19,12 +19,12 @@ module Deas
|
|
19
19
|
'default_template_source' => self
|
20
20
|
}
|
21
21
|
@engines = Hash.new{ |h, k| Deas::NullTemplateEngine.new(@default_engine_opts) }
|
22
|
-
@
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
@ext_lists = Hash.new do |hash, template_name|
|
23
|
+
# An ext list is an array of non-template-name extensions that have engines
|
24
|
+
# configured. The first ext in the list is the most precedent. Its engine
|
25
|
+
# is used to do the initial render from the named template file. Any
|
26
|
+
# further exts are used to compile rendered content from upsteam engines.
|
27
|
+
hash[template_name] = parse_ext_list(template_name)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -41,34 +41,39 @@ module Deas
|
|
41
41
|
@engines.keys.include?(ext)
|
42
42
|
end
|
43
43
|
|
44
|
-
def engine_for_template?(template_name)
|
45
|
-
self.engine_for?(get_template_ext(template_name))
|
46
|
-
end
|
47
|
-
|
48
44
|
def render(template_name, view_handler, locals, &content)
|
49
45
|
[ view_handler.layouts,
|
50
46
|
template_name
|
51
47
|
].flatten.reverse.inject(content) do |render_proc, name|
|
52
|
-
proc
|
48
|
+
proc do
|
49
|
+
compile(name) do |engine|
|
50
|
+
engine.render(name, view_handler, locals, &render_proc)
|
51
|
+
end
|
52
|
+
end
|
53
53
|
end.call
|
54
54
|
end
|
55
55
|
|
56
56
|
def partial(template_name, locals, &content)
|
57
|
-
|
57
|
+
compile(template_name) do |engine|
|
58
|
+
engine.partial(template_name, locals, &content)
|
59
|
+
end
|
58
60
|
end
|
59
61
|
|
60
62
|
private
|
61
63
|
|
62
|
-
def
|
63
|
-
@
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
@ext_cache[template_name]
|
64
|
+
def compile(name)
|
65
|
+
ext_list = @ext_lists[name].dup
|
66
|
+
ext_list.inject(yield @engines[ext_list.shift]) do |content, ext|
|
67
|
+
@engines[ext].compile(name, content)
|
68
|
+
end
|
68
69
|
end
|
69
70
|
|
70
|
-
def
|
71
|
-
File.
|
71
|
+
def parse_ext_list(template_name)
|
72
|
+
no_ext_path = "#{File.join(@path, template_name.to_s)}."
|
73
|
+
path = Dir.glob("#{no_ext_path}*").first || ''
|
74
|
+
path.sub(no_ext_path, '').split('.').reverse.reject do |ext|
|
75
|
+
!self.engine_for?(ext)
|
76
|
+
end
|
72
77
|
end
|
73
78
|
|
74
79
|
end
|
data/lib/deas/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
This is a json template for use in template source/engine tests.
|
@@ -0,0 +1 @@
|
|
1
|
+
This is a json template for use in template source/engine tests.
|
File without changes
|
@@ -86,25 +86,21 @@ class Deas::TemplateEngine
|
|
86
86
|
end
|
87
87
|
|
88
88
|
should "read and return the given path in its source path on `render`" do
|
89
|
-
|
90
|
-
exp = File.read(subject.source_path.join(
|
91
|
-
assert_equal exp, subject.render(
|
89
|
+
template = 'test/support/template'
|
90
|
+
exp = File.read(Dir.glob(subject.source_path.join("#{template}*")).first)
|
91
|
+
assert_equal exp, subject.render(template, @v, @l)
|
92
92
|
end
|
93
93
|
|
94
94
|
should "call `render` to implement its `partial` method" do
|
95
|
-
|
96
|
-
exp = subject.render(
|
97
|
-
assert_equal exp, subject.partial(
|
95
|
+
template = 'test/support/template'
|
96
|
+
exp = subject.render(template, nil, @l)
|
97
|
+
assert_equal exp, subject.partial(template, @l)
|
98
98
|
end
|
99
99
|
|
100
100
|
should "complain if given a path that does not exist in its source path" do
|
101
|
-
|
102
|
-
assert_raises
|
103
|
-
|
104
|
-
end
|
105
|
-
assert_raises ArgumentError do
|
106
|
-
subject.partial(no_exists_file, @l)
|
107
|
-
end
|
101
|
+
template = '/does/not/exists'
|
102
|
+
assert_raises(ArgumentError){ subject.render(template, @v, @l) }
|
103
|
+
assert_raises(ArgumentError){ subject.partial(template, @l) }
|
108
104
|
end
|
109
105
|
|
110
106
|
should "return any given content with its `compile` method" do
|
@@ -26,7 +26,7 @@ class Deas::TemplateSource
|
|
26
26
|
subject{ @source }
|
27
27
|
|
28
28
|
should have_readers :path, :engines
|
29
|
-
should have_imeths :engine, :engine_for
|
29
|
+
should have_imeths :engine, :engine_for?
|
30
30
|
should have_imeths :render, :partial
|
31
31
|
|
32
32
|
should "know its path" do
|
@@ -90,17 +90,6 @@ class Deas::TemplateSource
|
|
90
90
|
assert_kind_of Deas::NullTemplateEngine, subject.engines['rb']
|
91
91
|
end
|
92
92
|
|
93
|
-
should "know if it has an engine registered for a given template name" do
|
94
|
-
assert_false subject.engine_for?(Factory.string)
|
95
|
-
assert_false subject.engine_for?('test')
|
96
|
-
assert_false subject.engine_for_template?(Factory.string)
|
97
|
-
assert_false subject.engine_for_template?('test_template')
|
98
|
-
|
99
|
-
subject.engine 'test', @test_engine
|
100
|
-
assert_true subject.engine_for?('test')
|
101
|
-
assert_true subject.engine_for_template?('test_template')
|
102
|
-
end
|
103
|
-
|
104
93
|
end
|
105
94
|
|
106
95
|
class RenderOrPartialTests < InitTests
|
@@ -123,13 +112,21 @@ class Deas::TemplateSource
|
|
123
112
|
assert_equal exp, subject.render('test_template', @v, @l)
|
124
113
|
end
|
125
114
|
|
126
|
-
should "only
|
115
|
+
should "only render the first template file matching the template name" do
|
127
116
|
# there should be 2 files called "template" in `test/support` with diff
|
128
117
|
# extensions
|
129
|
-
exp =
|
118
|
+
exp = "render-json-engine on template\n"
|
130
119
|
assert_equal exp, subject.render('template', @v, @l)
|
131
120
|
end
|
132
121
|
|
122
|
+
should "compile multiple engine outputs if template has multi-engine exts" do
|
123
|
+
exp = "render-json-engine on template-compiled1\ncompile-test-engine"
|
124
|
+
assert_equal exp, subject.render('template-compiled1', @v, @l)
|
125
|
+
|
126
|
+
exp = "render-test-engine on template-compiled2\ncompile-json-engine"
|
127
|
+
assert_equal exp, subject.render('template-compiled2', @v, @l)
|
128
|
+
end
|
129
|
+
|
133
130
|
should "use the null template engine when an engine can't be found" do
|
134
131
|
assert_raises(ArgumentError) do
|
135
132
|
subject.render(Factory.string, @v, @l)
|
@@ -157,17 +154,25 @@ class Deas::TemplateSource
|
|
157
154
|
desc "when partial rendering a template"
|
158
155
|
|
159
156
|
should "call `partial` on the configured engine" do
|
160
|
-
exp = "partial-test-engine\n"
|
157
|
+
exp = "partial-test-engine on test_template\n"
|
161
158
|
assert_equal exp, subject.partial('test_template', @l)
|
162
159
|
end
|
163
160
|
|
164
|
-
should "only
|
161
|
+
should "only render the first template file matching the template name" do
|
165
162
|
# there should be 2 files called "template" in `test/support` with diff
|
166
163
|
# extensions
|
167
|
-
exp =
|
164
|
+
exp = "partial-json-engine on template\n"
|
168
165
|
assert_equal exp, subject.partial('template', @l)
|
169
166
|
end
|
170
167
|
|
168
|
+
should "compile multiple engine outputs if template has multi-engine exts" do
|
169
|
+
exp = "partial-json-engine on template-compiled1\ncompile-test-engine"
|
170
|
+
assert_equal exp, subject.partial('template-compiled1', @l)
|
171
|
+
|
172
|
+
exp = "partial-test-engine on template-compiled2\ncompile-json-engine"
|
173
|
+
assert_equal exp, subject.partial('template-compiled2', @l)
|
174
|
+
end
|
175
|
+
|
171
176
|
should "use the null template engine when an engine can't be found" do
|
172
177
|
assert_raises(ArgumentError) do
|
173
178
|
subject.partial(Factory.string, @l)
|
@@ -195,26 +200,25 @@ class Deas::TemplateSource
|
|
195
200
|
|
196
201
|
class TestEngine < Deas::TemplateEngine
|
197
202
|
def render(template_name, view_handler, locals, &content)
|
198
|
-
"render-test-engine on #{template_name}\n" +
|
199
|
-
(content || proc{}).call.to_s
|
203
|
+
"render-test-engine on #{template_name}\n" + (content || proc{}).call.to_s
|
200
204
|
end
|
201
205
|
def partial(template_name, locals, &content)
|
202
|
-
"partial-test-engine\n" + (content || proc{}).call.to_s
|
206
|
+
"partial-test-engine on #{template_name}\n" + (content || proc{}).call.to_s
|
203
207
|
end
|
204
|
-
def
|
205
|
-
|
208
|
+
def compile(template_name, content)
|
209
|
+
"#{content}compile-test-engine"
|
206
210
|
end
|
207
211
|
end
|
208
212
|
|
209
213
|
class JsonEngine < Deas::TemplateEngine
|
210
214
|
def render(template_name, view_handler, locals, &content)
|
211
|
-
|
215
|
+
"render-json-engine on #{template_name}\n" + (content || proc{}).call.to_s
|
212
216
|
end
|
213
|
-
def partial(template_name, locals)
|
214
|
-
|
217
|
+
def partial(template_name, locals, &content)
|
218
|
+
"partial-json-engine on #{template_name}\n" + (content || proc{}).call.to_s
|
215
219
|
end
|
216
|
-
def
|
217
|
-
|
220
|
+
def compile(template_name, content)
|
221
|
+
"#{content}compile-json-engine"
|
218
222
|
end
|
219
223
|
end
|
220
224
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.39.
|
4
|
+
version: 0.39.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kelly Redding
|
@@ -10,71 +10,68 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-04-05 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: assert
|
17
17
|
prerelease: false
|
18
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
23
|
-
type: :
|
22
|
+
version: 2.15.1
|
23
|
+
type: :development
|
24
24
|
version_requirements: *id001
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: assert-rack-test
|
27
27
|
prerelease: false
|
28
28
|
requirement: &id002 !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
|
-
- &id003 !ruby/object:Gem::Version
|
32
|
-
version: "1.1"
|
33
|
-
- - ">="
|
34
31
|
- !ruby/object:Gem::Version
|
35
|
-
version: 1.
|
36
|
-
type: :
|
32
|
+
version: 1.0.3
|
33
|
+
type: :development
|
37
34
|
version_requirements: *id002
|
38
35
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
36
|
+
name: much-plugin
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.1.0
|
43
|
+
type: :runtime
|
44
|
+
version_requirements: *id003
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: ns-options
|
40
47
|
prerelease: false
|
41
48
|
requirement: &id004 !ruby/object:Gem::Requirement
|
42
49
|
requirements:
|
43
50
|
- - ~>
|
44
|
-
-
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 1.1.6
|
45
53
|
type: :runtime
|
46
54
|
version_requirements: *id004
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
56
|
+
name: rack
|
49
57
|
prerelease: false
|
50
58
|
requirement: &id005 !ruby/object:Gem::Requirement
|
51
59
|
requirements:
|
52
60
|
- - ~>
|
53
61
|
- !ruby/object:Gem::Version
|
54
|
-
version: "1.
|
62
|
+
version: "1.1"
|
55
63
|
type: :runtime
|
56
64
|
version_requirements: *id005
|
57
65
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
66
|
+
name: sinatra
|
59
67
|
prerelease: false
|
60
68
|
requirement: &id006 !ruby/object:Gem::Requirement
|
61
69
|
requirements:
|
62
70
|
- - ~>
|
63
71
|
- !ruby/object:Gem::Version
|
64
|
-
version: "2
|
65
|
-
type: :
|
72
|
+
version: "1.2"
|
73
|
+
type: :runtime
|
66
74
|
version_requirements: *id006
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: assert-rack-test
|
69
|
-
prerelease: false
|
70
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- &id008
|
73
|
-
- ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: "0"
|
76
|
-
type: :development
|
77
|
-
version_requirements: *id007
|
78
75
|
description: Handler-based web framework powered by Sinatra
|
79
76
|
email:
|
80
77
|
- kelly@kellyredding.com
|
@@ -90,7 +87,6 @@ files:
|
|
90
87
|
- Gemfile
|
91
88
|
- LICENSE
|
92
89
|
- README.md
|
93
|
-
- Rakefile
|
94
90
|
- deas.gemspec
|
95
91
|
- lib/deas.rb
|
96
92
|
- lib/deas/deas_runner.rb
|
@@ -128,8 +124,10 @@ files:
|
|
128
124
|
- test/support/routes.rb
|
129
125
|
- test/support/show.html
|
130
126
|
- test/support/show.json
|
131
|
-
- test/support/template.
|
127
|
+
- test/support/template-compiled1.test.json
|
128
|
+
- test/support/template-compiled2.json.test
|
132
129
|
- test/support/template.json
|
130
|
+
- test/support/template.z.erb
|
133
131
|
- test/support/test_layout1.test
|
134
132
|
- test/support/test_layout2.test
|
135
133
|
- test/support/test_template.test
|
@@ -167,10 +165,13 @@ require_paths:
|
|
167
165
|
- lib
|
168
166
|
required_ruby_version: !ruby/object:Gem::Requirement
|
169
167
|
requirements:
|
170
|
-
-
|
168
|
+
- &id007
|
169
|
+
- ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: "0"
|
171
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
173
|
requirements:
|
173
|
-
- *
|
174
|
+
- *id007
|
174
175
|
requirements: []
|
175
176
|
|
176
177
|
rubyforge_project:
|
@@ -190,8 +191,10 @@ test_files:
|
|
190
191
|
- test/support/routes.rb
|
191
192
|
- test/support/show.html
|
192
193
|
- test/support/show.json
|
193
|
-
- test/support/template.
|
194
|
+
- test/support/template-compiled1.test.json
|
195
|
+
- test/support/template-compiled2.json.test
|
194
196
|
- test/support/template.json
|
197
|
+
- test/support/template.z.erb
|
195
198
|
- test/support/test_layout1.test
|
196
199
|
- test/support/test_layout2.test
|
197
200
|
- test/support/test_template.test
|
data/Rakefile
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|