flutterby 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 64a9b696e8df3a189602d85625d18e8443c9fc34
4
- data.tar.gz: bdd0f27e2369cfa721796730a0731c8907729924
3
+ metadata.gz: 871ef039693c35c6a70dbc86544957d084f247a7
4
+ data.tar.gz: e7d491e74f143bf9a407113a1a24f74a34c7011f
5
5
  SHA512:
6
- metadata.gz: 8a59e096e19e78c88150a77e69bd3a79e06c1ffaa0a51d99efab9fe623d3e7d0e928814377a25ede59105ab095e29a77b1e0baeb67cb37f9da13cdca14db2506
7
- data.tar.gz: a0667f74b94ab8a4e71c6d1c197706111a02118277f333e21d49d1203a6486abe6fe688a617062a9ad968899b4af457c2472039a3aee5d45b8841ac99372bbb1
6
+ metadata.gz: bf3054184d1c4601fa3c936356269289ce99cd3f0fc03dac4c4c6400f719505dfb6c48e0e832ef5899455e54a40bb232c0a7cc91defa53d7b5987654d84173cb
7
+ data.tar.gz: 4743c753fd558f18beae2982b166ef349c5072a207ab4ae5ff01711783b197fd1f8a91f8a7517fb34e617bf40ea383df961d3555006e710a7b91842e9cc4b950
@@ -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'
@@ -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
@@ -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 filter_contents
41
- result = @contents
42
-
43
- # Apply all filters
44
- filters.each do |filter|
45
- meth = "process_#{filter}"
46
- if respond_to?(meth)
47
- result = send(meth, result)
48
- else
49
- puts "Woops, no #{meth} available :("
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
- result
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 = filter_contents
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
@@ -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
@@ -29,7 +29,41 @@ module Flutterby
29
29
 
30
30
  # Go!
31
31
  listener.start
32
- server.run @root
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
@@ -1,3 +1,3 @@
1
1
  module Flutterby
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
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
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-05 00:00:00.000000000 Z
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