henshin 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/.yardoc/checksums +12 -0
- data/.yardoc/objects/Hash.dat +0 -0
- data/.yardoc/objects/Hash/to_options_i.dat +0 -0
- data/.yardoc/objects/Henshin.dat +0 -0
- data/.yardoc/objects/Henshin/CSSGenerator.dat +0 -0
- data/.yardoc/objects/Henshin/CSSGenerator/generate_i.dat +0 -0
- data/.yardoc/objects/Henshin/Defaults.dat +0 -0
- data/.yardoc/objects/Henshin/Gen.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/config_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/config_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/content_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/content_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/date_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/date_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/extension_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/extension_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/initialize_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/layout_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/layout_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/override_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/path_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/path_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/payload_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/process_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/read_yaml_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/render_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/site_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/site_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/title_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/title_i.dat +0 -0
- data/.yardoc/objects/Henshin/Gen/write_i.dat +0 -0
- data/.yardoc/objects/Henshin/HTMLGenerator.dat +0 -0
- data/.yardoc/objects/Henshin/HTMLGenerator/generate_i.dat +0 -0
- data/.yardoc/objects/Henshin/JSGenerator.dat +0 -0
- data/.yardoc/objects/Henshin/JSGenerator/generate_i.dat +0 -0
- data/.yardoc/objects/Henshin/LayoutParser.dat +0 -0
- data/.yardoc/objects/Henshin/LayoutParser/generate_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post.dat +0 -0
- data/.yardoc/objects/Henshin/Post/author_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/author_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/category_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/category_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/date_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/date_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/initialize_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/override_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/payload_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/permalink_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/process_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/read_name_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/read_yaml_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/tags_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/tags_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/title_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/title_i.dat +0 -0
- data/.yardoc/objects/Henshin/Post/write_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site.dat +0 -0
- data/.yardoc/objects/Henshin/Site/archives_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/archives_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/categories_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/categories_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/config_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/config_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/gens_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/gens_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/initialize_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/layouts_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/layouts_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/payload_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/plugins_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/plugins_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/posts_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/posts_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/process_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/read_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/read_layouts_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/read_others_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/read_posts_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/render_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/reset_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/statics_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/statics_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/tags_3D_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/tags_i.dat +0 -0
- data/.yardoc/objects/Henshin/Site/write_i.dat +0 -0
- data/.yardoc/objects/Henshin/StandardPlugin.dat +0 -0
- data/.yardoc/objects/Henshin/configure_c.dat +0 -0
- data/.yardoc/objects/Henshin/extensions_c.dat +0 -0
- data/.yardoc/objects/Henshin/load_plugins_c.dat +0 -0
- data/.yardoc/objects/LiquidPlugin.dat +0 -0
- data/.yardoc/objects/LiquidPlugin/extensions_3D_i.dat +0 -0
- data/.yardoc/objects/LiquidPlugin/extensions_i.dat +0 -0
- data/.yardoc/objects/LiquidPlugin/generate_i.dat +0 -0
- data/.yardoc/objects/LiquidPlugin/initialize_i.dat +0 -0
- data/.yardoc/objects/LiquidPlugin/read_i.dat +0 -0
- data/.yardoc/objects/MarukuPlugin.dat +0 -0
- data/.yardoc/objects/MarukuPlugin/extensions_3D_i.dat +0 -0
- data/.yardoc/objects/MarukuPlugin/extensions_i.dat +0 -0
- data/.yardoc/objects/MarukuPlugin/generate_i.dat +0 -0
- data/.yardoc/objects/MarukuPlugin/initialize_i.dat +0 -0
- data/.yardoc/objects/PygmentsPlugin.dat +0 -0
- data/.yardoc/objects/PygmentsPlugin/extensions_3D_i.dat +0 -0
- data/.yardoc/objects/PygmentsPlugin/extensions_i.dat +0 -0
- data/.yardoc/objects/PygmentsPlugin/generate_i.dat +0 -0
- data/.yardoc/objects/PygmentsPlugin/initialize_i.dat +0 -0
- data/.yardoc/objects/SassPlugin.dat +0 -0
- data/.yardoc/objects/SassPlugin/extensions_3D_i.dat +0 -0
- data/.yardoc/objects/SassPlugin/extensions_i.dat +0 -0
- data/.yardoc/objects/SassPlugin/generate_i.dat +0 -0
- data/.yardoc/objects/SassPlugin/initialize_i.dat +0 -0
- data/.yardoc/objects/String.dat +0 -0
- data/.yardoc/objects/String/directory_i.dat +0 -0
- data/.yardoc/objects/String/extension_i.dat +0 -0
- data/.yardoc/objects/String/file_name_i.dat +0 -0
- data/.yardoc/objects/String/slugify_i.dat +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +2 -0
- data/LICENSE +20 -0
- data/README.markdown +73 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/bin/henshin +31 -0
- data/doc/Hash.html +179 -0
- data/doc/Henshin.html +479 -0
- data/doc/Henshin/CSSGenerator.html +186 -0
- data/doc/Henshin/Gen.html +1225 -0
- data/doc/Henshin/HTMLGenerator.html +186 -0
- data/doc/Henshin/JSGenerator.html +182 -0
- data/doc/Henshin/LayoutParser.html +186 -0
- data/doc/Henshin/Post.html +1159 -0
- data/doc/Henshin/Site.html +1462 -0
- data/doc/Henshin/StandardPlugin.html +99 -0
- data/doc/LiquidPlugin.html +399 -0
- data/doc/MarukuPlugin.html +325 -0
- data/doc/PygmentsPlugin.html +325 -0
- data/doc/SassPlugin.html +325 -0
- data/doc/String.html +371 -0
- data/doc/_index.html +239 -0
- data/doc/class_list.html +36 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +50 -0
- data/doc/css/style.css +273 -0
- data/doc/file.README.html +131 -0
- data/doc/file_list.html +38 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +131 -0
- data/doc/js/app.js +111 -0
- data/doc/js/full_list.js +117 -0
- data/doc/js/jquery.js +19 -0
- data/doc/method_list.html +611 -0
- data/doc/top-level-namespace.html +89 -0
- data/henshin.gemspec +224 -0
- data/lib/henshin.rb +74 -0
- data/lib/henshin/ext.rb +42 -0
- data/lib/henshin/gen.rb +89 -0
- data/lib/henshin/plugin.rb +43 -0
- data/lib/henshin/plugins/liquid.rb +27 -0
- data/lib/henshin/plugins/maruku.rb +16 -0
- data/lib/henshin/plugins/pygments.rb +15 -0
- data/lib/henshin/plugins/sass.rb +16 -0
- data/lib/henshin/post.rb +127 -0
- data/lib/henshin/site.rb +112 -0
- data/test/helper.rb +10 -0
- data/test/site/_site/2010/10/20-testing-stuff/index.html +24 -0
- data/test/site/_site/2010/5/15-lorem-ipsum/index.html +24 -0
- data/test/site/_site/index.html +29 -0
- data/test/site/index.html +12 -0
- data/test/site/layouts/main.html +15 -0
- data/test/site/layouts/post.html +24 -0
- data/test/site/options.yaml +11 -0
- data/test/site/posts/Testing-Stuff.markdown +7 -0
- data/test/site/posts/lorem-ipsum.markdown +7 -0
- data/test/test_henshin.rb +7 -0
- metadata +261 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
module Henshin
|
2
|
+
class StandardPlugin
|
3
|
+
# the main class for plugins to inherit from eg
|
4
|
+
#
|
5
|
+
# class MyPlugin < NoName::StandardPlugin
|
6
|
+
#
|
7
|
+
# or it can inherit a subclass from below
|
8
|
+
end
|
9
|
+
|
10
|
+
class HTMLGenerator < StandardPlugin
|
11
|
+
# a plugin which returns html
|
12
|
+
|
13
|
+
def generate( content )
|
14
|
+
#return html
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class CSSGenerator < StandardPlugin
|
19
|
+
# a plugin which returns css
|
20
|
+
|
21
|
+
def generate( content )
|
22
|
+
#return css
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class JSGenerator < StandardPlugin
|
27
|
+
# a plugin which returns javascript
|
28
|
+
|
29
|
+
def generate( content )
|
30
|
+
#return javascript
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class LayoutParser < StandardPlugin
|
35
|
+
# a plugin which returns html
|
36
|
+
# given a layout and data to insert
|
37
|
+
|
38
|
+
def generate( layout, data )
|
39
|
+
#return html
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'henshin/plugin'
|
2
|
+
require 'liquid'
|
3
|
+
|
4
|
+
class LiquidPlugin < Henshin::LayoutParser
|
5
|
+
|
6
|
+
attr_accessor :extensions
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@extensions = ['html']
|
10
|
+
end
|
11
|
+
|
12
|
+
def generate( layout, data )
|
13
|
+
t = Liquid::Template.parse( read(layout) )
|
14
|
+
t.render(data)
|
15
|
+
end
|
16
|
+
|
17
|
+
# returns the layout as a string
|
18
|
+
def read( file )
|
19
|
+
f = File.open(file, "r")
|
20
|
+
r = ""
|
21
|
+
f.each do |l|
|
22
|
+
r << l
|
23
|
+
end
|
24
|
+
r
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'henshin/plugin'
|
2
|
+
require 'maruku'
|
3
|
+
|
4
|
+
class MarukuPlugin < Henshin::HTMLGenerator
|
5
|
+
|
6
|
+
attr_accessor :extensions
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@extensions = ['markdown', 'mkdwn', 'md']
|
10
|
+
end
|
11
|
+
|
12
|
+
def generate( content )
|
13
|
+
Maruku.new(content).to_html
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'henshin/plugin'
|
2
|
+
require 'sass'
|
3
|
+
|
4
|
+
class SassPlugin < Henshin::CSSGenerator
|
5
|
+
|
6
|
+
attr_accessor :extensions
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@extensions = ['sass', 'scss']
|
10
|
+
end
|
11
|
+
|
12
|
+
def generate( content )
|
13
|
+
# need to override this
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
data/lib/henshin/post.rb
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
module Henshin
|
2
|
+
|
3
|
+
class Post < Gen
|
4
|
+
|
5
|
+
attr_accessor :title, :author, :tags, :category, :date
|
6
|
+
|
7
|
+
def initialize( path, site )
|
8
|
+
@path = path
|
9
|
+
@site = site
|
10
|
+
@config = site.config
|
11
|
+
@extension = path.extension
|
12
|
+
@layout = site.layouts[ site.config[:layout] ]
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
##
|
17
|
+
# Processes the file
|
18
|
+
def process
|
19
|
+
self.read_name
|
20
|
+
self.read_yaml
|
21
|
+
end
|
22
|
+
|
23
|
+
# Reads the filename and extracts information from it
|
24
|
+
def read_name
|
25
|
+
parser = {'title' => '([a-zA-Z0-9 ]+)',
|
26
|
+
'title-with-dashes' => '([a-zA-Z0-9-]+)',
|
27
|
+
'date' => '(\d{4}-\d{2}-\d{2})',
|
28
|
+
'date-time' => '(\d{4}-\d{2}-\d{2} at \d{2}:\d{2})',
|
29
|
+
'xml-date-time' => '(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?((\+|-)\d{2}:\d{2})?)',
|
30
|
+
'extension' => "(#{ site.config[:extensions].join('|') })"}
|
31
|
+
|
32
|
+
file_parser = config[:file_name]
|
33
|
+
# create string regex and keep order of info
|
34
|
+
data_order = []
|
35
|
+
m = file_parser.gsub(/\{([a-z-]+)\}/) do
|
36
|
+
data_order << $1
|
37
|
+
parser[$1]
|
38
|
+
end
|
39
|
+
# convert string to actual regex
|
40
|
+
matcher = Regexp.new(m)
|
41
|
+
|
42
|
+
override = {}
|
43
|
+
# extract data from filename
|
44
|
+
file_data = path.file_name.match( matcher ).captures
|
45
|
+
file_data.each_with_index do |data, i|
|
46
|
+
if data_order[i].include? 'title'
|
47
|
+
if data_order[i].include? 'dashes'
|
48
|
+
override[:title] = data.gsub(/-/, ' ')
|
49
|
+
else
|
50
|
+
override[:title] = data
|
51
|
+
end
|
52
|
+
elsif data_order[i].include? 'date'
|
53
|
+
override[:date] = data
|
54
|
+
elsif data_order[i].include? 'extension'
|
55
|
+
override[:extension] = data
|
56
|
+
end
|
57
|
+
end
|
58
|
+
self.override( override )
|
59
|
+
end
|
60
|
+
|
61
|
+
# Reads the files yaml frontmatter and uses it to override some settings, then grabs content
|
62
|
+
def read_yaml
|
63
|
+
file = File.read(self.path)
|
64
|
+
|
65
|
+
if file =~ /^(---\s*\n.*?\n?^---\s*$\n?)/m
|
66
|
+
override = YAML.load_file(@path).to_options
|
67
|
+
self.override(override)
|
68
|
+
@content = file[$1.size..-1]
|
69
|
+
else
|
70
|
+
@content = file
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# Uses the loaded data to override settings
|
75
|
+
#
|
76
|
+
# @param [Hash] override data to override settings with
|
77
|
+
def override( override )
|
78
|
+
@title ||= override[:title]
|
79
|
+
@layout ||= @site.layouts[ override[:layout] ]
|
80
|
+
@date ||= Time.parse( override[:date] ) unless override[:date].nil?
|
81
|
+
@tags ||= override[:tags]
|
82
|
+
@category ||= override[:category]
|
83
|
+
@author ||= override[:author]
|
84
|
+
@extension ||= override[:extension]
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
# Creates the data to be sent to the layout engine
|
89
|
+
#
|
90
|
+
# @return [Hash] the payload for the layout engine
|
91
|
+
def payload
|
92
|
+
{
|
93
|
+
'yield' => @content,
|
94
|
+
'site' => @site.payload['site'],
|
95
|
+
'post' => {'title' => @title,
|
96
|
+
'author' => @author,
|
97
|
+
'date' => @date,
|
98
|
+
'tags' => @tags,
|
99
|
+
'category' => @category}
|
100
|
+
}
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
##
|
105
|
+
# Writes the file to the correct place
|
106
|
+
def write
|
107
|
+
write_path = File.join( config[:root], config[:target], permalink )
|
108
|
+
FileUtils.mkdir_p File.join( write_path.directory )
|
109
|
+
file = File.new( File.join( write_path ), "w" )
|
110
|
+
file.puts( @content )
|
111
|
+
end
|
112
|
+
|
113
|
+
# Creates the permalink for the post
|
114
|
+
def permalink
|
115
|
+
partials = {'year' => self.date.year,
|
116
|
+
'month' => self.date.month,
|
117
|
+
'date' => self.date.day,
|
118
|
+
'title' => self.title.slugify}
|
119
|
+
|
120
|
+
config[:permalink].gsub(/\{([a-z-]+)\}/) do
|
121
|
+
partials[$1]
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
data/lib/henshin/site.rb
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
module Henshin
|
2
|
+
|
3
|
+
class Site
|
4
|
+
|
5
|
+
attr_accessor :posts, :gens, :statics, :archives, :tags, :categories, :plugins
|
6
|
+
attr_accessor :layouts, :config
|
7
|
+
|
8
|
+
def initialize( config )
|
9
|
+
self.reset
|
10
|
+
@config = config
|
11
|
+
end
|
12
|
+
|
13
|
+
# Resets everything
|
14
|
+
def reset
|
15
|
+
@posts = []
|
16
|
+
@gens = []
|
17
|
+
@statics = []
|
18
|
+
@archives = {}
|
19
|
+
@tags = {}
|
20
|
+
@categories = {}
|
21
|
+
@layouts = {}
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
##
|
26
|
+
# Reads all necessary files and puts them into the necessary arrays
|
27
|
+
#
|
28
|
+
def read
|
29
|
+
self.read_layouts
|
30
|
+
self.read_posts
|
31
|
+
self.read_others
|
32
|
+
end
|
33
|
+
|
34
|
+
# Adds all items in 'layouts' to the layouts array
|
35
|
+
def read_layouts
|
36
|
+
path = File.join(config[:root], 'layouts')
|
37
|
+
Dir.glob(path + '/*.*').each do |layout|
|
38
|
+
layout =~ /([a-zA-Z0-9 _-]+)\.([a-zA-Z0-9-]+)/
|
39
|
+
@layouts[$1] = layout
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# Adds all items in 'posts' to the posts array
|
44
|
+
def read_posts
|
45
|
+
path = File.join(config[:root], 'posts')
|
46
|
+
Dir.glob(path + '/*.*').each do |post|
|
47
|
+
# should really create a new post object but I haven't made one yet
|
48
|
+
@posts << Post.new(post, self)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Gets all other items, and determines whether it's static or needs to be converted
|
53
|
+
def read_others
|
54
|
+
path = File.join(config[:root], '**', '*.*')
|
55
|
+
items = Dir.glob(path)
|
56
|
+
items = items.select {|i| !i.include?(config[:root] + '/_site')}
|
57
|
+
|
58
|
+
gens = items.select {|i| config[:extensions].include?(i.extension)}
|
59
|
+
gens -= @posts.collect {|i| i.path}
|
60
|
+
gens -= @layouts.collect {|k, v| v}
|
61
|
+
|
62
|
+
gens.each do |g|
|
63
|
+
@gens << Gen.new(g, self)
|
64
|
+
end
|
65
|
+
|
66
|
+
static = items - @gens
|
67
|
+
static.each do |s|
|
68
|
+
#@statics << Static.new(s, self)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
##
|
74
|
+
# Processes all of the necessary files
|
75
|
+
def process
|
76
|
+
@posts.each {|p| p.process}
|
77
|
+
@gens.each {|g| g.process}
|
78
|
+
#@static.each {|s| s.process}
|
79
|
+
end
|
80
|
+
|
81
|
+
# Creates the data to be sent to the layout engine
|
82
|
+
#
|
83
|
+
# @return [Hash] the payload for the layout engine
|
84
|
+
def payload
|
85
|
+
{'site' => {'author' => self.config[:author],
|
86
|
+
'title' => self.config[:title],
|
87
|
+
'description' => self.config[:description],
|
88
|
+
'time_zone' => self.config[:time_zone],
|
89
|
+
'created_at' => Time.now} }
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
##
|
94
|
+
# Renders the files
|
95
|
+
def render
|
96
|
+
@posts.each {|p| p.render}
|
97
|
+
@gens.each {|g| g.render}
|
98
|
+
#@static.each {|s| s.render}
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
##
|
103
|
+
# Writes the files
|
104
|
+
def write
|
105
|
+
@posts.each {|p| p.write}
|
106
|
+
@gens.each {|g| g.write}
|
107
|
+
#@static.each {|s| s.write}
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8" />
|
5
|
+
<title></title>
|
6
|
+
<link rel="stylesheet" href="" type="text/css" />
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
|
10
|
+
<header>
|
11
|
+
<h1>Testing Stuff</h1>
|
12
|
+
<time>2010-10-20 17:33:23 +0100</time>
|
13
|
+
<ul>
|
14
|
+
<li>tags</li>
|
15
|
+
<li>should</li>
|
16
|
+
<li>be loopable</li>
|
17
|
+
</ul>
|
18
|
+
</header>
|
19
|
+
|
20
|
+
<p>So Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
21
|
+
|
22
|
+
<span>Copyright © </span>
|
23
|
+
</body>
|
24
|
+
</html>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8" />
|
5
|
+
<title></title>
|
6
|
+
<link rel="stylesheet" href="" type="text/css" />
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
|
10
|
+
<header>
|
11
|
+
<h1>lorem ipsum</h1>
|
12
|
+
<time>2010-05-15 13:23:47 +0100</time>
|
13
|
+
<ul>
|
14
|
+
<li>tags</li>
|
15
|
+
<li>should</li>
|
16
|
+
<li>be loopable</li>
|
17
|
+
</ul>
|
18
|
+
</header>
|
19
|
+
|
20
|
+
<p>So Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
21
|
+
|
22
|
+
<span>Copyright © </span>
|
23
|
+
</body>
|
24
|
+
</html>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8" />
|
5
|
+
<title></title>
|
6
|
+
<link rel="stylesheet" href="" type="text/css" />
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
|
10
|
+
<header>
|
11
|
+
<h1></h1>
|
12
|
+
<time></time>
|
13
|
+
<ul>
|
14
|
+
<li>tags</li>
|
15
|
+
<li>should</li>
|
16
|
+
<li>be loopable</li>
|
17
|
+
</ul>
|
18
|
+
</header>
|
19
|
+
|
20
|
+
<header>
|
21
|
+
<h1>Joshua Hawxwell</h1>
|
22
|
+
</header>
|
23
|
+
|
24
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
25
|
+
|
26
|
+
|
27
|
+
<span>Copyright © </span>
|
28
|
+
</body>
|
29
|
+
</html>
|