rack-app-front_end 0.1.0 → 0.2.0
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/README.md +17 -7
- data/VERSION +1 -1
- data/lib/rack/app/front_end/folder_mounter.rb +4 -5
- data/lib/rack/app/front_end/layout.rb +21 -0
- data/lib/rack/app/front_end/utils.rb +15 -0
- data/lib/rack/app/front_end.rb +13 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 701a95d72e72d60f77ca4fe30f49baa90160a845
|
4
|
+
data.tar.gz: 3d833a3e63180ccbd613f72af2c47fb6e6090946
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b9bcaead7908d00bb8e7b03a24dfa29b51d31e19faf8aff0edefbcdc54c770148d95fe8b33b8232e438733dd117036da90d28a1e682437ae323d3821ecf674d
|
7
|
+
data.tar.gz: 8f652b17dac308c8eb44f54d2f8f92a474ad4dea341998f5e3a9cf941ae3147c3749c0c52b2cdfc728f3fac02e29154c4ab58897685738dd391c431c750dc1a1
|
data/README.md
CHANGED
@@ -1,15 +1,13 @@
|
|
1
|
-
# Rack::App::
|
1
|
+
# Rack::App::FrontEnd
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
This is an extend module for Rack::App to have FrontEnd framework extensions for the core app class
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
9
7
|
Add this line to your application's Gemfile:
|
10
8
|
|
11
9
|
```ruby
|
12
|
-
gem 'rack-app-
|
10
|
+
gem 'rack-app-front_end'
|
13
11
|
```
|
14
12
|
|
15
13
|
And then execute:
|
@@ -18,11 +16,23 @@ And then execute:
|
|
18
16
|
|
19
17
|
Or install it yourself as:
|
20
18
|
|
21
|
-
$ gem install rack-app-
|
19
|
+
$ gem install rack-app-front_end
|
22
20
|
|
23
21
|
## Usage
|
24
22
|
|
25
|
-
|
23
|
+
```ruby
|
24
|
+
|
25
|
+
class App < Rack::App
|
26
|
+
|
27
|
+
extend Rack::App::FrontEnd
|
28
|
+
|
29
|
+
mount_folder '/public'
|
30
|
+
mount_folder 'relative/folder/from/this'
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
```
|
35
|
+
|
26
36
|
|
27
37
|
## Development
|
28
38
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -5,11 +5,10 @@ class Rack::App::FrontEnd::FolderMounter
|
|
5
5
|
@app_class = app_class
|
6
6
|
end
|
7
7
|
|
8
|
-
def mount(
|
9
|
-
|
10
|
-
template_paths_for(source_folder_path).each do |template_path|
|
8
|
+
def mount(absolute_folder_path)
|
9
|
+
template_paths_for(absolute_folder_path).each do |template_path|
|
11
10
|
|
12
|
-
request_path = request_path_by(
|
11
|
+
request_path = request_path_by(absolute_folder_path, template_path)
|
13
12
|
template = Rack::App::FrontEnd::Template.new(template_path, fallback_handler: Rack::App::File::Streamer)
|
14
13
|
create_endpoint_for(request_path, template)
|
15
14
|
|
@@ -39,7 +38,7 @@ class Rack::App::FrontEnd::FolderMounter
|
|
39
38
|
if result.respond_to?(:each)
|
40
39
|
response.body = result
|
41
40
|
else
|
42
|
-
response.write(result)
|
41
|
+
response.write(self.class.layout.render(result))
|
43
42
|
end
|
44
43
|
response.finish
|
45
44
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Rack::App::FrontEnd::Layout < Rack::App::FrontEnd::Template
|
2
|
+
|
3
|
+
def render(content)
|
4
|
+
return render_result(content)
|
5
|
+
end
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
def render_result(content)
|
10
|
+
if it_is_a_template? and layout_file_is_exists?
|
11
|
+
render_with_tilt_templates([], -> { content })
|
12
|
+
else
|
13
|
+
return content
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def layout_file_is_exists?
|
18
|
+
File.exists?(@file_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'pwd'
|
2
|
+
module Rack::App::FrontEnd::Utils
|
3
|
+
|
4
|
+
extend self
|
5
|
+
|
6
|
+
def get_full_path(file_path,caller_index=1)
|
7
|
+
return nil if file_path.nil?
|
8
|
+
if file_path.to_s[0] == File::Separator
|
9
|
+
PWD.join(file_path)
|
10
|
+
else
|
11
|
+
File.join(File.dirname(caller[caller_index].split(':')[0]),file_path)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
data/lib/rack/app/front_end.rb
CHANGED
@@ -2,14 +2,25 @@ require 'rack/app'
|
|
2
2
|
module Rack::App::FrontEnd
|
3
3
|
|
4
4
|
require 'rack/app/front_end/version'
|
5
|
+
require 'rack/app/front_end/utils'
|
5
6
|
require 'rack/app/front_end/template'
|
7
|
+
require 'rack/app/front_end/layout'
|
6
8
|
require 'rack/app/front_end/view'
|
7
9
|
require 'rack/app/front_end/folder_mounter'
|
8
10
|
|
9
|
-
def mount_folder(
|
10
|
-
Rack::App::FrontEnd::FolderMounter.new(self).mount(
|
11
|
+
def mount_folder(folder_path)
|
12
|
+
Rack::App::FrontEnd::FolderMounter.new(self).mount(Rack::App::FrontEnd::Utils.get_full_path(folder_path))
|
11
13
|
end
|
12
14
|
|
13
15
|
alias mount_templates_from mount_folder
|
14
16
|
|
17
|
+
def layout(layout_path=nil)
|
18
|
+
@layout = Rack::App::FrontEnd::Layout.new(Rack::App::FrontEnd::Utils.get_full_path(layout_path)) unless layout_path.nil?
|
19
|
+
@layout || Rack::App::FrontEnd::Layout.new(nil)
|
20
|
+
end
|
21
|
+
|
22
|
+
def default_layout
|
23
|
+
# code here
|
24
|
+
end
|
25
|
+
|
15
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-app-front_end
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Luzsi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -127,8 +127,10 @@ files:
|
|
127
127
|
- bin/setup
|
128
128
|
- lib/rack/app/front_end.rb
|
129
129
|
- lib/rack/app/front_end/folder_mounter.rb
|
130
|
+
- lib/rack/app/front_end/layout.rb
|
130
131
|
- lib/rack/app/front_end/template.rb
|
131
132
|
- lib/rack/app/front_end/template/plain_text.rb
|
133
|
+
- lib/rack/app/front_end/utils.rb
|
132
134
|
- lib/rack/app/front_end/version.rb
|
133
135
|
- lib/rack/app/front_end/view.rb
|
134
136
|
- rack-app-front_end.gemspec
|