jekyll 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of jekyll might be problematic. Click here for more details.

@@ -1,3 +1,12 @@
1
+ == 0.1.3 /
2
+ * Major Features
3
+ * Markdown support [github.com/vanpelt]
4
+ * Mephisto and CSV converters [github.com/vanpelt]
5
+ * Code hilighting [github.com/vanpelt]
6
+ * Autobuild
7
+ * Bug Fixes
8
+ * Accept both \r\n and \n in YAML header [github.com/vanpelt]
9
+
1
10
  == 0.1.2 / 2008-11-22
2
11
  * Major Features
3
12
  * Add a real "related posts" implementation using Classifier
@@ -6,15 +6,14 @@ bin/jekyll
6
6
  jekyll.gemspec
7
7
  lib/jekyll.rb
8
8
  lib/jekyll/convertible.rb
9
+ lib/jekyll/converters/csv.rb
10
+ lib/jekyll/converters/mephisto.rb
9
11
  lib/jekyll/filters.rb
12
+ lib/jekyll/blocks.rb
10
13
  lib/jekyll/layout.rb
11
14
  lib/jekyll/page.rb
12
15
  lib/jekyll/post.rb
13
16
  lib/jekyll/site.rb
14
- test/dest/2008/10/18/foo-bar.html
15
- test/dest/2008/11/21/complex.html
16
- test/dest/css/screen.css
17
- test/dest/index.html
18
17
  test/helper.rb
19
18
  test/source/_layouts/default.html
20
19
  test/source/_layouts/simple.html
@@ -27,18 +27,48 @@ My own personal site/blog is generated with Jekyll.
27
27
  The proto-site repo ("http://github.com/mojombo/tpw":http://github.com/mojombo/tpw)
28
28
  is converted into the actual site ("http://tom.preston-werner.com/":http://tom.preston-werner.com)
29
29
 
30
- h2. Install and Run
30
+ h2. Install
31
31
 
32
- This is beta software. You will need to download the source
33
- and run the software from there.
32
+ The best way to install Jekyll is via RubyGems:
34
33
 
35
- $ sudo gem install RedCloth
36
- $ sudo gem install liquid
37
- $ sudo gem install classifier
34
+ $ sudo gem install jekyll
35
+
36
+ h2. Run
37
+
38
+ $ cd /path/to/proto/site
39
+ $ jekyll
40
+
41
+ This will generate the site and place it in /path/to/proto/site/_site. There is an autobuild feature that will regenerate your site if any of the files change:
42
+
43
+ $ jekyll --auto
44
+
45
+ If you'd like the generated site placed somewhere else:
46
+
47
+ $ jekyll /path/to/place/generated/site
48
+
49
+ And if you don't want to be in the proto site root to run Jekyll:
50
+
51
+ $ jekyll /path/to/proto/site /path/to/place/generated/site
38
52
 
53
+ The autobuid feature can be used on any of the invocations.
54
+
55
+ h2. Contribute
56
+
57
+ If you'd like to hack on Jekyll, grab the source from GitHub. To get
58
+ all of the dependencies, install the gem first.
59
+
39
60
  $ git clone git://github.com/mojombo/jekyll
40
- $ cd jekyll
41
- $ bin/jekyll /path/to/proto/site /path/to/place/generated/site
61
+
62
+ The best way to get your changes merged back into core is as follows:
63
+
64
+ # Fork mojombo/jekyll on GitHub
65
+ # Clone down your fork
66
+ # Create a topic branch to contain your change
67
+ # Hack away
68
+ # Do not change the version number, I will do that on my end
69
+ # If necessary, rebase your commits into logical chunks, without errors
70
+ # Push the branch up to GitHub
71
+ # Send me (mojombo) a pull request for your branch
42
72
 
43
73
  h2. License
44
74
 
data/Rakefile CHANGED
@@ -3,13 +3,19 @@ require 'hoe'
3
3
  require 'lib/jekyll'
4
4
 
5
5
  Hoe.new('jekyll', Jekyll::VERSION) do |p|
6
- # p.rubyforge_name = 'jekyllx' # if different than lowercase project name
7
6
  p.developer('Tom Preston-Werner', 'tom@mojombo.com')
8
7
  p.summary = "Jekyll is a simple, blog aware, static site generator."
9
- p.extra_deps = ['RedCloth', 'liquid', 'classifier']
8
+ p.extra_deps = ['RedCloth', 'liquid', 'classifier', 'rdiscount', 'directory_watcher']
10
9
  end
11
10
 
12
11
  desc "Open an irb session preloaded with this library"
13
12
  task :console do
14
13
  sh "irb -rubygems -r ./lib/jekyll.rb"
15
14
  end
15
+
16
+ namespace :convert do
17
+ desc "Migrate from mephisto in the current directory"
18
+ task :mephisto do
19
+ sh %q(ruby -r './lib/jekyll/converters/mephisto' -e 'Jekyll::Mephisto.postgres(:database => "#{ENV["DB"]}")')
20
+ end
21
+ end
data/bin/jekyll CHANGED
@@ -2,20 +2,71 @@
2
2
 
3
3
  $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
4
4
 
5
+ require 'optparse'
5
6
  require 'jekyll'
6
7
 
8
+ options = {}
9
+
10
+ opts = OptionParser.new do |opts|
11
+ opts.banner = DATA.read
12
+
13
+ opts.on("--auto", "Auto-regenerate") do
14
+ options[:auto] = true
15
+ end
16
+ end
17
+
18
+ opts.parse!
19
+
20
+ def clean(dest)
21
+ FileUtils.rm_rf(dest)
22
+ FileUtils.mkdir_p(dest)
23
+ end
24
+
25
+ def globs(source)
26
+ Dir.chdir(source) do
27
+ dirs = Dir['*'].select { |x| File.directory?(x) }
28
+ dirs -= ['_site']
29
+ dirs = dirs.map { |x| "#{x}/**/*" }
30
+ dirs += ['*']
31
+ end
32
+ end
33
+
34
+ source = nil
35
+ destination = nil
36
+
7
37
  case ARGV.size
8
38
  when 0
9
- dest = File.join('.', '_site')
10
- FileUtils.rm_rf(dest)
11
- FileUtils.mkdir_p(dest)
12
- Jekyll.process('.', dest)
39
+ source = '.'
40
+ destination = File.join('.', '_site')
13
41
  when 1
14
- Jekyll.process('.', ARGV[0])
42
+ source = '.'
43
+ destination = ARGV[0]
15
44
  when 2
16
- Jekyll.process(ARGV[0], ARGV[1])
45
+ source = ARGV[0]
46
+ destination = ARGV[1]
17
47
  else
18
- puts DATA.read
48
+ puts "Invalid options. Run `jekyll --help` for assistance."
49
+ exit(1)
50
+ end
51
+
52
+ if options[:auto]
53
+ puts "Auto-regenerating enabled: #{source} -> #{destination}"
54
+
55
+ dw = DirectoryWatcher.new(source)
56
+ dw.interval = 1
57
+ dw.glob = globs(source)
58
+
59
+ dw.add_observer do |*args|
60
+ t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
61
+ puts "[#{t}] regeneration: #{args.size} files changed"
62
+ Jekyll.process(source, destination)
63
+ end
64
+
65
+ dw.start
66
+
67
+ loop { sleep 1000 }
68
+ else
69
+ Jekyll.process(source, destination)
19
70
  end
20
71
 
21
72
  __END__
@@ -24,4 +75,6 @@ Jekyll is a blog-aware, static site generator.
24
75
  Basic Command Line Usage:
25
76
  jekyll # . -> ./_site
26
77
  jekyll <path to write generated site> # . -> <path>
27
- jekyll <path to source> <path to write generated site> # <path> -> <path>
78
+ jekyll <path to source> <path to write generated site> # <path> -> <path>
79
+
80
+ Options:
@@ -1,15 +1,15 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{jekyll}
3
- s.version = "0.1.2"
3
+ s.version = "0.1.3"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
6
  s.authors = ["Tom Preston-Werner"]
7
- s.date = %q{2008-11-22}
7
+ s.date = %q{2008-12-06}
8
8
  s.default_executable = %q{jekyll}
9
9
  s.email = ["tom@mojombo.com"]
10
10
  s.executables = ["jekyll"]
11
11
  s.extra_rdoc_files = ["History.txt", "Manifest.txt"]
12
- s.files = ["History.txt", "Manifest.txt", "README.textile", "Rakefile", "bin/jekyll", "jekyll.gemspec", "lib/jekyll.rb", "lib/jekyll/convertible.rb", "lib/jekyll/filters.rb", "lib/jekyll/layout.rb", "lib/jekyll/page.rb", "lib/jekyll/post.rb", "lib/jekyll/site.rb", "test/dest/2008/10/18/foo-bar.html", "test/dest/2008/11/21/complex.html", "test/dest/css/screen.css", "test/dest/index.html", "test/helper.rb", "test/source/_layouts/default.html", "test/source/_layouts/simple.html", "test/source/_posts/2008-10-18-foo-bar.textile", "test/source/_posts/2008-11-21-complex.textile", "test/source/css/screen.css", "test/source/index.html", "test/suite.rb", "test/test_jekyll.rb", "test/test_post.rb", "test/test_site.rb"]
12
+ s.files = ["History.txt", "Manifest.txt", "README.textile", "Rakefile", "bin/jekyll", "jekyll.gemspec", "lib/jekyll.rb", "lib/jekyll/convertible.rb", "lib/jekyll/converters/csv.rb", "lib/jekyll/converters/mephisto.rb", "lib/jekyll/filters.rb", "lib/jekyll/blocks.rb", "lib/jekyll/layout.rb", "lib/jekyll/page.rb", "lib/jekyll/post.rb", "lib/jekyll/site.rb", "test/helper.rb", "test/source/_layouts/default.html", "test/source/_layouts/simple.html", "test/source/_posts/2008-10-18-foo-bar.textile", "test/source/_posts/2008-11-21-complex.textile", "test/source/css/screen.css", "test/source/index.html", "test/suite.rb", "test/test_jekyll.rb", "test/test_post.rb", "test/test_site.rb"]
13
13
  s.has_rdoc = true
14
14
  s.rdoc_options = ["--main", "README.txt"]
15
15
  s.require_paths = ["lib"]
@@ -26,17 +26,23 @@ Gem::Specification.new do |s|
26
26
  s.add_runtime_dependency(%q<RedCloth>, [">= 0"])
27
27
  s.add_runtime_dependency(%q<liquid>, [">= 0"])
28
28
  s.add_runtime_dependency(%q<classifier>, [">= 0"])
29
+ s.add_runtime_dependency(%q<rdiscount>, [">= 0"])
30
+ s.add_runtime_dependency(%q<directory_watcher>, [">= 0"])
29
31
  s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
30
32
  else
31
33
  s.add_dependency(%q<RedCloth>, [">= 0"])
32
34
  s.add_dependency(%q<liquid>, [">= 0"])
33
35
  s.add_dependency(%q<classifier>, [">= 0"])
36
+ s.add_dependency(%q<rdiscount>, [">= 0"])
37
+ s.add_dependency(%q<directory_watcher>, [">= 0"])
34
38
  s.add_dependency(%q<hoe>, [">= 1.8.0"])
35
39
  end
36
40
  else
37
41
  s.add_dependency(%q<RedCloth>, [">= 0"])
38
42
  s.add_dependency(%q<liquid>, [">= 0"])
39
43
  s.add_dependency(%q<classifier>, [">= 0"])
44
+ s.add_dependency(%q<rdiscount>, [">= 0"])
45
+ s.add_dependency(%q<directory_watcher>, [">= 0"])
40
46
  s.add_dependency(%q<hoe>, [">= 1.8.0"])
41
47
  end
42
48
  end
@@ -12,7 +12,9 @@ require 'time'
12
12
  # 3rd party
13
13
  require 'liquid'
14
14
  require 'redcloth'
15
+ require 'rdiscount' rescue puts "The rdiscount gem is required for markdown support!"
15
16
  require 'classifier'
17
+ require 'directory_watcher'
16
18
 
17
19
  # internal requires
18
20
  require 'jekyll/site'
@@ -21,9 +23,10 @@ require 'jekyll/layout'
21
23
  require 'jekyll/page'
22
24
  require 'jekyll/post'
23
25
  require 'jekyll/filters'
26
+ require 'jekyll/blocks'
24
27
 
25
28
  module Jekyll
26
- VERSION = '0.1.2'
29
+ VERSION = '0.1.3'
27
30
 
28
31
  def self.process(source, dest)
29
32
  Jekyll::Site.new(source, dest).process
@@ -0,0 +1,22 @@
1
+ module Jekyll
2
+ class Highlight < Liquid::Block
3
+ include Liquid::StandardFilters
4
+
5
+ def initialize(tag_name, lang, tokens)
6
+ super
7
+ @lang = lang.strip
8
+ end
9
+
10
+ def render(context)
11
+ #The div is required because RDiscount blows ass
12
+ <<-HTML
13
+ <div>
14
+ <pre>
15
+ <code class='#{@lang}'>#{h(super.to_s).strip}</code>
16
+ </pre>
17
+ </div>
18
+ HTML
19
+ end
20
+ end
21
+ end
22
+ Liquid::Template.register_tag('highlight', Jekyll::Highlight)
@@ -0,0 +1,26 @@
1
+ module Jekyll
2
+ module CSV
3
+ #Reads a csv with title, permalink, body, published_at, and filter.
4
+ #It creates a post file for each row in the csv
5
+ def self.process(file = "posts.csv")
6
+ FileUtils.mkdir_p "_posts"
7
+ posts = 0
8
+ FasterCSV.foreach(file) do |row|
9
+ next if row[0] == "title"
10
+ posts += 1
11
+ name = row[3].split(" ")[0]+"-"+row[1]+(row[4] =~ /markdown/ ? ".markdown" : ".textile")
12
+ File.open("_posts/#{name}", "w") do |f|
13
+ f.puts <<-HEADER
14
+ ---
15
+ layout: post
16
+ title: #{row[0]}
17
+ ---
18
+
19
+ HEADER
20
+ f.puts row[2]
21
+ end
22
+ end
23
+ "Created #{posts} posts!"
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'fastercsv'
3
+ require 'fileutils'
4
+ require File.join(File.dirname(__FILE__),"csv.rb")
5
+ module Jekyll
6
+ module Mephisto
7
+ #Accepts a hash with database config variables, exports mephisto posts into a csv
8
+ #export PGPASSWORD if you must
9
+ def self.postgres(c)
10
+ sql = <<-SQL
11
+ BEGIN;
12
+ CREATE TEMP TABLE jekyll AS
13
+ SELECT title, permalink, body, published_at, filter FROM contents
14
+ WHERE user_id = 1 AND type = 'Article' ORDER BY published_at;
15
+ COPY jekyll TO STDOUT WITH CSV HEADER;
16
+ ROLLBACK;
17
+ SQL
18
+ command = %Q(psql -h #{c[:host] || "localhost"} -c "#{sql.strip}" #{c[:database]} #{c[:username]} -o #{c[:filename] || "posts.csv"})
19
+ puts command
20
+ `#{command}`
21
+ CSV.process
22
+ end
23
+ end
24
+ end
@@ -13,7 +13,7 @@ module Jekyll
13
13
  def read_yaml(base, name)
14
14
  self.content = File.read(File.join(base, name))
15
15
 
16
- if self.content =~ /^(---\n.*?)\n---\n/m
16
+ if self.content =~ /^(---.*\n.*?)\n---.*\n/m
17
17
  self.content = self.content[($1.size + 5)..-1]
18
18
 
19
19
  self.data = YAML.load($1)
@@ -24,9 +24,13 @@ module Jekyll
24
24
  #
25
25
  # Returns nothing
26
26
  def transform
27
- if self.ext == ".textile"
27
+ case self.ext
28
+ when ".textile":
28
29
  self.ext = ".html"
29
30
  self.content = RedCloth.new(self.content).to_html
31
+ when ".markdown":
32
+ self.ext = ".html"
33
+ self.content = RDiscount.new(self.content).to_html
30
34
  end
31
35
  end
32
36
 
@@ -41,6 +45,7 @@ module Jekyll
41
45
 
42
46
  # render content
43
47
  self.content = Liquid::Template.parse(self.content).render(payload, [Jekyll::Filters])
48
+ self.transform
44
49
 
45
50
  # output keeps track of what will finally be written
46
51
  self.output = self.content
@@ -12,6 +12,10 @@ module Jekyll
12
12
  def xml_escape(input)
13
13
  input.gsub("<", "&lt;").gsub(">", "&gt;")
14
14
  end
15
+
16
+ def number_of_words(input)
17
+ input.split.length
18
+ end
15
19
  end
16
20
 
17
21
  end
@@ -21,7 +21,7 @@ module Jekyll
21
21
 
22
22
  self.process(name)
23
23
  self.read_yaml(File.join(base, dir), name)
24
- self.transform
24
+ #self.transform
25
25
  end
26
26
 
27
27
  # Extract information from the post filename
@@ -32,7 +32,8 @@ module Jekyll
32
32
 
33
33
  self.process(name)
34
34
  self.read_yaml(base, name)
35
- self.transform
35
+ #Removed to avoid munging of liquid tags, replaced in convertible.rb#48
36
+ #self.transform
36
37
  end
37
38
 
38
39
  # Spaceship is based on Post#date
@@ -82,8 +83,10 @@ module Jekyll
82
83
  # Returns [<Post>]
83
84
  def related_posts(posts)
84
85
  self.class.lsi ||= begin
86
+ puts "Running the classifier... this could take a while."
85
87
  lsi = Classifier::LSI.new
86
- posts.each { |x| lsi.add_item(x) }
88
+ posts.each { |x| $stdout.print(".");$stdout.flush;lsi.add_item(x) }
89
+ puts ""
87
90
  lsi
88
91
  end
89
92
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Preston-Werner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-22 00:00:00 -08:00
12
+ date: 2008-12-06 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,6 +42,26 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  version: "0"
44
44
  version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rdiscount
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: directory_watcher
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
45
65
  - !ruby/object:Gem::Dependency
46
66
  name: hoe
47
67
  type: :development
@@ -71,15 +91,14 @@ files:
71
91
  - jekyll.gemspec
72
92
  - lib/jekyll.rb
73
93
  - lib/jekyll/convertible.rb
94
+ - lib/jekyll/converters/csv.rb
95
+ - lib/jekyll/converters/mephisto.rb
74
96
  - lib/jekyll/filters.rb
97
+ - lib/jekyll/blocks.rb
75
98
  - lib/jekyll/layout.rb
76
99
  - lib/jekyll/page.rb
77
100
  - lib/jekyll/post.rb
78
101
  - lib/jekyll/site.rb
79
- - test/dest/2008/10/18/foo-bar.html
80
- - test/dest/2008/11/21/complex.html
81
- - test/dest/css/screen.css
82
- - test/dest/index.html
83
102
  - test/helper.rb
84
103
  - test/source/_layouts/default.html
85
104
  - test/source/_layouts/simple.html
@@ -1,28 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
-
4
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
5
- <head>
6
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
- <title>Foo Bar</title>
8
- <meta name="author" content="<%= @page.author %>" />
9
-
10
- <!-- CodeRay syntax highlighting CSS -->
11
- <link rel="stylesheet" href="/css/coderay.css" type="text/css" />
12
-
13
- <!-- Homepage CSS -->
14
- <link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection" />
15
- </head>
16
- <body>
17
-
18
- <div class="site">
19
- <div class="title">
20
- Tom Preston-Werner
21
- </div>
22
-
23
- <h1>Foo Bar</h1>
24
- <p>Best <strong>post</strong> ever</p>
25
- </div>
26
-
27
- </body>
28
- </html>
@@ -1,29 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
-
4
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
5
- <head>
6
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
- <title>Complex</title>
8
- <meta name="author" content="<%= @page.author %>" />
9
-
10
- <!-- CodeRay syntax highlighting CSS -->
11
- <link rel="stylesheet" href="/css/coderay.css" type="text/css" />
12
-
13
- <!-- Homepage CSS -->
14
- <link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection" />
15
- </head>
16
- <body>
17
-
18
- <div class="site">
19
- <div class="title">
20
- Tom Preston-Werner
21
- </div>
22
-
23
- <p>url: /2008/11/21/complex.html<br />
24
- date: Fri Nov 21 00:00:00 -0800 2008<br />
25
- id: /2008/11/21/complex</p>
26
- </div>
27
-
28
- </body>
29
- </html>
@@ -1,76 +0,0 @@
1
- /*****************************************************************************/
2
- /*
3
- /* Common
4
- /*
5
- /*****************************************************************************/
6
-
7
- /* Global Reset */
8
-
9
- * {
10
- margin: 0;
11
- padding: 0;
12
- }
13
-
14
- html, body {
15
- height: 100%;
16
- }
17
-
18
- body {
19
- background-color: white;
20
- font: 13.34px helvetica, arial, clean, sans-serif;
21
- *font-size: small;
22
- text-align: center;
23
- }
24
-
25
- h1, h2, h3, h4, h5, h6 {
26
- font-size: 100%;
27
- }
28
-
29
- h1 {
30
- margin-bottom: 1em;
31
- }
32
-
33
- p {
34
- margin: 1em 0;
35
- }
36
-
37
- a {
38
- color: #00a;
39
- }
40
-
41
- a:hover {
42
- color: black;
43
- }
44
-
45
- a:visited {
46
- color: #a0a;
47
- }
48
-
49
- table {
50
- font-size: inherit;
51
- font: 100%;
52
- }
53
-
54
- /*****************************************************************************/
55
- /*
56
- /* Site
57
- /*
58
- /*****************************************************************************/
59
-
60
- .site {
61
- font-size: 110%;
62
- text-align: justify;
63
- width: 40em;
64
- margin: 3em auto 2em auto;
65
- line-height: 1.5em;
66
- }
67
-
68
- .title {
69
- color: #a00;
70
- font-weight: bold;
71
- margin-bottom: 2em;
72
- }
73
-
74
- .site .meta {
75
- color: #aaa;
76
- }
@@ -1,36 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
-
4
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
5
- <head>
6
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
- <title>Tom Preston-Werner</title>
8
- <meta name="author" content="<%= @page.author %>" />
9
-
10
- <!-- CodeRay syntax highlighting CSS -->
11
- <link rel="stylesheet" href="/css/coderay.css" type="text/css" />
12
-
13
- <!-- Homepage CSS -->
14
- <link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection" />
15
- </head>
16
- <body>
17
-
18
- <div class="site">
19
- <div class="title">
20
- Tom Preston-Werner
21
- </div>
22
-
23
-
24
- h1. Welcome to my site
25
-
26
- <ul>
27
-
28
- <li>Fri Nov 21 00:00:00 -0800 2008 <a href="/2008/11/21/complex.html">Complex</a></li>
29
-
30
- <li>Sat Oct 18 00:00:00 -0700 2008 <a href="/2008/10/18/foo-bar.html">Foo Bar</a></li>
31
-
32
- </ul>
33
- </div>
34
-
35
- </body>
36
- </html>