wouter-views 0.0.1
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 +7 -0
- data/Gemfile +5 -0
- data/README.md +84 -0
- data/Rakefile +13 -0
- data/lib/wouter/views.rb +62 -0
- data/wouter-views.gemspec +25 -0
- metadata +192 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 94b3cf7bfeda14996d0ce25902ae19b84d1725024ce8a2102301506f604f16e7
|
4
|
+
data.tar.gz: f66c1a22ef7a29404d2fd1638a450afc2a3e0c91062c5de7f5135eea3fafc753
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c21209a777a3e10c13eb89aea1eda11509c399fd31b964f752962366afd14f6ad65151a91ad0e31aff0339db7d439aa79b2010d87415de8cc79032b30dfe365d
|
7
|
+
data.tar.gz: f57188ad1839a905358fcd791c54c3a84157425f6850c07865efa5ecc747ed0924d3a144ab58df5fbbfabb2d072c97e5649b1eedd164d0f47bc3687d5ae92045
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
# Wouter Views
|
2
|
+
|
3
|
+
Adds view template support to the Wouter web framework.
|
4
|
+
|
5
|
+
`wouter-views` uses [Tilt](https://github.com/rtomayko/tilt) to load Ruby template engines.
|
6
|
+
|
7
|
+
## Usage
|
8
|
+
|
9
|
+
Require the gem after your `wouter` require.
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
require 'wouter'
|
13
|
+
require 'wouter/views'
|
14
|
+
```
|
15
|
+
|
16
|
+
Render a view directly in your route definition:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
class Routes < Wouter
|
20
|
+
get '/', render_view(:index)
|
21
|
+
end
|
22
|
+
```
|
23
|
+
|
24
|
+
Render a view in your endpoint:
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
class Index < Wouter::Endpoint
|
28
|
+
def respond
|
29
|
+
render_view :index
|
30
|
+
end
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
34
|
+
## Configuration
|
35
|
+
|
36
|
+
### View Directory
|
37
|
+
|
38
|
+
By default, the view folder is set to `./views`. You can set the view directory using `view_dir`:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
class Routes < Wouter
|
42
|
+
view_dir './template/views'
|
43
|
+
|
44
|
+
get '/', render_view(:index)
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
### Template Engine
|
49
|
+
|
50
|
+
By default, `wouter-views` will look for `.html` files. You can specify which templating engine to use and it will try to find the file:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
get '/', render_view(:index, engine: :slim)
|
54
|
+
```
|
55
|
+
|
56
|
+
You can also change the engine globally:
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
class Routes < Wouter
|
60
|
+
view_engine :slim
|
61
|
+
|
62
|
+
get '/', render_view(:index)
|
63
|
+
end
|
64
|
+
```
|
65
|
+
|
66
|
+
If you provide a string with a file extension, `wouter-views` will first try to find the file with the given engine extension. If it does not find it, it will try to find the file given the literal string value. This allows you to load any file:
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
class Routes < Wouter
|
70
|
+
get '/', render_view('randomfile.extension')
|
71
|
+
end
|
72
|
+
```
|
73
|
+
|
74
|
+
[Tilt](https://github.com/rtomayko/tilt) will try to auto-load the appropriate templating engine. It is recommended you load the template engine library yourself. Example:
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
require 'wouter'
|
78
|
+
require 'wouter/views'
|
79
|
+
require 'slim'
|
80
|
+
|
81
|
+
class Routes < Wouter
|
82
|
+
get '/', render_view(:index, engine: :slim)
|
83
|
+
end
|
84
|
+
```
|
data/Rakefile
ADDED
data/lib/wouter/views.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'wouter'
|
2
|
+
require 'rack'
|
3
|
+
require 'tilt'
|
4
|
+
|
5
|
+
class Wouter
|
6
|
+
class Views
|
7
|
+
class FileNotFound < StandardError; end
|
8
|
+
|
9
|
+
def self.file_finder(dir, template, engine, bind)
|
10
|
+
file_name = template.to_s + '.' + engine.to_s
|
11
|
+
full_path = dir + '/' + file_name
|
12
|
+
|
13
|
+
return Tilt.new(full_path).render(bind) if File.exists?(full_path)
|
14
|
+
|
15
|
+
full_path = dir + '/' + template
|
16
|
+
|
17
|
+
if Tilt.template_for('./test/fixtures/views/fallback.txt')
|
18
|
+
Tilt.new(full_path).render(bind)
|
19
|
+
else
|
20
|
+
if File.exists?(full_path)
|
21
|
+
File.read(full_path)
|
22
|
+
else
|
23
|
+
raise FileNotFound, "could not find file: #{full_path}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Wouter
|
31
|
+
class <<self
|
32
|
+
def render_template(template, bind = self, engine = nil)
|
33
|
+
dir = @view_dir || File.expand_path('./views')
|
34
|
+
engine = engine || @view_engine || :html
|
35
|
+
Wouter::Views.file_finder(dir, template, engine, bind)
|
36
|
+
end
|
37
|
+
|
38
|
+
def render_view(template, engine: nil)
|
39
|
+
lambda { |env|
|
40
|
+
response = Rack::Response.new
|
41
|
+
response.write render_template(template, self, engine)
|
42
|
+
response.finish
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
def view_dir(dir = nil)
|
47
|
+
@view_dir = dir unless dir.nil?
|
48
|
+
@view_dir
|
49
|
+
end
|
50
|
+
|
51
|
+
def view_engine(engine = nil)
|
52
|
+
@view_engine = engine unless engine.nil?
|
53
|
+
@view_engine
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
class Endpoint
|
58
|
+
def render_view(template, engine: nil)
|
59
|
+
Wouter.render_template(template, self, engine)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'wouter-views'
|
5
|
+
s.platform = Gem::Platform::RUBY
|
6
|
+
s.version = '0.0.1'
|
7
|
+
s.summary = 'View template support for Wouter web framework.'
|
8
|
+
s.description = 'Adds view template support to the Wouter web framework.'
|
9
|
+
s.authors = ['Robert Peterson']
|
10
|
+
s.email = 'robertpeterson@gmail.com'
|
11
|
+
s.files = Dir['lib/**/*'] + ['README.md', 'Gemfile', 'Rakefile', 'wouter-views.gemspec']
|
12
|
+
s.test_files = s.files.select { |p| p =~ /^test\/.*_test.rb/ }
|
13
|
+
s.license = 'MIT'
|
14
|
+
s.homepage = 'https://github.com/rawburt/wouter-views'
|
15
|
+
|
16
|
+
s.add_dependency 'wouter', '~> 0.0.8'
|
17
|
+
s.add_dependency 'rack', '~> 2.0', '>= 2.0.6'
|
18
|
+
s.add_dependency 'tilt', '~> 2.0', '>= 2.0.8'
|
19
|
+
s.add_development_dependency 'm', '~> 1.5'
|
20
|
+
s.add_development_dependency 'minitest', '~> 5.11'
|
21
|
+
s.add_development_dependency 'minitest-rg', '~> 5.2'
|
22
|
+
s.add_development_dependency 'rack-test', '~> 1.1'
|
23
|
+
s.add_development_dependency 'rake', '~> 12.3'
|
24
|
+
s.add_development_dependency 'slim', '~> 4.0', '>= 4.0.1'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wouter-views
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert Peterson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: wouter
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.0.8
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.8
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rack
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 2.0.6
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.0'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.0.6
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: tilt
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.0'
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 2.0.8
|
57
|
+
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '2.0'
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 2.0.8
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: m
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '1.5'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '1.5'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: minitest
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '5.11'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '5.11'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: minitest-rg
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - "~>"
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '5.2'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - "~>"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '5.2'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rack-test
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '1.1'
|
116
|
+
type: :development
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '1.1'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: rake
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '12.3'
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - "~>"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '12.3'
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: slim
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - "~>"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '4.0'
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 4.0.1
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '4.0'
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 4.0.1
|
157
|
+
description: Adds view template support to the Wouter web framework.
|
158
|
+
email: robertpeterson@gmail.com
|
159
|
+
executables: []
|
160
|
+
extensions: []
|
161
|
+
extra_rdoc_files: []
|
162
|
+
files:
|
163
|
+
- Gemfile
|
164
|
+
- README.md
|
165
|
+
- Rakefile
|
166
|
+
- lib/wouter/views.rb
|
167
|
+
- wouter-views.gemspec
|
168
|
+
homepage: https://github.com/rawburt/wouter-views
|
169
|
+
licenses:
|
170
|
+
- MIT
|
171
|
+
metadata: {}
|
172
|
+
post_install_message:
|
173
|
+
rdoc_options: []
|
174
|
+
require_paths:
|
175
|
+
- lib
|
176
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
requirements: []
|
187
|
+
rubyforge_project:
|
188
|
+
rubygems_version: 2.7.3
|
189
|
+
signing_key:
|
190
|
+
specification_version: 4
|
191
|
+
summary: View template support for Wouter web framework.
|
192
|
+
test_files: []
|