flutterby 0.0.6 → 0.0.7

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