Initial nanoc site

This commit is contained in:
Ariejan de Vroom 2013-03-22 22:03:45 +01:00
commit de61869f8e
11 changed files with 372 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
/.sass-cache
*.log
/output
/tmp

9
Gemfile Normal file
View File

@ -0,0 +1,9 @@
source 'https://rubygems.org'
gem 'nanoc'
gem 'adsf'
gem 'kramdown'
gem 'sass'
gem 'haml'
gem 'coffee-script'
gem 'typogruby'

38
Gemfile.lock Normal file
View File

@ -0,0 +1,38 @@
GEM
remote: https://rubygems.org/
specs:
adsf (1.1.1)
rack (>= 1.0.0)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.6.2)
colored (1.2)
cri (2.3.0)
colored (>= 1.2)
execjs (1.4.0)
multi_json (~> 1.0)
haml (4.0.1)
tilt
kramdown (0.14.2)
multi_json (1.7.1)
nanoc (3.6.1)
cri (~> 2.3)
rack (1.5.2)
rubypants (0.2.0)
sass (3.2.7)
tilt (1.3.6)
typogruby (1.0.15)
rubypants
PLATFORMS
ruby
DEPENDENCIES
adsf
coffee-script
haml
kramdown
nanoc
sass
typogruby

52
Rules Normal file
View File

@ -0,0 +1,52 @@
#!/usr/bin/env ruby
SASS_LOAD_PATHS = [
File.join(`bundle show bourbon`.chomp, *%w[app assets stylesheets]),
File.join(`bundle show rocks`.chomp, *%w[app assets stylesheets])
]
compile '/stylesheet/' do
filter :sass, syntax: :scss, load_paths: SASS_LOAD_PATHS
end
compile '/javascript/' do
filter :coffeescript
end
compile '/posts/*' do
filter :kramdown, auto_ids: false, coderay_line_numbers: nil, coderay_tab_width: 2
filter :typogruby
layout 'post'
end
compile '*' do
unless item.binary?
filter :erb
layout 'default'
end
end
route '/stylesheet/' do
'/style.css'
end
route '/javascript/' do
'/script.js'
end
route '/posts/*' do
y, m, d, slug = /([0-9]+)\-([0-9]+)\-([0-9]+)\-([^\/]+)/.match(item.identifier).captures
"/#{y}/#{m}/#{d}/#{slug}/index.html"
end
route '*' do
if item.binary?
# Write item with identifier /foo/ to /foo.ext
item.identifier.chop + '.' + item[:extension]
else
# Write item with identifier /foo/ to /foo/index.html
item.identifier + 'index.html'
end
end
layout '*', :erb

7
content/index.md Normal file
View File

@ -0,0 +1,7 @@
---
title: Home
---
# Nanoc
An awesome site generator.

View File

@ -0,0 +1,17 @@
---
title: "My first post"
created_at: 2013-03-22
kind: article
tags: [ 'one', 'two' ]
---
This is my post.
* With
* A list
And some
> quoted stuff for fun and profit.
Thanks!

101
content/stylesheet.css Normal file
View File

@ -0,0 +1,101 @@
* {
margin: 0;
padding: 0;
font-family: Georgia, Palatino, Times, 'Times New Roman', sans-serif;
}
body {
background: #fff;
}
a {
text-decoration: none;
}
a:link,
a:visited {
color: #f30;
}
a:hover {
color: #f90;
}
#main {
position: absolute;
top: 40px;
left: 280px;
width: 500px;
}
#main h1 {
font-size: 40px;
font-weight: normal;
line-height: 40px;
letter-spacing: -1px;
}
#main p {
margin: 20px 0;
font-size: 15px;
line-height: 20px;
}
#main ul, #main ol {
margin: 20px;
}
#main li {
font-size: 15px;
line-height: 20px;
}
#main ul li {
list-style-type: square;
}
#sidebar {
position: absolute;
top: 40px;
left: 20px;
width: 200px;
padding: 20px 20px 0 0;
border-right: 1px solid #ccc;
text-align: right;
}
#sidebar h2 {
text-transform: uppercase;
font-size: 13px;
color: #333;
letter-spacing: 1px;
line-height: 20px;
}
#sidebar ul {
list-style-type: none;
margin: 20px 0;
}
#sidebar li {
font-size: 14px;
line-height: 20px;
}

29
layouts/default.html Normal file
View File

@ -0,0 +1,29 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>A Brand New nanoc Site - <%= @item[:title] %></title>
<link rel="stylesheet" href="/style.css">
<!-- you don't need to keep this, but it's cool for stats! -->
<meta name="generator" content="nanoc <%= Nanoc::VERSION %>">
</head>
<body>
<div id="main">
<%= yield %>
</div>
<div id="sidebar">
<h2>Documentation</h2>
<ul>
<li><a href="http://nanoc.ws/docs/">Documentation</a></li>
<li><a href="http://nanoc.ws/docs/tutorial/">Getting Started</a></li>
</ul>
<h2>Community</h2>
<ul>
<li><a href="http://groups.google.com/group/nanoc/">Discussion Group</a></li>
<li><a href="irc://chat.freenode.net/#nanoc">IRC Channel</a></li>
<li><a href="http://github.com/nanoc/nanoc/wiki/">Wiki</a></li>
</ul>
</div>
</body>
</html>

13
layouts/post.html Normal file
View File

@ -0,0 +1,13 @@
<% render 'default' do %>
<div class='post'>
<h1><%= item[:title] %></h1>
<aside>
Posted on <%= get_pretty_date(item) %>
<br />
Tagged with <%= get_tags(item) %>.
</aside>
<artcle>
<%= yield %>
</article>
</div>
<% end %>

20
lib/default.rb Normal file
View File

@ -0,0 +1,20 @@
include Nanoc3::Helpers::Blogging
include Nanoc3::Helpers::Tagging
include Nanoc3::Helpers::Rendering
include Nanoc3::Helpers::LinkTo
module PostHelper
def get_pretty_date(post)
attribute_to_time(post[:created_at]).strftime('%B %-d, %Y')
end
def get_tags(post)
if post[:tags].nil? || post[:tags].empty?
"(not tagged)"
else
post[:tags].map { |tag| tag.downcase }.sort.join(", ")
end
end
end
include PostHelper

82
nanoc.yaml Normal file
View File

@ -0,0 +1,82 @@
# A list of file extensions that nanoc will consider to be textual rather than
# binary. If an item with an extension not in this list is found, the file
# will be considered as binary.
text_extensions: [ 'coffee', 'css', 'erb', 'haml', 'handlebars', 'hb', 'htm', 'html', 'js', 'less', 'markdown', 'md', 'ms', 'mustache', 'php', 'rb', 'sass', 'scss', 'txt', 'xhtml', 'xml' ]
# The path to the directory where all generated files will be written to. This
# can be an absolute path starting with a slash, but it can also be path
# relative to the site directory.
output_dir: output
# A list of index filenames, i.e. names of files that will be served by a web
# server when a directory is requested. Usually, index files are named
# “index.html”, but depending on the web server, this may be something else,
# such as “default.htm”. This list is used by nanoc to generate pretty URLs.
index_filenames: [ 'index.html' ]
# Whether or not to generate a diff of the compiled content when compiling a
# site. The diff will contain the differences between the compiled content
# before and after the last site compilation.
enable_output_diff: false
base_url: http://ariejan.net
title: 'ariejan.net'
author_name: 'Ariejan de Vroom'
author_uri: 'http://ariejan.net'
prune:
# Whether to automatically remove files not managed by nanoc from the output
# directory. For safety reasons, this is turned off by default.
auto_prune: true
# Which files and directories you want to exclude from pruning. If you version
# your output directory, you should probably exclude VCS directories such as
# .git, .svn etc.
exclude: [ '.git', '.hg', '.svn', 'CVS' ]
# The data sources where nanoc loads its data from. This is an array of
# hashes; each array element represents a single data source. By default,
# there is only a single data source that reads data from the “content/” and
# “layout/” directories in the site directory.
data_sources:
-
# The type is the identifier of the data source. By default, this will be
# `filesystem_unified`.
type: filesystem_unified
# The path where items should be mounted (comparable to mount points in
# Unix-like systems). This is “/” by default, meaning that items will have
# “/” prefixed to their identifiers. If the items root were “/en/”
# instead, an item at content/about.html would have an identifier of
# “/en/about/” instead of just “/about/”.
items_root: /
# The path where layouts should be mounted. The layouts root behaves the
# same as the items root, but applies to layouts rather than items.
layouts_root: /
# Whether to allow periods in identifiers. When turned off, everything
# past the first period is considered to be the extension, and when
# turned on, only the characters past the last period are considered to
# be the extension. For example, a file named “content/about.html.erb”
# will have the identifier “/about/” when turned off, but when turned on
# it will become “/about.html/” instead.
allow_periods_in_identifiers: false
# Configuration for the “watch” command, which watches a site for changes and
# recompiles if necessary.
watcher:
# A list of directories to watch for changes. When editing this, make sure
# that the “output/” and “tmp/” directories are _not_ included in this list,
# because recompiling the site will cause these directories to change, which
# will cause the site to be recompiled, which will cause these directories
# to change, which will cause the site to be recompiled again, and so on.
dirs_to_watch: [ 'content', 'layouts', 'lib' ]
# A list of single files to watch for changes. As mentioned above, dont put
# any files from the “output/” or “tmp/” directories in here.
files_to_watch: [ 'nanoc.yaml', 'Rules' ]
# When to send notifications (using Growl or notify-send).
notify_on_compilation_success: true
notify_on_compilation_failure: true