deas 0.39.1 → 0.39.2
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.
- 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"
|