hydeweb 0.0.7 → 0.0.8.pre1
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|