hydeweb 0.0.8.pre2 → 0.1.0
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 → HISTORY.md} +6 -0
- data/Rakefile +2 -52
- data/bin/hyde +3 -23
- data/bin/hyde01 +7 -0
- data/data/new_site/README.md +1 -1
- data/data/new_site/hyde.conf +9 -6
- data/lib/hyde/cli/helpers.rb +40 -0
- data/lib/hyde/cli.rb +86 -0
- data/lib/hyde/config.rb +37 -0
- data/lib/hyde/helpers.rb +6 -47
- data/lib/hyde/layout.rb +17 -9
- data/lib/hyde/meta.rb +5 -21
- data/lib/hyde/page.rb +207 -159
- data/lib/hyde/partial.rb +10 -5
- data/lib/hyde/project.rb +58 -208
- data/lib/hyde/server.rb +57 -0
- data/lib/hyde.rb +28 -51
- data/test/fixture/extensions/extensions/a/a.rb +1 -0
- data/test/fixture/extensions/hyde.conf +8 -0
- data/test/fixture/extensions/site/index.haml +1 -0
- data/test/fixture/fail_type/control/about/index.html +2 -0
- data/test/fixture/fail_type/control/about/us.html +2 -0
- data/test/fixture/fail_type/control/index.html +1 -0
- data/test/fixture/fail_type/hyde.conf +8 -0
- data/test/fixture/fail_type/site/index.haml +4 -0
- data/test/fixture/nested_layout/control/index.html +2 -0
- data/test/fixture/nested_layout/hyde.conf +8 -0
- data/test/fixture/nested_layout/layouts/default.haml +2 -0
- data/test/{fixtures/content_for/site/default.html.haml → fixture/nested_layout/layouts/post.haml} +1 -0
- data/test/fixture/nested_layout/site/index.haml +4 -0
- data/test/fixture/one/control/about/index.css +2 -0
- data/test/fixture/one/control/cheers.html +5 -0
- data/test/fixture/one/control/css/style.css +2 -0
- data/test/fixture/one/control/hello.html +5 -0
- data/test/fixture/one/control/hi.html +1 -0
- data/test/fixture/one/control/index.html +7 -0
- data/test/fixture/one/hyde.conf +9 -0
- data/test/fixture/one/layouts/default.haml +4 -0
- data/test/fixture/one/partials/menu.haml +3 -0
- data/test/fixture/one/site/about/index.scss +1 -0
- data/test/fixture/one/site/cheers.html.haml +1 -0
- data/test/fixture/one/site/css/style.scss +2 -0
- data/test/fixture/one/site/hello.haml +1 -0
- data/test/fixture/one/site/hi.html +1 -0
- data/test/fixture/one/site/index.haml +7 -0
- data/test/fixture/parent/control/about/index.html +2 -0
- data/test/fixture/parent/control/about/us.html +2 -0
- data/test/fixture/parent/control/index.html +1 -0
- data/test/fixture/parent/hyde.conf +8 -0
- data/test/fixture/parent/site/about/index.haml +3 -0
- data/test/fixture/parent/site/about/us.haml +3 -0
- data/test/fixture/parent/site/index.haml +3 -0
- data/test/fixture/sort/hyde.conf +8 -0
- data/test/fixture/sort/site/about/hardy.haml +4 -0
- data/test/fixture/sort/site/about/intrepid.haml +4 -0
- data/test/fixture/sort/site/about.haml +3 -0
- data/test/fixture/subclass/control/index.html +1 -0
- data/test/fixture/subclass/extensions/a/a.rb +12 -0
- data/test/fixture/subclass/hyde.conf +8 -0
- data/test/fixture/subclass/layouts/default.haml +1 -0
- data/test/fixture/subclass/layouts/post.haml +1 -0
- data/test/fixture/subclass/site/index.haml +4 -0
- data/test/helper.rb +15 -21
- data/test/unit/extensions_test.rb +16 -0
- data/test/unit/fixture_test.rb +77 -0
- data/test/unit/hyde_test.rb +30 -0
- metadata +107 -153
- data/.yardopts +0 -5
- data/LICENSE +0 -20
- data/VERSION +0 -1
- data/data/new_site/.gitignore +0 -24
- data/data/pages/404.html +0 -3
- data/hydeweb.gemspec +0 -159
- data/lib/hyde/clicommand.rb +0 -60
- data/lib/hyde/clicommands.rb +0 -128
- data/lib/hyde/ostruct.rb +0 -13
- data/lib/hyde/page_factory.rb +0 -90
- data/lib/hyde/renderer.rb +0 -133
- data/lib/hyde/renderers.rb +0 -100
- data/lib/hyde/sinatra/init.rb +0 -64
- data/lib/hyde/utils.rb +0 -43
- data/lib/hyde_misc/console.rb +0 -4
- data/manual/Extending/ExtendingHyde.md +0 -118
- data/manual/Hyde.md +0 -63
- data/manual/Introduction/Configuration.md +0 -70
- data/manual/Introduction/GettingStarted.md +0 -64
- data/manual/Introduction/Installation.md +0 -16
- data/manual/Introduction/Layouts.md +0 -14
- data/manual/Introduction/Metadata.md +0 -94
- data/manual/Introduction/Partials.md +0 -73
- data/manual/Introduction/TemplateLanguages.md +0 -59
- data/manual/Tips/Tips.md +0 -42
- data/test/fixtures/content_for/_config.yml +0 -8
- data/test/fixtures/content_for/layouts/cf-args.haml +0 -2
- data/test/fixtures/content_for/layouts/cf.haml +0 -14
- data/test/fixtures/content_for/layouts/default.haml +0 -4
- data/test/fixtures/content_for/layouts/shared/test.haml +0 -4
- data/test/fixtures/content_for/site/cf-args-default.haml +0 -2
- data/test/fixtures/content_for/site/cf-args.haml +0 -5
- data/test/fixtures/content_for/site/cf.haml +0 -6
- data/test/fixtures/content_for/site/cf2.haml +0 -3
- data/test/fixtures/content_for/site/index.html.haml +0 -9
- data/test/fixtures/content_for/site/var.html.haml +0 -5
- data/test/fixtures/content_for/www_control/cf-args-default.html +0 -1
- data/test/fixtures/content_for/www_control/cf-args.html +0 -2
- data/test/fixtures/content_for/www_control/cf.html +0 -17
- data/test/fixtures/content_for/www_control/cf2.html +0 -19
- data/test/fixtures/content_for/www_control/default.html +0 -2
- data/test/fixtures/content_for/www_control/index.html +0 -10
- data/test/fixtures/content_for/www_control/var.html +0 -2
- data/test/fixtures/custom/_config.yml +0 -8
- data/test/fixtures/custom/extensions/custom/custom.rb +0 -9
- data/test/fixtures/custom/layouts/default.haml +0 -8
- data/test/fixtures/custom/layouts/erbtest.erb +0 -2
- data/test/fixtures/custom/layouts/shared/sidebar.haml +0 -4
- data/test/fixtures/custom/site/about/index.html +0 -1
- data/test/fixtures/custom/site/assets/common.css.less +0 -1
- data/test/fixtures/custom/site/assets/style.css.less +0 -3
- data/test/fixtures/custom/site/foo.html.haml +0 -3
- data/test/fixtures/custom/site/index.html.haml +0 -6
- data/test/fixtures/custom/site/layout_test.html.haml +0 -6
- data/test/fixtures/custom/site/lol.html.erb +0 -7
- data/test/fixtures/custom/site/markdown.html.md +0 -8
- data/test/fixtures/custom/site/yes.html +0 -2
- data/test/fixtures/custom/www_control/about/index.html +0 -1
- data/test/fixtures/custom/www_control/assets/common.css +0 -1
- data/test/fixtures/custom/www_control/assets/style.css +0 -6
- data/test/fixtures/custom/www_control/foo.html +0 -1
- data/test/fixtures/custom/www_control/index.html +0 -16
- data/test/fixtures/custom/www_control/layout_test.html +0 -16
- data/test/fixtures/custom/www_control/lol.html +0 -5
- data/test/fixtures/custom/www_control/markdown.html +0 -17
- data/test/fixtures/custom/www_control/yes.html +0 -2
- data/test/fixtures/default/_config.yml +0 -8
- data/test/fixtures/default/extensions/custom/custom.rb +0 -2
- data/test/fixtures/default/layouts/default.haml +0 -5
- data/test/fixtures/default/site/about/index.html +0 -1
- data/test/fixtures/default/site/foo.html.haml +0 -3
- data/test/fixtures/default/site/index.html.haml +0 -6
- data/test/fixtures/default/site/layout_test.html.haml +0 -6
- data/test/fixtures/default/site/yes.html +0 -2
- data/test/fixtures/default/www_control/about/index.html +0 -1
- data/test/fixtures/default/www_control/foo.html +0 -1
- data/test/fixtures/default/www_control/index.html +0 -9
- data/test/fixtures/default/www_control/layout_test.html +0 -9
- data/test/fixtures/default/www_control/yes.html +0 -2
- data/test/test_all_fixtures.rb +0 -51
- data/test/test_build.rb +0 -20
- data/test/test_hyde.rb +0 -75
- data/test/test_page.rb +0 -26
- data/test/test_utils.rb +0 -22
data/lib/hyde/sinatra/init.rb
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
begin
|
|
3
|
-
require 'sinatra/base'
|
|
4
|
-
rescue LoadError
|
|
5
|
-
STDERR << "You need the sinatra gem to use `hyde start`. Type: `gem install sinatra`\n"
|
|
6
|
-
exit
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
$:.unshift File.dirname(__FILE__) + "/../.."
|
|
10
|
-
require 'hyde'
|
|
11
|
-
|
|
12
|
-
$project = Hyde::Project.new
|
|
13
|
-
|
|
14
|
-
class Main < Sinatra::Base
|
|
15
|
-
@@project ||= $project
|
|
16
|
-
|
|
17
|
-
def self.show_start
|
|
18
|
-
port = $project.config.port
|
|
19
|
-
|
|
20
|
-
puts "Starting server..."
|
|
21
|
-
puts " http://127.0.0.1:#{port} Homepage"
|
|
22
|
-
puts " http://127.0.0.1:#{port}/- File list"
|
|
23
|
-
puts ""
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
get '/-' do
|
|
27
|
-
@@project.files.inject("") do |a, path|
|
|
28
|
-
a << "<li><a href='#{path}'>#{path}</a></li>"
|
|
29
|
-
a
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
get '/*' do
|
|
34
|
-
begin
|
|
35
|
-
path = params[:splat][0]
|
|
36
|
-
type = File.extname(path)[1..-1]
|
|
37
|
-
content_type type.to_sym if type.is_a? String
|
|
38
|
-
|
|
39
|
-
page = @@project[path]
|
|
40
|
-
|
|
41
|
-
# Send the last modified time
|
|
42
|
-
last_modified File.mtime(page.filename)
|
|
43
|
-
cache_control :public, :must_revalidate, :max_age => 60
|
|
44
|
-
|
|
45
|
-
page.render
|
|
46
|
-
|
|
47
|
-
rescue Hyde::RenderError => e
|
|
48
|
-
puts " * `#{path}` line #{e.line} error"
|
|
49
|
-
puts " *** #{e.message}".gsub("\n","\n *** ")
|
|
50
|
-
e.message
|
|
51
|
-
|
|
52
|
-
rescue Hyde::NotFound
|
|
53
|
-
raise Sinatra::NotFound
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
not_found do
|
|
58
|
-
html_path = File.join(File.dirname(__FILE__), %w[.. .. .. data pages 404.html])
|
|
59
|
-
File.open(html_path) { |f| f.read } + (" "*4096)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
Main.show_start
|
|
64
|
-
Main.run! :port => $project.config.port
|
data/lib/hyde/utils.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
module Hyde
|
|
2
|
-
module Utils
|
|
3
|
-
protected
|
|
4
|
-
def escape_html(str)
|
|
5
|
-
str.
|
|
6
|
-
gsub('&', '&').
|
|
7
|
-
gsub('"', '"').
|
|
8
|
-
gsub('<', '<').
|
|
9
|
-
gsub('>', '>').
|
|
10
|
-
gsub("'", '&39;')
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def same_file?(a, b)
|
|
14
|
-
File.expand_path(a) == File.expand_path(b)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def matches_files?(needle, haystack)
|
|
18
|
-
haystack.inject(false) do |a, match|
|
|
19
|
-
a ||= same_file?(needle, match)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def force_file_open(filepath, &blk)
|
|
24
|
-
require 'fileutils'
|
|
25
|
-
FileUtils.mkdir_p File.dirname(filepath)
|
|
26
|
-
|
|
27
|
-
if block_given?
|
|
28
|
-
File.open filepath, 'w', &blk
|
|
29
|
-
else
|
|
30
|
-
File.new filepath, 'w'
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Returns all helper classes under the Hyde::Helpers module.
|
|
35
|
-
def get_helpers
|
|
36
|
-
Hyde::Helpers.constants.inject([Hyde::Helpers]) do |a, constant|
|
|
37
|
-
mod = Hyde::Helpers.const_get(constant)
|
|
38
|
-
a << mod if mod.is_a? Module
|
|
39
|
-
a
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
data/lib/hyde_misc/console.rb
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
Extending Hyde
|
|
2
|
-
==============
|
|
3
|
-
|
|
4
|
-
Creating extensions
|
|
5
|
-
-------------------
|
|
6
|
-
|
|
7
|
-
In your Hyde project's extensions folder (`extensions` by default), create a file called
|
|
8
|
-
`<name>/<name>.rb`, where `<name>` is the name of your extension. This file will automatically loaded.
|
|
9
|
-
|
|
10
|
-
Example:
|
|
11
|
-
|
|
12
|
-
# extensions/hyde-blog/hyde-blog.rb
|
|
13
|
-
module Hyde
|
|
14
|
-
# Set up autoload hooks for the other classes
|
|
15
|
-
prefix = File.dirname(__FILE__)
|
|
16
|
-
autoload :Blog, "#{prefix}/lib/blog.rb"
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
Creating extensions as gems
|
|
20
|
-
---------------------------
|
|
21
|
-
|
|
22
|
-
You may also create your extensions as gems. It is recommended to name them as `hyde-(name)`,
|
|
23
|
-
for instance, `hyde-blog`.
|
|
24
|
-
|
|
25
|
-
To load gem extensions in your Hyde project, add them to the `gems` section of your project's
|
|
26
|
-
config file (typically `hyde.conf`). Example:
|
|
27
|
-
|
|
28
|
-
# hyde.conf
|
|
29
|
-
gems:
|
|
30
|
-
- hyde-blog
|
|
31
|
-
- hyde-clean
|
|
32
|
-
|
|
33
|
-
Adding helpers
|
|
34
|
-
--------------
|
|
35
|
-
|
|
36
|
-
Make a module under `Hyde::Helpers`. Any functions here will be available to your files.
|
|
37
|
-
|
|
38
|
-
Example:
|
|
39
|
-
|
|
40
|
-
In this example, we'll create a simple helper function.
|
|
41
|
-
|
|
42
|
-
# extensions/hyde-blog/hyde-blog.rb
|
|
43
|
-
module Hyde
|
|
44
|
-
module Helpers
|
|
45
|
-
module FormHelpers
|
|
46
|
-
def form_tag(meth, action, &b)
|
|
47
|
-
[ "<form method='#{meth}' action='#{action}'>",
|
|
48
|
-
b.call,
|
|
49
|
-
"</form>"
|
|
50
|
-
].join("\n")
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
In your project's site files, you can then now use this helper.
|
|
57
|
-
|
|
58
|
-
# site/my_page.html.haml
|
|
59
|
-
%h1 My form
|
|
60
|
-
!= form_tag 'post', '/note/new' do
|
|
61
|
-
%p
|
|
62
|
-
%label Your name:
|
|
63
|
-
%input{ :type => 'text', :name => 'name' }
|
|
64
|
-
%p
|
|
65
|
-
%label Your email:
|
|
66
|
-
%input{ :type => 'text', :name => 'email' }
|
|
67
|
-
|
|
68
|
-
Adding commands
|
|
69
|
-
---------------
|
|
70
|
-
|
|
71
|
-
Create a subclass of the class {Hyde::CLICommand} and place it under the {Hyde::CLICommands} module.
|
|
72
|
-
The name of the class will be the command it will be accessible as.
|
|
73
|
-
|
|
74
|
-
This example below defines a new `clean` command, which will be accessible by typing `hyde clean`.
|
|
75
|
-
It will also show under `hyde --help` since it provides a `desc`.
|
|
76
|
-
|
|
77
|
-
# extensions/hyde-clean/hyde-clean.rb
|
|
78
|
-
module Hyde
|
|
79
|
-
module CLICommands
|
|
80
|
-
class Clean < CLICommand
|
|
81
|
-
desc "Cleans up your project's dirt"
|
|
82
|
-
|
|
83
|
-
def self.run(*a)
|
|
84
|
-
if a.size > 0
|
|
85
|
-
log "Unknown arguments: #{a.join(' ')}"
|
|
86
|
-
log "Type `hyde --help clean` for more information."
|
|
87
|
-
exit
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
log "Cleaning..."
|
|
91
|
-
# Do stuff here
|
|
92
|
-
log "All clean!"
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
This may now be used in the command line.
|
|
99
|
-
|
|
100
|
-
$ hyde clean all
|
|
101
|
-
Unknown arguments: all
|
|
102
|
-
Type `hyde --help clean` for more information.
|
|
103
|
-
|
|
104
|
-
$ hyde clean
|
|
105
|
-
Cleaning...
|
|
106
|
-
All done!
|
|
107
|
-
|
|
108
|
-
$ hyde --help
|
|
109
|
-
Usage: hyde <command> arguments
|
|
110
|
-
|
|
111
|
-
Commands:
|
|
112
|
-
....
|
|
113
|
-
clean Cleans up your project's dirt
|
|
114
|
-
|
|
115
|
-
Adding parsers
|
|
116
|
-
--------------
|
|
117
|
-
|
|
118
|
-
TODO.
|
data/manual/Hyde.md
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
Hyde
|
|
2
|
-
====
|
|
3
|
-
|
|
4
|
-
Hyde is a website preprocessor.
|
|
5
|
-
|
|
6
|
-
- __Layouts and Partials:__ Hyde lets you define your site's header and footer
|
|
7
|
-
layouts in a separate file, and even separate snippets of your site
|
|
8
|
-
into reuseable components (partials). Your code will be much cleaner and
|
|
9
|
-
DRYer!
|
|
10
|
-
|
|
11
|
-
- __Template languages:__ Hyde lets you write your site in any template
|
|
12
|
-
language you need -- the translation will be taken care of for you.
|
|
13
|
-
Hyde supports HAML, LessCSS, Markdown, SASS and Textile by default, and
|
|
14
|
-
more can be added through extensions.
|
|
15
|
-
|
|
16
|
-
- __Extendable:__ Hyde is easily customizable with extensions. You can add
|
|
17
|
-
new helpers, new commands, support for new languages and many more by
|
|
18
|
-
simply adding the extensions to your project folder. Some are even
|
|
19
|
-
available as simple Ruby gems!
|
|
20
|
-
|
|
21
|
-
- __Design fast:__ Hyde comes with a web server that lets you serve up
|
|
22
|
-
your site locally. Any changes to your files will be seen on your next
|
|
23
|
-
browser refresh!
|
|
24
|
-
|
|
25
|
-
- __Build your site as static HTMLs:__ You can export your site as plain
|
|
26
|
-
HTML files with one simple command.
|
|
27
|
-
|
|
28
|
-
Why use Hyde?
|
|
29
|
-
-------------
|
|
30
|
-
|
|
31
|
-
It's like building a static site, but better! You can use Hyde for:
|
|
32
|
-
|
|
33
|
-
- Building HTML prototypes
|
|
34
|
-
- Building sites with no dynamic logic
|
|
35
|
-
- Creating a blog where the entries are stored in a source repository
|
|
36
|
-
|
|
37
|
-
Introduction
|
|
38
|
-
------------
|
|
39
|
-
|
|
40
|
-
- `++++` {file:Installation Installation} -- Start here
|
|
41
|
-
- `++++` {file:GettingStarted Getting started}
|
|
42
|
-
- `++--` {file:TemplateLanguages Template languages}
|
|
43
|
-
- `+---` {file:Layouts Layouts}
|
|
44
|
-
- `++++` {file:Partials Partials}
|
|
45
|
-
- `++++` {file:Metadata Metadata}
|
|
46
|
-
- `++++` {file:Configuration Configuration}
|
|
47
|
-
|
|
48
|
-
Extending Hyde
|
|
49
|
-
--------------
|
|
50
|
-
|
|
51
|
-
- `+++-` {file:ExtendingHyde Extending Hyde}
|
|
52
|
-
|
|
53
|
-
Tips and tricks
|
|
54
|
-
---------------
|
|
55
|
-
|
|
56
|
-
- `+++-` {file:Tips Tips}
|
|
57
|
-
|
|
58
|
-
Basic info
|
|
59
|
-
----------
|
|
60
|
-
|
|
61
|
-
- {file:AUTHORS Credits}
|
|
62
|
-
- {file:LICENSE License}
|
|
63
|
-
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
Configuration
|
|
2
|
-
=============
|
|
3
|
-
|
|
4
|
-
Configuration is done through the file `hyde.conf` placed in
|
|
5
|
-
your project's root folder. A sample config file is generated
|
|
6
|
-
when doing `hyde create`.
|
|
7
|
-
|
|
8
|
-
It is a YAML file, so the basic format of the file is:
|
|
9
|
-
|
|
10
|
-
option: value
|
|
11
|
-
# Lines starting with # are comments that are ignored.
|
|
12
|
-
|
|
13
|
-
Options
|
|
14
|
-
-------
|
|
15
|
-
|
|
16
|
-
hyde_requirement
|
|
17
|
-
: The minimum version of Hyde needed by the project. Example:
|
|
18
|
-
|
|
19
|
-
hyde_requirement: 0.0.5
|
|
20
|
-
|
|
21
|
-
site_path
|
|
22
|
-
: The folder where the site's main files are kept. (you can set this to '.')
|
|
23
|
-
This is the path where your main files are. Example:
|
|
24
|
-
|
|
25
|
-
# myproject/hyde.conf
|
|
26
|
-
site_path: site
|
|
27
|
-
|
|
28
|
-
# This will instruct hyde to look at myproject/site/ for the
|
|
29
|
-
# files of the project.
|
|
30
|
-
|
|
31
|
-
layouts_path
|
|
32
|
-
: The folder where the layout templates (and partials) are kept. See the
|
|
33
|
-
{file:Layouts Layouts} section for information on Hyde layouts.
|
|
34
|
-
|
|
35
|
-
partials_path
|
|
36
|
-
: The folder for partials. See the {file:Partials Partials} section for
|
|
37
|
-
an overview of what partials are.
|
|
38
|
-
|
|
39
|
-
extensions_path
|
|
40
|
-
: The folder where the optional extensions are kept. See the
|
|
41
|
-
{file:ExtendingHyde Extending Hyde} section for more info on extensions.
|
|
42
|
-
|
|
43
|
-
output_path
|
|
44
|
-
: The folder where the HTML files are to be built when typing `hyde build`.
|
|
45
|
-
|
|
46
|
-
More options
|
|
47
|
-
------------
|
|
48
|
-
|
|
49
|
-
These options are not in the default `hyde.conf`, but you may simply
|
|
50
|
-
add them in.
|
|
51
|
-
|
|
52
|
-
port
|
|
53
|
-
: The port number. Defaults to 4833 unless set. Example:
|
|
54
|
-
|
|
55
|
-
port: 4999
|
|
56
|
-
|
|
57
|
-
gems
|
|
58
|
-
: This is a list of Ruby gems to be autoloaded into Hyde. Some extensions
|
|
59
|
-
are available as gems and may simply be added here to be used. Example:
|
|
60
|
-
|
|
61
|
-
gems:
|
|
62
|
-
- hyde-rst
|
|
63
|
-
- hyde-zip
|
|
64
|
-
|
|
65
|
-
Hidden hyde config file
|
|
66
|
-
-----------------------
|
|
67
|
-
|
|
68
|
-
Don't like seeing `hyde.conf` littering up your project folder? Rename
|
|
69
|
-
it to `.hyderc`.
|
|
70
|
-
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
Getting started
|
|
2
|
-
===============
|
|
3
|
-
|
|
4
|
-
Starting your first project
|
|
5
|
-
---------------------------
|
|
6
|
-
|
|
7
|
-
Create your first project with:
|
|
8
|
-
|
|
9
|
-
hyde create <name>
|
|
10
|
-
|
|
11
|
-
Where `<name>` is the name of your project. This will create a folder with that
|
|
12
|
-
name, along with some sample files to get you started.
|
|
13
|
-
|
|
14
|
-
Starting
|
|
15
|
-
--------
|
|
16
|
-
|
|
17
|
-
Begin working on your project by starting the Hyde webserver. This is optional,
|
|
18
|
-
but is recommended as it's a nice way to see your changes in real time.
|
|
19
|
-
|
|
20
|
-
hyde start
|
|
21
|
-
|
|
22
|
-
After typing this, you will see the server has started. Point your web browser to
|
|
23
|
-
`http://localhost:4833` to see your site. You should now see your project's
|
|
24
|
-
default "welcome" page.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Editing your site
|
|
28
|
-
-----------------
|
|
29
|
-
|
|
30
|
-
Your project has a subfolder called `site` -- this is where all the site's files are
|
|
31
|
-
stored. In general, dropping any file in this folder will make it accessible with the
|
|
32
|
-
same filename.
|
|
33
|
-
|
|
34
|
-
Try this: create a file called `products.html` and fill it up like you would an
|
|
35
|
-
HTML page. After that, point your browser to `http://localhost:4833/products.html`,
|
|
36
|
-
which should now show the page you were working on.
|
|
37
|
-
|
|
38
|
-
You may also put your files in subfolders. If you were to create the file
|
|
39
|
-
`site/assets/my_style.css`, it should be accessible through
|
|
40
|
-
`http://localhost:4833/assets/my_style.css`.
|
|
41
|
-
|
|
42
|
-
Dynamic files
|
|
43
|
-
-------------
|
|
44
|
-
|
|
45
|
-
Hyde supports many templating languages like HAML, Less, and ERB (more on this later).
|
|
46
|
-
If your file ends in one of these supported extensions (e.g., `index.haml`), it
|
|
47
|
-
is assumed to be a dynamic file and will be rendered by it's corresponding templating
|
|
48
|
-
engine (in this case, HAML).
|
|
49
|
-
|
|
50
|
-
Building HTML files
|
|
51
|
-
-------------------
|
|
52
|
-
|
|
53
|
-
The `hyde start` webserver is good for local development, but when it's time to
|
|
54
|
-
deploy your site, you will need to build your files. This process outputs raw
|
|
55
|
-
HTML files for your entire site (for the dynamic files), with Hyde translating
|
|
56
|
-
any files that need translation (e.g., HAML and ERB files).
|
|
57
|
-
|
|
58
|
-
Build your files by typing this in the command prompt:
|
|
59
|
-
|
|
60
|
-
hyde build
|
|
61
|
-
|
|
62
|
-
This will create a folder called `public/` where the built files are stored.
|
|
63
|
-
You can now deploy this folder to your webserver.
|
|
64
|
-
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Installation
|
|
2
|
-
============
|
|
3
|
-
|
|
4
|
-
First, make sure that you have Ruby (>= version 1.8) installed. You can do this
|
|
5
|
-
by typing `ruby --version` in the command line.
|
|
6
|
-
|
|
7
|
-
- For Mac users, there's no need to do anything. Ruby comes with the OS by default.
|
|
8
|
-
- For Windows users, I don't know.
|
|
9
|
-
- For Ubuntu users, `sudo apt-get install ruby`.
|
|
10
|
-
|
|
11
|
-
Install Hyde by typing:
|
|
12
|
-
|
|
13
|
-
gem install hydeweb
|
|
14
|
-
|
|
15
|
-
If this process fails, you can instead try `sudo gem install hydeweb`.
|
|
16
|
-
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
Layouts
|
|
2
|
-
=======
|
|
3
|
-
|
|
4
|
-
Defining layouts
|
|
5
|
-
----------------
|
|
6
|
-
|
|
7
|
-
1. Create a file called layouts/default.haml (or .erb)
|
|
8
|
-
2. use `yield` to show the page's contents
|
|
9
|
-
3. Voila
|
|
10
|
-
|
|
11
|
-
Using your own layouts
|
|
12
|
-
----------------------
|
|
13
|
-
|
|
14
|
-
Use the `layout` metadata key. See the next section.
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
Metadata
|
|
2
|
-
========
|
|
3
|
-
|
|
4
|
-
You may include metadata for pages by placing a YAML document at the beginning
|
|
5
|
-
of your page files. Be sure to separate your actual page from the metadata
|
|
6
|
-
using two hyphens (`--`)!
|
|
7
|
-
|
|
8
|
-
# mypage.haml
|
|
9
|
-
title: This is my page
|
|
10
|
-
author: Jason White
|
|
11
|
-
--
|
|
12
|
-
%div
|
|
13
|
-
-# You may access metadata in using `page.meta.<key>`.
|
|
14
|
-
%h1= page.meta.title
|
|
15
|
-
%cite
|
|
16
|
-
by
|
|
17
|
-
= page.meta.author
|
|
18
|
-
|
|
19
|
-
Special metadata keys
|
|
20
|
-
---------------------
|
|
21
|
-
|
|
22
|
-
Hyde has a few reserved keys.
|
|
23
|
-
|
|
24
|
-
### title
|
|
25
|
-
|
|
26
|
-
You may define a title for a page. You may then access this using `page.title`.
|
|
27
|
-
|
|
28
|
-
# mypage-two.haml
|
|
29
|
-
title: This is my page
|
|
30
|
-
--
|
|
31
|
-
%h1= page.title
|
|
32
|
-
|
|
33
|
-
This shows:
|
|
34
|
-
|
|
35
|
-
<h1>This is my page</h1>
|
|
36
|
-
|
|
37
|
-
If you do not define a title for a page, Hyde automatically uses the page's
|
|
38
|
-
filename instead.
|
|
39
|
-
|
|
40
|
-
# mypage-three.haml
|
|
41
|
-
%h1= page.title
|
|
42
|
-
|
|
43
|
-
Output:
|
|
44
|
-
|
|
45
|
-
<h1>mypage-three</h1>
|
|
46
|
-
|
|
47
|
-
### position
|
|
48
|
-
|
|
49
|
-
You may manually define the order of your pages using the 'position' key.
|
|
50
|
-
|
|
51
|
-
# about.haml
|
|
52
|
-
title: About us
|
|
53
|
-
position: 1
|
|
54
|
-
--
|
|
55
|
-
|
|
56
|
-
# services.haml
|
|
57
|
-
title: Services
|
|
58
|
-
position: 2
|
|
59
|
-
--
|
|
60
|
-
|
|
61
|
-
# contact.haml
|
|
62
|
-
title: Contact us
|
|
63
|
-
position: 9
|
|
64
|
-
--
|
|
65
|
-
|
|
66
|
-
This will affect the sort order of menus and such. Specifically, it the
|
|
67
|
-
outputs of functions such as `page.children`, `page.siblings`, `page.next`,
|
|
68
|
-
and so on.
|
|
69
|
-
|
|
70
|
-
The pages will then be ordered like so:
|
|
71
|
-
|
|
72
|
-
- About us
|
|
73
|
-
- Services
|
|
74
|
-
- Contact us
|
|
75
|
-
|
|
76
|
-
If positions have not been defined, they will be sorted alphabetically by
|
|
77
|
-
filename, i.e.:
|
|
78
|
-
|
|
79
|
-
- About us
|
|
80
|
-
- Contact us
|
|
81
|
-
- Services
|
|
82
|
-
|
|
83
|
-
### layout
|
|
84
|
-
|
|
85
|
-
By default, a page will use the `default` layout. To change this, simply
|
|
86
|
-
define a layout key in your metadata:
|
|
87
|
-
|
|
88
|
-
# products/camera_cx-300.haml
|
|
89
|
-
title: CX-300 Camera
|
|
90
|
-
layout: product
|
|
91
|
-
|
|
92
|
-
This will search for `layouts/product.*` (whichever extension it finds) in
|
|
93
|
-
your project, and use that as the layout. (This is assuming, of course, that
|
|
94
|
-
you haven't changed the default `layouts/` path in your Hyde config file.)
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
Partials
|
|
2
|
-
========
|
|
3
|
-
|
|
4
|
-
A partial is a snippet of code that you can reuse in any page of your site.
|
|
5
|
-
This is particularly useful for repetitive sections, and for sections that may
|
|
6
|
-
make your files too large to manage.
|
|
7
|
-
|
|
8
|
-
Creating partials
|
|
9
|
-
-----------------
|
|
10
|
-
|
|
11
|
-
Put your partial file anywhere in the `layouts` folder, e.g.:
|
|
12
|
-
|
|
13
|
-
<!-- layouts/shared/sidebar.erb -->
|
|
14
|
-
<div id='#sidebar'>
|
|
15
|
-
<h2><span>Sidebar</span><h2>
|
|
16
|
-
<div class='description'>
|
|
17
|
-
<p>This is a sidebar partial defined in a separate file.</p>
|
|
18
|
-
</div>
|
|
19
|
-
</div>
|
|
20
|
-
|
|
21
|
-
In your site's files, you can invoke a partial through:
|
|
22
|
-
|
|
23
|
-
<!-- site/index.html.erb -->
|
|
24
|
-
<h1>Partial:</h1>
|
|
25
|
-
<%= partial 'shared/sidebar' %>
|
|
26
|
-
<span>End of partial.</span>
|
|
27
|
-
<span>This is now text from index.html.</span>
|
|
28
|
-
|
|
29
|
-
This will output:
|
|
30
|
-
|
|
31
|
-
<!-- public/index.html -->
|
|
32
|
-
<h1>Partial:</h1>
|
|
33
|
-
<div id='#sidebar'>
|
|
34
|
-
<h2><span>Sidebar</span><h2>
|
|
35
|
-
<div class='description'>
|
|
36
|
-
<p>This is a sidebar partial defined in a separate file.</p>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
<span>End of partial.</span>
|
|
40
|
-
<span>This is now text from index.html.</span>
|
|
41
|
-
|
|
42
|
-
Partials with local variables
|
|
43
|
-
-----------------------------
|
|
44
|
-
|
|
45
|
-
You can define a partial with some local variables that will be passed
|
|
46
|
-
to it by the caller.
|
|
47
|
-
|
|
48
|
-
<!-- layouts/shared/product.erb -->
|
|
49
|
-
<div class='product'>
|
|
50
|
-
<div class='title'>
|
|
51
|
-
<h2><%= name %></h2>
|
|
52
|
-
</div>
|
|
53
|
-
<div class='desc'>
|
|
54
|
-
<p><%= description %></p>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
In your files, call a partial by:
|
|
59
|
-
|
|
60
|
-
<!-- site/index.html.erb -->
|
|
61
|
-
<%= partial 'shared/product', { :name => '5MP Camera CX-300', :description => 'This is a camera with an adjustable focal length and Bluetooth support.' } %>
|
|
62
|
-
|
|
63
|
-
Partials in HAML files
|
|
64
|
-
----------------------
|
|
65
|
-
|
|
66
|
-
HAML support in Hyde has the `escape_html` option on by default. You
|
|
67
|
-
will need to use `!= partial` instead of `= partial`.
|
|
68
|
-
|
|
69
|
-
-# Don't forget the exclamation point!
|
|
70
|
-
!= partial 'shared/product'
|
|
71
|
-
|
|
72
|
-
If you omit the `!`, the partial will be rendered with it's HTML code
|
|
73
|
-
escaped.
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
Template languages
|
|
2
|
-
==================
|
|
3
|
-
|
|
4
|
-
Hyde comes with support for some common template languages. This means you can
|
|
5
|
-
write your site in a language like Markdown or HAML, and have Hyde take care
|
|
6
|
-
of translating them accordingly.
|
|
7
|
-
|
|
8
|
-
If a file ends in one of Hyde's supported file extensions (like `.haml`), it will be stripped
|
|
9
|
-
out and the file will be rendered using the template engine in that extension (in
|
|
10
|
-
this case, HAML).
|
|
11
|
-
|
|
12
|
-
Supported languages
|
|
13
|
-
-------------------
|
|
14
|
-
|
|
15
|
-
Hyde supports the following languages out-of-the-box:
|
|
16
|
-
|
|
17
|
-
- HTML template languages
|
|
18
|
-
- `.haml` -- HAML
|
|
19
|
-
- `.md` -- Markdown
|
|
20
|
-
- `.textile` -- Textile
|
|
21
|
-
- `.erb` -- ERB (Embedded Ruby)
|
|
22
|
-
|
|
23
|
-
- CSS template languages
|
|
24
|
-
- `.less` -- LessCSS
|
|
25
|
-
- `.sass` -- SASS
|
|
26
|
-
|
|
27
|
-
This means that the following files will be translated accordingly:
|
|
28
|
-
|
|
29
|
-
| products.haml | becomes `products.html` (rendered through HAML) |
|
|
30
|
-
| control.less | becomes `control.css` (rendered through Less CSS) |
|
|
31
|
-
| site.xml.erb | becomes `site.xml` (rendered through Embedded Ruby) |
|
|
32
|
-
|
|
33
|
-
Example
|
|
34
|
-
-------
|
|
35
|
-
|
|
36
|
-
When creating a new site, have a look at `index.haml`.
|
|
37
|
-
|
|
38
|
-
...
|
|
39
|
-
|
|
40
|
-
Headers
|
|
41
|
-
-------
|
|
42
|
-
|
|
43
|
-
...
|
|
44
|
-
|
|
45
|
-
Layouts
|
|
46
|
-
-------
|
|
47
|
-
|
|
48
|
-
Layouts are supported for HAML, Markdown, Textile and ERB languages.
|
|
49
|
-
|
|
50
|
-
...
|
|
51
|
-
|
|
52
|
-
Embedded Ruby features
|
|
53
|
-
----------------------
|
|
54
|
-
|
|
55
|
-
Some languages (like HAML and ERB) has support for embedding Ruby code in the
|
|
56
|
-
documents. This will let you do some nifty things in Hyde:
|
|
57
|
-
|
|
58
|
-
- Partials
|
|
59
|
-
- Helpers
|