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