hydeweb 0.0.7 → 0.0.8.pre1
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/CHANGELOG +8 -0
- data/README.md +39 -25
- data/VERSION +1 -1
- data/data/new_site/README.md +3 -3
- data/hydeweb.gemspec +3 -3
- data/lib/hyde/page.rb +13 -5
- data/lib/hyde/page_factory.rb +17 -3
- data/lib/hyde/project.rb +20 -6
- data/lib/hyde.rb +4 -1
- metadata +12 -9
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -1,40 +1,54 @@
|
|
1
1
|
Hyde
|
2
2
|
====
|
3
3
|
|
4
|
+
Hyde is a website preprocessor.
|
5
|
+
|
6
|
+
http://labs.sinefunc.com/hyde/
|
7
|
+
|
8
|
+
- __Layouts and Partials:__ Hyde lets you define your site's header and footer
|
9
|
+
layouts in a separate file, and even separate snippets of your site
|
10
|
+
into reuseable components (partials). Your code will be much cleaner and
|
11
|
+
DRYer!
|
12
|
+
|
13
|
+
- __Template languages:__ Hyde lets you write your site in any template
|
14
|
+
language you need -- the translation will be taken care of for you.
|
15
|
+
Hyde supports HAML, LessCSS, Markdown, SASS and Textile by default, and
|
16
|
+
more can be added through extensions.
|
17
|
+
|
18
|
+
- __Extendable:__ Hyde is easily customizable with extensions. You can add
|
19
|
+
new helpers, new commands, support for new languages and many more by
|
20
|
+
simply adding the extensions to your project folder. Some are even
|
21
|
+
available as simple Ruby gems!
|
22
|
+
|
23
|
+
- __Design fast:__ Hyde comes with a web server that lets you serve up
|
24
|
+
your site locally. Any changes to your files will be seen on your next
|
25
|
+
browser refresh!
|
26
|
+
|
27
|
+
- __Build your site as static HTMLs:__ You can export your site as plain
|
28
|
+
HTML files with one simple command.
|
29
|
+
|
30
|
+
Why use Hyde?
|
31
|
+
-------------
|
32
|
+
|
33
|
+
It's like building a static site, but better! You can use Hyde for:
|
34
|
+
|
35
|
+
- Building HTML prototypes
|
36
|
+
- Building sites with no dynamic logic
|
37
|
+
- Creating a blog where the entries are stored in a source repository
|
38
|
+
|
4
39
|
Installation
|
5
40
|
------------
|
6
41
|
|
7
|
-
gem install hydeweb
|
42
|
+
gem install hydeweb
|
8
43
|
|
9
44
|
Usage
|
10
45
|
-----
|
11
46
|
|
12
|
-
|
47
|
+
Here's how you can get started:
|
48
|
+
|
49
|
+
hyde create <project_name>
|
13
50
|
cd <project_name>
|
14
51
|
hyde build # <= Build the HTML files, or
|
15
52
|
hyde start # <= Serve via a local web server
|
16
53
|
|
17
|
-
To do
|
18
|
-
-----
|
19
54
|
|
20
|
-
- ignores
|
21
|
-
- error pages
|
22
|
-
- page types
|
23
|
-
- _meta.yml
|
24
|
-
|
25
|
-
Done:
|
26
|
-
|
27
|
-
- default extensions
|
28
|
-
- version checking
|
29
|
-
- content_for
|
30
|
-
- partials_path
|
31
|
-
- last_modified
|
32
|
-
- partials support
|
33
|
-
- hyde build
|
34
|
-
- extensions support
|
35
|
-
- hyde gen
|
36
|
-
- helpers
|
37
|
-
- more renderers
|
38
|
-
- less
|
39
|
-
- markdown
|
40
|
-
- textile
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.8.pre1
|
data/data/new_site/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
{sitename}
|
2
|
+
==========
|
3
3
|
|
4
4
|
This is my site.
|
5
5
|
|
@@ -11,7 +11,7 @@ Instructions
|
|
11
11
|
2. Install the hydeweb gem: `gem install hydeweb --pre`
|
12
12
|
3. Build the site HTML files by typing: `hyde build`
|
13
13
|
|
14
|
-
You may also type `hyde
|
14
|
+
You may also type `hyde start` to serve the files in a local web server.
|
15
15
|
|
16
16
|
(If #2 fails, you may need to type `sudo gem install hydeweb` instead)
|
17
17
|
|
data/hydeweb.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{hydeweb}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.8.pre1"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Rico Sta. Cruz", "Sinefunc, Inc."]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-12-30}
|
13
13
|
s.default_executable = %q{hyde}
|
14
14
|
s.description = %q{Website preprocessor}
|
15
15
|
s.email = %q{rico@sinefunc.com}
|
data/lib/hyde/page.rb
CHANGED
@@ -69,12 +69,20 @@ module Hyde
|
|
69
69
|
|
70
70
|
# Returns the URL path for the page.
|
71
71
|
def path
|
72
|
-
|
72
|
+
@url ||= begin
|
73
|
+
if renderer.is_a?(Renderer::Passthru)
|
74
|
+
'/' + @name
|
75
|
+
else
|
76
|
+
url = File.split(@name)
|
77
|
+
url[1] = File.basename(url[1], '.*')
|
78
|
+
url[1] = (url[1] + @renderer.default_ext) unless url[1].include?('.')
|
79
|
+
'/' + url.join('/')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
73
83
|
|
74
|
-
|
75
|
-
|
76
|
-
url[1] = (url[1] + @renderer.default_ext) unless url[1].include?('.')
|
77
|
-
@url = '/' + url.join('/')
|
84
|
+
def output_path
|
85
|
+
File.join(project.config.output_path, path)
|
78
86
|
end
|
79
87
|
|
80
88
|
def get_binding #(&blk)
|
data/lib/hyde/page_factory.rb
CHANGED
@@ -10,6 +10,7 @@ module Hyde
|
|
10
10
|
path.gsub!(project.root(:site), '')
|
11
11
|
path.gsub!(/^\/+/, '')
|
12
12
|
|
13
|
+
# Try: "file.html" => "file.html", "file" [autoguess], "file/index.html"
|
13
14
|
ext = File.extname(path)
|
14
15
|
begin
|
15
16
|
do_create path, project, def_page_class
|
@@ -25,11 +26,23 @@ module Hyde
|
|
25
26
|
def self.do_create(path, project, def_page_class = Page)
|
26
27
|
info = get_page_info(path, project, def_page_class)
|
27
28
|
page_class = info[:page_class]
|
28
|
-
page_class.new(path, project, info[:renderer], info[:filename])
|
29
|
+
page = page_class.new(path, project, info[:renderer], info[:filename])
|
30
|
+
|
31
|
+
# What if it wants to be a different class?
|
32
|
+
if page.meta.type
|
33
|
+
begin
|
34
|
+
klass = Hyde.const_get(page.meta.type.to_sym)
|
35
|
+
page = klass.new(path, project, info[:renderer], info[:filename])
|
36
|
+
rescue NameError #pass
|
37
|
+
end
|
38
|
+
else
|
39
|
+
page
|
40
|
+
end
|
29
41
|
end
|
30
42
|
|
31
43
|
protected
|
32
44
|
|
45
|
+
# Returns the renderer, filename, page class
|
33
46
|
def self.get_page_info(path, project, page_class)
|
34
47
|
renderer = nil
|
35
48
|
filename = page_class.get_filename(path, project)
|
@@ -44,8 +57,9 @@ module Hyde
|
|
44
57
|
else
|
45
58
|
# Look for the file
|
46
59
|
matches = Dir["#{filename}.*"]
|
47
|
-
|
48
|
-
|
60
|
+
if matches.empty?
|
61
|
+
raise NotFound, "Can't find `#{path}{,.*}` -- #{filename}"
|
62
|
+
end
|
49
63
|
|
50
64
|
# Check for a matching renderer
|
51
65
|
exts = []
|
data/lib/hyde/project.rb
CHANGED
@@ -53,6 +53,20 @@ module Hyde
|
|
53
53
|
Hyde::Page[name, self, default_class]
|
54
54
|
end
|
55
55
|
|
56
|
+
# Returns all pages.
|
57
|
+
#
|
58
|
+
# @example
|
59
|
+
# @project.all #=> [1, 2, 3]
|
60
|
+
# @project.all(Hyde::Post) #=> [1]
|
61
|
+
#
|
62
|
+
def all(type=nil)
|
63
|
+
unless type
|
64
|
+
@all = files.map { |f| self[f] }
|
65
|
+
else
|
66
|
+
all.select { |page| page.class == type }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
56
70
|
# Writes the output files.
|
57
71
|
# @param
|
58
72
|
# ostream - (Stream) Where to send the messages
|
@@ -65,12 +79,12 @@ module Hyde
|
|
65
79
|
end
|
66
80
|
|
67
81
|
begin
|
68
|
-
|
69
|
-
ostream << " * #{
|
82
|
+
all.each do |page|
|
83
|
+
ostream << " * #{page.output_path}\n" if ostream
|
70
84
|
|
71
85
|
begin
|
72
|
-
rendered =
|
73
|
-
force_file_open(
|
86
|
+
rendered = page.render
|
87
|
+
force_file_open(page.output_path) { |file| file << rendered }
|
74
88
|
|
75
89
|
rescue RenderError => e
|
76
90
|
ostream << " *** Error: #{e.to_s}".gsub("\n", "\n *** ") << "\n"
|
@@ -85,7 +99,7 @@ module Hyde
|
|
85
99
|
# Returns a list of all URL paths
|
86
100
|
#
|
87
101
|
def files
|
88
|
-
@
|
102
|
+
@files = Dir[File.join(root(:site), '**', '*')].inject([]) do |a, match|
|
89
103
|
# Make sure its the canonical name
|
90
104
|
path = File.expand_path(match)
|
91
105
|
file = path.gsub /^#{Regexp.escape root(:site)}\/?/, ''
|
@@ -162,7 +176,7 @@ module Hyde
|
|
162
176
|
#
|
163
177
|
def load_extensions
|
164
178
|
# Load the init.rb file
|
165
|
-
require root('init.rb') if File.exists?(root
|
179
|
+
require root('init.rb') if File.exists?(root('init.rb'))
|
166
180
|
|
167
181
|
# Load the gems in the config file
|
168
182
|
@config.gems.each { |gem| require gem }
|
data/lib/hyde.rb
CHANGED
@@ -43,7 +43,10 @@ module Hyde
|
|
43
43
|
extend self
|
44
44
|
|
45
45
|
def version
|
46
|
-
@version ||=
|
46
|
+
@version ||= begin
|
47
|
+
v = File.open(File.join(File.dirname(__FILE__), '..', 'VERSION')) { |f| f.read.strip }
|
48
|
+
v = v.match(/^[0-9]+(\.[0-9]+){2}/)[0] rescue v
|
49
|
+
end
|
47
50
|
end
|
48
51
|
|
49
52
|
def compatible_with?(given_version)
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydeweb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: -1876988224
|
5
|
+
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
|
9
|
+
- 8
|
10
|
+
- pre1
|
11
|
+
version: 0.0.8.pre1
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- Rico Sta. Cruz
|
@@ -16,7 +17,7 @@ autorequire:
|
|
16
17
|
bindir: bin
|
17
18
|
cert_chain: []
|
18
19
|
|
19
|
-
date: 2010-
|
20
|
+
date: 2010-12-30 00:00:00 +08:00
|
20
21
|
default_executable: hyde
|
21
22
|
dependencies:
|
22
23
|
- !ruby/object:Gem::Dependency
|
@@ -200,12 +201,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
200
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
202
|
none: false
|
202
203
|
requirements:
|
203
|
-
- - "
|
204
|
+
- - ">"
|
204
205
|
- !ruby/object:Gem::Version
|
205
|
-
hash:
|
206
|
+
hash: 25
|
206
207
|
segments:
|
207
|
-
-
|
208
|
-
|
208
|
+
- 1
|
209
|
+
- 3
|
210
|
+
- 1
|
211
|
+
version: 1.3.1
|
209
212
|
requirements: []
|
210
213
|
|
211
214
|
rubyforge_project:
|