gabrielg-jekyll 0.2.2

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.
@@ -0,0 +1,27 @@
1
+ module Jekyll
2
+
3
+ class IncludeTag < Liquid::Tag
4
+ def initialize(tag_name, file, tokens)
5
+ super
6
+ @file = file.strip
7
+ end
8
+
9
+ def render(context)
10
+ if @file !~ /^[a-zA-Z0-9_\/\.-]+$/ || @file =~ /\.\// || @file =~ /\/\./
11
+ return "Include file '#{@file}' contains invalid characters or sequences"
12
+ end
13
+
14
+ Dir.chdir(File.join(Jekyll.source, '_includes')) do
15
+ choices = Dir['**/*'].reject { |x| File.symlink?(x) }
16
+ if choices.include?(@file)
17
+ File.read(@file)
18
+ else
19
+ "Included file '#{@file}' not found in _includes directory"
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ Liquid::Template.register_tag('include', Jekyll::IncludeTag)
@@ -0,0 +1,13 @@
1
+ require File.join(File.dirname(__FILE__), *%w[.. lib jekyll])
2
+
3
+ require 'test/unit'
4
+
5
+ include Jekyll
6
+
7
+ def dest_dir
8
+ File.join(File.dirname(__FILE__), *%w[dest])
9
+ end
10
+
11
+ def clear_dest
12
+ FileUtils.rm_rf(dest_dir)
13
+ end
@@ -0,0 +1,3 @@
1
+ --
2
+ Tom Preston-Werner
3
+ github.com/mojombo
@@ -0,0 +1,27 @@
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>{{ page.title }}</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
+ {{ content }}
24
+ </div>
25
+
26
+ </body>
27
+ </html>
@@ -0,0 +1 @@
1
+ <<< {{ content }} >>>
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: default
3
+ title: Foo Bar
4
+ ---
5
+
6
+ h1. {{ page.title }}
7
+
8
+ Best *post* ever
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: default
3
+ title: Complex
4
+ ---
5
+
6
+ url: {{ page.url }}
7
+ date: {{ page.date }}
8
+ id: {{ page.id }}
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: Post with Permalink
3
+ permalink: my_category/permalinked-post
4
+ ---
5
+
6
+ h1. {{ page.title }}
7
+
8
+
9
+ <p>Best <strong>post</strong> ever</p>
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: default
3
+ title: Include
4
+ ---
5
+
6
+ {% include sig.markdown %}
7
+
8
+ This _is_ cool
@@ -0,0 +1,76 @@
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
+ }
@@ -0,0 +1,12 @@
1
+ ---
2
+ layout: default
3
+ title: Tom Preston-Werner
4
+ ---
5
+
6
+ h1. Welcome to my site
7
+
8
+ <ul>
9
+ {% for post in site.posts %}
10
+ <li>{{ post.date }} <a href="{{ post.url }}">{{ post.title }}</a></li>
11
+ {% endfor %}
12
+ </ul>
@@ -0,0 +1,9 @@
1
+ require 'test/unit'
2
+
3
+ # for some reason these tests fail when run via TextMate
4
+ # but succeed when run on the command line.
5
+
6
+ tests = Dir["#{File.dirname(__FILE__)}/test_*.rb"]
7
+ tests.each do |file|
8
+ require file
9
+ end
File without changes
@@ -0,0 +1,95 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestPost < Test::Unit::TestCase
4
+ def setup
5
+
6
+ end
7
+
8
+ def test_valid
9
+ assert Post.valid?("2008-10-19-foo-bar.textile")
10
+ assert !Post.valid?("blah")
11
+ end
12
+
13
+ def test_process
14
+ p = Post.allocate
15
+ p.process("2008-10-19-foo-bar.textile")
16
+
17
+ assert_equal Time.parse("2008-10-19"), p.date
18
+ assert_equal "foo-bar", p.slug
19
+ assert_equal ".textile", p.ext
20
+ end
21
+
22
+ def test_url
23
+ p = Post.allocate
24
+ p.process("2008-10-19-foo-bar.textile")
25
+
26
+ assert_equal "/2008/10/19/foo-bar.html", p.url
27
+ end
28
+
29
+ def test_permalink
30
+ p = Post.allocate
31
+ p.process("2008-12-03-permalinked-post.textile")
32
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-03-permalinked-post.textile")
33
+
34
+ assert_equal "my_category/permalinked-post", p.permalink
35
+ end
36
+
37
+ def test_dir_respects_permalink
38
+ p = Post.allocate
39
+ p.process("2008-12-03-permalinked-post.textile")
40
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-03-permalinked-post.textile")
41
+
42
+ assert_equal "my_category", p.dir
43
+ end
44
+
45
+ def test_read_yaml
46
+ p = Post.allocate
47
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-10-18-foo-bar.textile")
48
+
49
+ assert_equal({"title" => "Foo Bar", "layout" => "default"}, p.data)
50
+ assert_equal "\nh1. {{ page.title }}\n\nBest *post* ever", p.content
51
+ end
52
+
53
+ def test_transform
54
+ p = Post.allocate
55
+ p.process("2008-10-18-foo-bar.textile")
56
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-10-18-foo-bar.textile")
57
+ p.transform
58
+
59
+ assert_equal "<h1>{{ page.title }}</h1>\n<p>Best <strong>post</strong> ever</p>", p.content
60
+ end
61
+
62
+ def test_add_layout
63
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-10-18-foo-bar.textile")
64
+ layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
65
+ p.add_layout(layouts, {"site" => {"posts" => []}})
66
+
67
+ assert_equal "<<< <h1>Foo Bar</h1>\n<p>Best <strong>post</strong> ever</p> >>>", p.output
68
+ end
69
+
70
+ def test_write
71
+ clear_dest
72
+
73
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-10-18-foo-bar.textile")
74
+ layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
75
+ p.add_layout(layouts, {"site" => {"posts" => []}})
76
+ p.write(dest_dir)
77
+ end
78
+
79
+ def test_data
80
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-11-21-complex.textile")
81
+ layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
82
+ p.add_layout(layouts, {"site" => {"posts" => []}})
83
+
84
+ assert_equal "<<< <p>url: /test/source/2008/11/21/complex.html<br />\ndate: #{Time.parse("2008-11-21")}<br />\nid: /test/source/2008/11/21/complex</p> >>>", p.output
85
+ end
86
+
87
+ def test_include
88
+ Jekyll.source = File.join(File.dirname(__FILE__), *%w[source])
89
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-13-include.markdown")
90
+ layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
91
+ p.add_layout(layouts, {"site" => {"posts" => []}})
92
+
93
+ assert_equal "<<< <hr />\n<p>Tom Preston-Werner github.com/mojombo</p>\n\n<p>This <em>is</em> cool</p> >>>", p.output
94
+ end
95
+ end
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestSite < Test::Unit::TestCase
4
+ def setup
5
+ source = File.join(File.dirname(__FILE__), *%w[source])
6
+ @s = Site.new(source, dest_dir)
7
+ end
8
+
9
+ def test_site_init
10
+
11
+ end
12
+
13
+ def test_read_layouts
14
+ @s.read_layouts
15
+
16
+ assert_equal ["default", "simple"].sort, @s.layouts.keys.sort
17
+ end
18
+
19
+ def test_read_posts
20
+ @s.read_posts(File.join(@s.source, '_posts'))
21
+
22
+ assert_equal 4, @s.posts.size
23
+ end
24
+
25
+ def test_write_posts
26
+ clear_dest
27
+
28
+ @s.process
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gabrielg-jekyll
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Tom Preston-Werner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-15 00:00:00 -08:00
13
+ default_executable: jekyll
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: RedCloth
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: liquid
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "0"
32
+ version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: classifier
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: "0"
41
+ version:
42
+ - !ruby/object:Gem::Dependency
43
+ name: maruku
44
+ version_requirement:
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ - !ruby/object:Gem::Dependency
52
+ name: directory_watcher
53
+ version_requirement:
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
59
+ version:
60
+ - !ruby/object:Gem::Dependency
61
+ name: open4
62
+ version_requirement:
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ version:
69
+ - !ruby/object:Gem::Dependency
70
+ name: hoe
71
+ version_requirement:
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 1.8.0
77
+ version:
78
+ description:
79
+ email:
80
+ - tom@mojombo.com
81
+ executables:
82
+ - jekyll
83
+ extensions: []
84
+
85
+ extra_rdoc_files:
86
+ - History.txt
87
+ - Manifest.txt
88
+ files:
89
+ - History.txt
90
+ - Manifest.txt
91
+ - README.textile
92
+ - Rakefile
93
+ - bin/jekyll
94
+ - jekyll.gemspec
95
+ - lib/jekyll.rb
96
+ - lib/jekyll/albino.rb
97
+ - lib/jekyll/converters/csv.rb
98
+ - lib/jekyll/converters/mephisto.rb
99
+ - lib/jekyll/convertible.rb
100
+ - lib/jekyll/filters.rb
101
+ - lib/jekyll/layout.rb
102
+ - lib/jekyll/page.rb
103
+ - lib/jekyll/post.rb
104
+ - lib/jekyll/site.rb
105
+ - lib/jekyll/tags/highlight.rb
106
+ - lib/jekyll/tags/include.rb
107
+ - test/helper.rb
108
+ - test/source/_includes/sig.markdown
109
+ - test/source/_layouts/default.html
110
+ - test/source/_layouts/simple.html
111
+ - test/source/_posts/2008-10-18-foo-bar.textile
112
+ - test/source/_posts/2008-11-21-complex.textile
113
+ - test/source/_posts/2008-12-13-include.markdown
114
+ - test/source/css/screen.css
115
+ - test/source/index.html
116
+ - test/source/_posts/2008-12-03-permalinked-post.textile
117
+ - test/suite.rb
118
+ - test/test_jekyll.rb
119
+ - test/test_post.rb
120
+ - test/test_site.rb
121
+ has_rdoc: true
122
+ homepage:
123
+ post_install_message:
124
+ rdoc_options:
125
+ - --main
126
+ - README.txt
127
+ require_paths:
128
+ - lib
129
+ required_ruby_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: "0"
134
+ version:
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: "0"
140
+ version:
141
+ requirements: []
142
+
143
+ rubyforge_project: jekyll
144
+ rubygems_version: 1.2.0
145
+ signing_key:
146
+ specification_version: 2
147
+ summary: Jekyll is a simple, blog aware, static site generator.
148
+ test_files:
149
+ - test/test_jekyll.rb
150
+ - test/test_post.rb
151
+ - test/test_site.rb