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 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