flutterby 0.0.4 → 0.0.5
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/flutterby.gemspec +2 -2
- data/lib/flutterby/entity.rb +0 -18
- data/lib/flutterby/file.rb +20 -22
- data/lib/flutterby/folder.rb +0 -13
- data/lib/flutterby/server.rb +35 -1
- data/lib/flutterby/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 871ef039693c35c6a70dbc86544957d084f247a7
|
4
|
+
data.tar.gz: e7d491e74f143bf9a407113a1a24f74a34c7011f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf3054184d1c4601fa3c936356269289ce99cd3f0fc03dac4c4c6400f719505dfb6c48e0e832ef5899455e54a40bb232c0a7cc91defa53d7b5987654d84173cb
|
7
|
+
data.tar.gz: 4743c753fd558f18beae2982b166ef349c5072a207ab4ae5ff01711783b197fd1f8a91f8a7517fb34e617bf40ea383df961d3555006e710a7b91842e9cc4b950
|
data/flutterby.gemspec
CHANGED
@@ -24,8 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.13"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
-
spec.add_development_dependency 'awesome_print'
|
28
|
-
spec.add_development_dependency 'gem-release'
|
27
|
+
spec.add_development_dependency 'awesome_print', '~> 0'
|
28
|
+
spec.add_development_dependency 'gem-release', '~> 0'
|
29
29
|
|
30
30
|
spec.add_dependency 'commander', '~> 4.4'
|
31
31
|
spec.add_dependency 'slodown', '~> 0.3'
|
data/lib/flutterby/entity.rb
CHANGED
@@ -50,24 +50,6 @@ module Flutterby
|
|
50
50
|
parent ? parent.root : self
|
51
51
|
end
|
52
52
|
|
53
|
-
|
54
|
-
#
|
55
|
-
# Serving
|
56
|
-
#
|
57
|
-
|
58
|
-
def call(env)
|
59
|
-
env['rack.request'] ||= Rack::Request.new(env)
|
60
|
-
env['rack.response'] ||= Rack::Response.new([], 200, {})
|
61
|
-
parts = env['rack.request'].path.split("/").reject(&:empty?)
|
62
|
-
|
63
|
-
serve(parts, env['rack.request'], env['rack.response'])
|
64
|
-
|
65
|
-
env['rack.response']
|
66
|
-
end
|
67
|
-
|
68
|
-
def serve(parts, req, res)
|
69
|
-
end
|
70
|
-
|
71
53
|
def sibling(name)
|
72
54
|
parent && parent.find(name)
|
73
55
|
end
|
data/lib/flutterby/file.rb
CHANGED
@@ -9,6 +9,11 @@ module Flutterby
|
|
9
9
|
class File < Entity
|
10
10
|
attr_reader :contents
|
11
11
|
|
12
|
+
def reload!
|
13
|
+
@filtered_contents = nil
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
12
17
|
def read
|
13
18
|
@contents = ::File.read(fs_path)
|
14
19
|
|
@@ -37,20 +42,22 @@ module Flutterby
|
|
37
42
|
data
|
38
43
|
end
|
39
44
|
|
40
|
-
def
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
def filtered_contents
|
46
|
+
@filtered_contents ||= begin
|
47
|
+
result = @contents
|
48
|
+
|
49
|
+
# Apply all filters
|
50
|
+
filters.each do |filter|
|
51
|
+
meth = "process_#{filter}"
|
52
|
+
if respond_to?(meth)
|
53
|
+
result = send(meth, result)
|
54
|
+
else
|
55
|
+
puts "Woops, no #{meth} available :("
|
56
|
+
end
|
50
57
|
end
|
51
|
-
end
|
52
58
|
|
53
|
-
|
59
|
+
result
|
60
|
+
end
|
54
61
|
end
|
55
62
|
|
56
63
|
def page?
|
@@ -106,21 +113,12 @@ module Flutterby
|
|
106
113
|
end
|
107
114
|
|
108
115
|
def render(layout: true)
|
109
|
-
rendered =
|
116
|
+
rendered = filtered_contents
|
110
117
|
(layout && apply_layout?) ? apply_layout(rendered) : rendered
|
111
118
|
end
|
112
119
|
|
113
120
|
def write_static(path)
|
114
121
|
::File.write(path, render)
|
115
122
|
end
|
116
|
-
|
117
|
-
def serve(parts, req, res)
|
118
|
-
# Determine MIME type
|
119
|
-
mime_type = MIME::Types.type_for(ext) || "text/plain"
|
120
|
-
|
121
|
-
# Build response
|
122
|
-
res.headers["Content-Type"] = mime_type
|
123
|
-
res.body = [render]
|
124
|
-
end
|
125
123
|
end
|
126
124
|
end
|
data/lib/flutterby/folder.rb
CHANGED
@@ -34,18 +34,5 @@ module Flutterby
|
|
34
34
|
def pages
|
35
35
|
children.select { |c| c.ext == "html" }
|
36
36
|
end
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
def serve(parts, req, res)
|
41
|
-
# If no further parts are requested, let's look for an index
|
42
|
-
# document and serve that instead.
|
43
|
-
if child = find(parts.empty? ? "index" : parts.shift)
|
44
|
-
child.serve(parts, req, res)
|
45
|
-
else
|
46
|
-
res.headers["Content-Type"] = "text/html"
|
47
|
-
res.body = ["404"]
|
48
|
-
end
|
49
|
-
end
|
50
37
|
end
|
51
38
|
end
|
data/lib/flutterby/server.rb
CHANGED
@@ -29,7 +29,41 @@ module Flutterby
|
|
29
29
|
|
30
30
|
# Go!
|
31
31
|
listener.start
|
32
|
-
server.run
|
32
|
+
server.run self
|
33
|
+
end
|
34
|
+
|
35
|
+
def call(env)
|
36
|
+
req = Rack::Request.new(env)
|
37
|
+
res = Rack::Response.new([], 200, {})
|
38
|
+
|
39
|
+
parts = req.path.split("/").reject(&:empty?)
|
40
|
+
|
41
|
+
current = @root
|
42
|
+
|
43
|
+
loop do
|
44
|
+
case current
|
45
|
+
when Flutterby::Folder then
|
46
|
+
# If no further parts are requested, let's look for an index
|
47
|
+
# document and serve that instead.
|
48
|
+
if child = current.find(parts.empty? ? "index" : parts.shift)
|
49
|
+
current = child
|
50
|
+
else
|
51
|
+
res.headers["Content-Type"] = "text/html"
|
52
|
+
res.body = ["404"]
|
53
|
+
break
|
54
|
+
end
|
55
|
+
when Flutterby::File then
|
56
|
+
# Determine MIME type
|
57
|
+
mime_type = MIME::Types.type_for(current.ext) || "text/plain"
|
58
|
+
|
59
|
+
# Build response
|
60
|
+
res.headers["Content-Type"] = mime_type
|
61
|
+
res.body = [current.render]
|
62
|
+
break
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
res
|
33
67
|
end
|
34
68
|
end
|
35
69
|
end
|
data/lib/flutterby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flutterby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hendrik Mans
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,28 +56,28 @@ dependencies:
|
|
56
56
|
name: awesome_print
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: gem-release
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|