hydeweb 0.1.7 → 0.1.8
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.
- data/HISTORY.md +10 -0
- data/TODO.md +3 -0
- data/data/new_site/hyde.conf +7 -0
- data/lib/hyde/config.rb +13 -10
- data/lib/hyde/helpers.rb +23 -1
- data/lib/hyde/page.rb +11 -16
- data/lib/hyde/project.rb +2 -2
- data/lib/hyde/server.rb +2 -2
- data/lib/hyde.rb +8 -3
- data/test/fixture/build_options/hyde.conf +16 -0
- data/test/fixture/build_options/site/style.scss +1 -0
- data/test/fixture/ignores/control/about.html +1 -0
- data/test/fixture/ignores/hyde.conf +10 -0
- data/test/fixture/ignores/site/about.haml +1 -0
- data/test/fixture/ignores/site/hi.haml +1 -0
- data/test/unit/build_options_test.rb +18 -0
- data/test/unit/fixture_test.rb +8 -0
- metadata +12 -4
data/HISTORY.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
v0.1.8
|
2
|
+
------
|
3
|
+
|
4
|
+
- Fix: 404 pages in 'hyde start' no longer throws an exception log to the viewer.
|
5
|
+
- Implemented the `content_for` and `yield_content` helpers.
|
6
|
+
- Fix partial locals not working.
|
7
|
+
- Allow having the same layouts/partials path as the site.
|
8
|
+
- Implement `Hyde.project` which returns the latest project. (deprecates $project)
|
9
|
+
- Support tilt_build_options in the config.
|
10
|
+
|
1
11
|
v0.1.7
|
2
12
|
------
|
3
13
|
|
data/TODO.md
ADDED
data/data/new_site/hyde.conf
CHANGED
data/lib/hyde/config.rb
CHANGED
@@ -20,22 +20,25 @@ class Config < OpenStruct
|
|
20
20
|
|
21
21
|
# Returns tilt options for a given file.
|
22
22
|
# @example tilt_options('index.haml') # { :escape_html => ... }
|
23
|
-
def tilt_options_for(file)
|
24
|
-
|
23
|
+
def tilt_options_for(file, options)
|
24
|
+
ext = file.split('.').last.downcase
|
25
|
+
opts = tilt_options(ext)
|
26
|
+
opts = opts.merge(tilt_options(ext, :tilt_build_options)) if options[:build]
|
27
|
+
opts
|
25
28
|
end
|
26
29
|
|
27
30
|
# Returns tilt options for a given engine.
|
28
31
|
# @example tilt_options('haml') # { :escape_html => ... }
|
29
|
-
def tilt_options(what)
|
30
|
-
@
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
def tilt_options(what, key=:tilt_options)
|
33
|
+
@table[key] ||= begin
|
34
|
+
h = Hash.new { |h, k| h[k] = Hash.new }
|
35
|
+
h['haml'] = { :escape_html => true }
|
36
|
+
h['scss'] = { :load_path => ['css'] }
|
37
|
+
h['sass'] = { :load_path => ['css'] }
|
38
|
+
h
|
36
39
|
end
|
37
40
|
|
38
|
-
@
|
41
|
+
@table[key][what.to_s]
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
data/lib/hyde/helpers.rb
CHANGED
@@ -2,7 +2,7 @@ class Hyde
|
|
2
2
|
module Helpers
|
3
3
|
def partial(path, locals={})
|
4
4
|
partial = Partial[path.to_s, page] or return ''
|
5
|
-
partial.to_html :page => self
|
5
|
+
partial.to_html locals.merge(:page => self)
|
6
6
|
end
|
7
7
|
|
8
8
|
def rel(path)
|
@@ -10,5 +10,27 @@ module Helpers
|
|
10
10
|
dotdot = depth > 1 ? ('../' * (page.depth-1)) : './'
|
11
11
|
(dotdot[0...-1] + path)
|
12
12
|
end
|
13
|
+
|
14
|
+
def content_for(key, &blk)
|
15
|
+
content_blocks[key.to_sym] = blk
|
16
|
+
end
|
17
|
+
|
18
|
+
def content_blocks
|
19
|
+
$content_blocks ||= Hash.new
|
20
|
+
$content_blocks[page.path] ||= Hash.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def has_content?(key)
|
24
|
+
content_blocks.member? key.to_sym
|
25
|
+
end
|
26
|
+
|
27
|
+
def yield_content(key, *args)
|
28
|
+
content = content_blocks[key.to_sym]
|
29
|
+
if respond_to?(:block_is_haml?) && block_is_haml?(content)
|
30
|
+
capture_haml(*args, &content)
|
31
|
+
elsif content
|
32
|
+
content.call(*args)
|
33
|
+
end
|
34
|
+
end
|
13
35
|
end
|
14
36
|
end
|
data/lib/hyde/page.rb
CHANGED
@@ -3,7 +3,7 @@ class Page
|
|
3
3
|
attr_reader :project
|
4
4
|
attr_reader :file
|
5
5
|
|
6
|
-
def self.[](id, project
|
6
|
+
def self.[](id, project=Hyde.project)
|
7
7
|
site_path = root_path(project)
|
8
8
|
return nil if site_path.nil?
|
9
9
|
|
@@ -33,7 +33,7 @@ class Page
|
|
33
33
|
page
|
34
34
|
end
|
35
35
|
|
36
|
-
def initialize(file, project
|
36
|
+
def initialize(file, project=Hyde.project)
|
37
37
|
@file = File.expand_path(file) if file.is_a?(String)
|
38
38
|
@project = project
|
39
39
|
raise Error if project.nil?
|
@@ -125,19 +125,14 @@ class Page
|
|
125
125
|
prefix == File.expand_path(@file)[0...prefix.size]
|
126
126
|
end
|
127
127
|
|
128
|
-
def content(locals={}, &blk)
|
128
|
+
def content(locals={}, tilt_options={}, &blk)
|
129
129
|
return markup unless tilt?
|
130
|
-
|
131
|
-
scope = self.dup
|
132
|
-
scope.extend Helpers
|
133
|
-
scope.meta.merge! locals
|
134
|
-
|
135
|
-
tilt.render(scope, &blk)
|
130
|
+
tilt(tilt_options).render(dup.extend(Helpers), locals, &blk)
|
136
131
|
end
|
137
132
|
|
138
|
-
def to_html(locals={}, &blk)
|
139
|
-
html = content(locals, &blk)
|
140
|
-
html = layout.to_html(locals) { html } if layout?
|
133
|
+
def to_html(locals={}, tilt_options={}, &blk)
|
134
|
+
html = content(locals, tilt_options, &blk)
|
135
|
+
html = layout.to_html(locals, tilt_options) { html } if layout?
|
141
136
|
html
|
142
137
|
end
|
143
138
|
|
@@ -165,7 +160,7 @@ class Page
|
|
165
160
|
FileUtils.mkdir_p File.dirname(out)
|
166
161
|
|
167
162
|
if tilt?
|
168
|
-
File.open(out, 'w') { |f| f.write to_html }
|
163
|
+
File.open(out, 'w') { |f| f.write to_html({}, :build => true) }
|
169
164
|
else
|
170
165
|
FileUtils.cp file, out
|
171
166
|
end
|
@@ -186,13 +181,13 @@ class Page
|
|
186
181
|
end
|
187
182
|
|
188
183
|
# Returns the tilt layout.
|
189
|
-
def tilt
|
184
|
+
def tilt(tilt_options={})
|
190
185
|
if tilt?
|
191
186
|
parts
|
192
187
|
# HAML options and such (like :escape_html)
|
193
|
-
options = project.config.tilt_options_for(@file)
|
188
|
+
options = project.config.tilt_options_for(@file, tilt_options)
|
194
189
|
offset = @offset || 1
|
195
|
-
|
190
|
+
Tilt.new(@file, offset, options) { markup }
|
196
191
|
end
|
197
192
|
end
|
198
193
|
|
data/lib/hyde/project.rb
CHANGED
@@ -2,7 +2,7 @@ class Hyde
|
|
2
2
|
class Project
|
3
3
|
def initialize(root=Dir.pwd)
|
4
4
|
@root = root
|
5
|
-
|
5
|
+
Hyde.project = self
|
6
6
|
|
7
7
|
validate_version
|
8
8
|
load_extensions
|
@@ -64,7 +64,7 @@ class Project
|
|
64
64
|
specs = [*config.ignore].map { |s| root(s) }
|
65
65
|
specs << config_file
|
66
66
|
[:layouts, :extensions, :partials, :output].each do |aspect|
|
67
|
-
specs << path(aspect, '**/*') if path(aspect)
|
67
|
+
specs << path(aspect, '**/*') if path(aspect) && path(aspect) != path(:site)
|
68
68
|
end
|
69
69
|
specs.compact.map { |s| Dir[s] }.flatten.uniq
|
70
70
|
end
|
data/lib/hyde/server.rb
CHANGED
@@ -11,7 +11,7 @@ class Hyde
|
|
11
11
|
def not_found
|
12
12
|
show_status nil
|
13
13
|
res.status = 404
|
14
|
-
res.write "
|
14
|
+
res.write "<h1>File Not Found</h1><p>The path <code>#{env['PATH_INFO']}</code> was not found." + " "*1024
|
15
15
|
end
|
16
16
|
|
17
17
|
def options
|
@@ -26,7 +26,7 @@ class Hyde
|
|
26
26
|
status = page ? "\033[0;32m[ OK ]" : "\033[0;31m[404 ]"
|
27
27
|
verb = get ? 'GET ' : (post ? 'POST' : '')
|
28
28
|
puts "%s\033[0;m %s %s" % [ status, verb, env['PATH_INFO'] ]
|
29
|
-
puts " src: #{page.filepath} (#{page.tilt_engine_name})" if page.tilt?
|
29
|
+
puts " src: #{page.filepath} (#{page.tilt_engine_name})" if page && page.tilt?
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
data/lib/hyde.rb
CHANGED
@@ -15,7 +15,7 @@ require 'shake'
|
|
15
15
|
Tilt.mappings['html'] = Tilt.mappings['erb']
|
16
16
|
|
17
17
|
class Hyde
|
18
|
-
VERSION = "0.1.
|
18
|
+
VERSION = "0.1.8"
|
19
19
|
PREFIX = File.expand_path('../', __FILE__)
|
20
20
|
|
21
21
|
Error = Class.new(StandardError)
|
@@ -35,7 +35,12 @@ class Hyde
|
|
35
35
|
autoload :Partial, "#{PREFIX}/hyde/partial"
|
36
36
|
autoload :Helpers, "#{PREFIX}/hyde/helpers"
|
37
37
|
|
38
|
-
|
39
|
-
|
38
|
+
class << self
|
39
|
+
# The latest project.
|
40
|
+
attr_accessor :project
|
41
|
+
|
42
|
+
def version
|
43
|
+
VERSION
|
44
|
+
end
|
40
45
|
end
|
41
46
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
hyde_requirement: 0.1
|
2
|
+
site_path: site
|
3
|
+
extensions_path: extensions
|
4
|
+
output_path: public
|
5
|
+
ignore:
|
6
|
+
- **/*~
|
7
|
+
- **/compass/**/*
|
8
|
+
- **/_*.scss
|
9
|
+
|
10
|
+
tilt_options:
|
11
|
+
scss:
|
12
|
+
:line_numbers: true
|
13
|
+
|
14
|
+
tilt_build_options:
|
15
|
+
scss:
|
16
|
+
:line_numbers: false
|
@@ -0,0 +1 @@
|
|
1
|
+
div { a { color: red; } }
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>ello</h1>
|
@@ -0,0 +1 @@
|
|
1
|
+
%h1 ello
|
@@ -0,0 +1 @@
|
|
1
|
+
xxx
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
require File.expand_path('../../helper', __FILE__)
|
3
|
+
|
4
|
+
class BuildOptionsTest < TestCase
|
5
|
+
setup do
|
6
|
+
@path = fixture('build_options')
|
7
|
+
@project = Project.new(@path)
|
8
|
+
Dir.chdir @path
|
9
|
+
end
|
10
|
+
|
11
|
+
test "yada" do
|
12
|
+
raw = Page['/style.css'].to_html
|
13
|
+
built = Page['/style.css'].to_html({}, :build => true)
|
14
|
+
|
15
|
+
assert !built.include?("line 1")
|
16
|
+
assert raw.include?("line 1")
|
17
|
+
end
|
18
|
+
end
|
data/test/unit/fixture_test.rb
CHANGED
@@ -65,6 +65,10 @@ class HydeTest < TestCase
|
|
65
65
|
assert_fixture_works fixture('sort')
|
66
66
|
end
|
67
67
|
|
68
|
+
test "fixture ignores" do
|
69
|
+
assert_fixture_works fixture('ignores')
|
70
|
+
end
|
71
|
+
|
68
72
|
test "fixture metadata" do
|
69
73
|
assert_fixture_works fixture('metadata')
|
70
74
|
end
|
@@ -72,6 +76,10 @@ class HydeTest < TestCase
|
|
72
76
|
test "fixture nested_layout" do
|
73
77
|
assert_fixture_works fixture('nested_layout')
|
74
78
|
end
|
79
|
+
|
80
|
+
test "fixture build_options" do
|
81
|
+
assert_fixture_works fixture('build_options')
|
82
|
+
end
|
75
83
|
|
76
84
|
test "fixture fail_type" do
|
77
85
|
assert_fixture_fails(fixture('fail_type')) { |e|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: hydeweb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Rico Sta. Cruz
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-25 00:00:00 +08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -19,9 +19,9 @@ dependencies:
|
|
19
19
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
|
-
- -
|
22
|
+
- - ~>
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 0.1
|
24
|
+
version: "0.1"
|
25
25
|
type: :runtime
|
26
26
|
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -93,6 +93,8 @@ files:
|
|
93
93
|
- lib/hyde/server.rb
|
94
94
|
- lib/hyde/set.rb
|
95
95
|
- lib/hyde.rb
|
96
|
+
- test/fixture/build_options/hyde.conf
|
97
|
+
- test/fixture/build_options/site/style.scss
|
96
98
|
- test/fixture/extensions/control/index.html
|
97
99
|
- test/fixture/extensions/extensions/a/a.rb
|
98
100
|
- test/fixture/extensions/hyde.conf
|
@@ -105,6 +107,10 @@ files:
|
|
105
107
|
- test/fixture/html/control/index.html
|
106
108
|
- test/fixture/html/hyde.conf
|
107
109
|
- test/fixture/html/site/index.html
|
110
|
+
- test/fixture/ignores/control/about.html
|
111
|
+
- test/fixture/ignores/hyde.conf
|
112
|
+
- test/fixture/ignores/site/about.haml
|
113
|
+
- test/fixture/ignores/site/hi.haml
|
108
114
|
- test/fixture/metadata/control/index.html
|
109
115
|
- test/fixture/metadata/hyde.conf
|
110
116
|
- test/fixture/metadata/site/index.haml
|
@@ -153,6 +159,7 @@ files:
|
|
153
159
|
- test/fixture/subclass/layouts/post.haml
|
154
160
|
- test/fixture/subclass/site/index.haml
|
155
161
|
- test/helper.rb
|
162
|
+
- test/unit/build_options_test.rb
|
156
163
|
- test/unit/extensions_test.rb
|
157
164
|
- test/unit/fixture_test.rb
|
158
165
|
- test/unit/hyde_test.rb
|
@@ -165,6 +172,7 @@ files:
|
|
165
172
|
- data/new_site/README.md
|
166
173
|
- HISTORY.md
|
167
174
|
- README.md
|
175
|
+
- TODO.md
|
168
176
|
- Rakefile
|
169
177
|
- AUTHORS
|
170
178
|
has_rdoc: true
|