flutterby 0.0.6 → 0.0.7

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: 46ebc1c85a56b410c6147dd87503c8fd59cd0d74
4
- data.tar.gz: 5d65a75d308e436afed08be445828ab94c02396e
3
+ metadata.gz: 257ac8a84ea41487bbf327f0e7a925f2ec8f3f5c
4
+ data.tar.gz: 93dfaeda969555a8197f38d794502f3cd7116926
5
5
  SHA512:
6
- metadata.gz: e4a6a0aee56906711254d63a905a6c95e5cd098cbc76bb8936e522f6eaea97af49f2c8e3bc8f749857090ff40556c77e033cc5aabb86c832ef97f3aec1ce6c1f
7
- data.tar.gz: f1918f98a08abb87bfd9e0298abb739dc76f74a3ee01bef2f926f696a8378c2b4b89f589c74b213141877e09a902c2b7f89197935956f4e8ed48208ada0641a0
6
+ metadata.gz: 5053ceb42b1769afe1e3a4755141bcb7944dc56f44d4ca587623e77c91b759362d9c499c23ecad0b621d8d5facc1c80e9c33e29df8005ac74594ca7971004fac
7
+ data.tar.gz: d9abe432d2f653ded73dec6b2140e7ca8a718632c81b25b16ba34300d6e66fe902d2a5ec9aa1c22912f55860bfbbe49df3be8c42e99e9042df0fda87b0c54796
@@ -66,7 +66,19 @@ module Flutterby
66
66
  end
67
67
 
68
68
  def view
69
- @view ||= View.new(self)
69
+ @view ||= begin
70
+ View.new(self).tap do |view|
71
+ # load additional view code
72
+ if view_entity = sibling("_view.rb")
73
+ case view_entity.ext
74
+ when "rb" then
75
+ view.instance_eval(view_entity.contents)
76
+ else
77
+ raise "Unknown view extension #{view_entity.full_name}"
78
+ end
79
+ end
80
+ end
81
+ end
70
82
  end
71
83
 
72
84
  def process_erb(input)
@@ -40,29 +40,39 @@ module Flutterby
40
40
 
41
41
  current = @root
42
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"
43
+ result = catch :halt do
44
+ loop do
45
+ # halt if we're not supposed to serve current entity
46
+ throw :halt, :error_404 unless current.should_publish?
47
+
48
+ case current
49
+ when Flutterby::Folder then
50
+ # If no further parts are requested, let's look for an index
51
+ # document and serve that instead.
52
+ if child = current.find(parts.empty? ? "index" : parts.shift)
53
+ current = child
54
+ else
55
+ throw :halt, :error_404
56
+ end
57
+ when Flutterby::File then
58
+ # Determine MIME type
59
+ mime_type = MIME::Types.type_for(current.ext) || "text/plain"
58
60
 
59
- # Build response
60
- res.headers["Content-Type"] = mime_type
61
- res.body = [current.render]
62
- break
61
+ # Build response
62
+ res.headers["Content-Type"] = mime_type
63
+ res.body = [current.render]
64
+ throw :halt
65
+ end
63
66
  end
64
67
  end
65
68
 
69
+ case result
70
+ when :error_404 then
71
+ res.status = 404
72
+ res.headers["Content-Type"] = "text/html"
73
+ res.body = ["404"]
74
+ end
75
+
66
76
  res
67
77
  end
68
78
  end
@@ -1,3 +1,3 @@
1
1
  module Flutterby
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flutterby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hendrik Mans