tsion-jekyll 0.5.5
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.
- data/.gitignore +6 -0
- data/History.txt +151 -0
- data/README.textile +42 -0
- data/Rakefile +92 -0
- data/VERSION.yml +5 -0
- data/bin/jekyll +150 -0
- data/features/create_sites.feature +46 -0
- data/features/embed_filters.feature +60 -0
- data/features/pagination.feature +40 -0
- data/features/permalinks.feature +65 -0
- data/features/post_data.feature +153 -0
- data/features/site_configuration.feature +63 -0
- data/features/site_data.feature +82 -0
- data/features/step_definitions/jekyll_steps.rb +136 -0
- data/features/support/env.rb +16 -0
- data/lib/jekyll.rb +85 -0
- data/lib/jekyll/albino.rb +122 -0
- data/lib/jekyll/converters/csv.rb +26 -0
- data/lib/jekyll/converters/mephisto.rb +79 -0
- data/lib/jekyll/converters/mt.rb +59 -0
- data/lib/jekyll/converters/textpattern.rb +50 -0
- data/lib/jekyll/converters/typo.rb +49 -0
- data/lib/jekyll/converters/wordpress.rb +54 -0
- data/lib/jekyll/convertible.rb +84 -0
- data/lib/jekyll/core_ext.rb +30 -0
- data/lib/jekyll/filters.rb +47 -0
- data/lib/jekyll/layout.rb +36 -0
- data/lib/jekyll/page.rb +112 -0
- data/lib/jekyll/pager.rb +45 -0
- data/lib/jekyll/post.rb +251 -0
- data/lib/jekyll/site.rb +265 -0
- data/lib/jekyll/tags/highlight.rb +56 -0
- data/lib/jekyll/tags/include.rb +31 -0
- data/test/helper.rb +27 -0
- data/test/source/_includes/sig.markdown +3 -0
- data/test/source/_layouts/default.html +27 -0
- data/test/source/_layouts/simple.html +1 -0
- data/test/source/_posts/2008-02-02-not-published.textile +8 -0
- data/test/source/_posts/2008-02-02-published.textile +8 -0
- data/test/source/_posts/2008-10-18-foo-bar.textile +8 -0
- data/test/source/_posts/2008-11-21-complex.textile +8 -0
- data/test/source/_posts/2008-12-03-permalinked-post.textile +9 -0
- data/test/source/_posts/2008-12-13-include.markdown +8 -0
- data/test/source/_posts/2009-01-27-array-categories.textile +10 -0
- data/test/source/_posts/2009-01-27-categories.textile +7 -0
- data/test/source/_posts/2009-01-27-category.textile +7 -0
- data/test/source/_posts/2009-03-12-hash-#1.markdown +6 -0
- data/test/source/_posts/2009-05-18-tag.textile +6 -0
- data/test/source/_posts/2009-05-18-tags.textile +9 -0
- data/test/source/_posts/2009-06-22-empty-yaml.textile +3 -0
- data/test/source/_posts/2009-06-22-no-yaml.textile +1 -0
- data/test/source/about.html +6 -0
- data/test/source/category/_posts/2008-9-23-categories.textile +6 -0
- data/test/source/contacts.html +5 -0
- data/test/source/css/screen.css +76 -0
- data/test/source/foo/_posts/bar/2008-12-12-topical-post.textile +8 -0
- data/test/source/index.html +22 -0
- data/test/source/sitemap.xml +23 -0
- data/test/source/win/_posts/2009-05-24-yaml-linebreak.markdown +7 -0
- data/test/source/z_category/_posts/2008-9-23-categories.textile +6 -0
- data/test/suite.rb +9 -0
- data/test/test_configuration.rb +29 -0
- data/test/test_filters.rb +49 -0
- data/test/test_generated_site.rb +40 -0
- data/test/test_page.rb +98 -0
- data/test/test_pager.rb +47 -0
- data/test/test_post.rb +302 -0
- data/test/test_site.rb +85 -0
- data/test/test_tags.rb +116 -0
- data/tsion-jekyll.gemspec +138 -0
- metadata +193 -0
@@ -0,0 +1,136 @@
|
|
1
|
+
Before do
|
2
|
+
FileUtils.mkdir(TEST_DIR)
|
3
|
+
Dir.chdir(TEST_DIR)
|
4
|
+
end
|
5
|
+
|
6
|
+
After do
|
7
|
+
Dir.chdir(TEST_DIR)
|
8
|
+
FileUtils.rm_rf(TEST_DIR)
|
9
|
+
end
|
10
|
+
|
11
|
+
Given /^I have a blank site in "(.*)"$/ do |path|
|
12
|
+
FileUtils.mkdir(path)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Like "I have a foo file" but gives a yaml front matter so jekyll actually processes it
|
16
|
+
Given /^I have an "(.*)" page(?: with (.*) "(.*)")? that contains "(.*)"$/ do |file, key, value, text|
|
17
|
+
File.open(file, 'w') do |f|
|
18
|
+
f.write <<EOF
|
19
|
+
---
|
20
|
+
#{key || 'layout'}: #{value || 'nil'}
|
21
|
+
---
|
22
|
+
#{text}
|
23
|
+
EOF
|
24
|
+
f.close
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Given /^I have an "(.*)" file that contains "(.*)"$/ do |file, text|
|
29
|
+
File.open(file, 'w') do |f|
|
30
|
+
f.write(text)
|
31
|
+
f.close
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
Given /^I have a (.*) layout that contains "(.*)"$/ do |layout, text|
|
36
|
+
File.open(File.join('_layouts', layout + '.html'), 'w') do |f|
|
37
|
+
f.write(text)
|
38
|
+
f.close
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Given /^I have a (.*) directory$/ do |dir|
|
43
|
+
FileUtils.mkdir(dir)
|
44
|
+
end
|
45
|
+
|
46
|
+
Given /^I have the following posts?(?: (.*) "(.*)")?:$/ do |direction, folder, table|
|
47
|
+
table.hashes.each do |post|
|
48
|
+
date = Date.parse(post['date']).strftime('%Y-%m-%d')
|
49
|
+
title = post['title'].downcase.gsub(/[^\w]/, " ").strip.gsub(/\s+/, '-')
|
50
|
+
|
51
|
+
if direction && direction == "in"
|
52
|
+
before = folder || '.'
|
53
|
+
elsif direction && direction == "under"
|
54
|
+
after = folder || '.'
|
55
|
+
end
|
56
|
+
|
57
|
+
path = File.join(before || '.', '_posts', after || '.', "#{date}-#{title}.#{post['type'] || 'textile'}")
|
58
|
+
|
59
|
+
matter_hash = {}
|
60
|
+
%w(title layout tag tags category categories published author).each do |key|
|
61
|
+
matter_hash[key] = post[key] if post[key]
|
62
|
+
end
|
63
|
+
matter = matter_hash.map { |k, v| "#{k}: #{v}\n" }.join.chomp
|
64
|
+
|
65
|
+
content = post['content']
|
66
|
+
if post['input'] && post['filter']
|
67
|
+
content = "{{ #{post['input']} | #{post['filter']} }}"
|
68
|
+
end
|
69
|
+
|
70
|
+
File.open(path, 'w') do |f|
|
71
|
+
f.write <<EOF
|
72
|
+
---
|
73
|
+
#{matter}
|
74
|
+
---
|
75
|
+
#{content}
|
76
|
+
EOF
|
77
|
+
f.close
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
Given /^I have a configuration file with "(.*)" set to "(.*)"$/ do |key, value|
|
83
|
+
File.open('_config.yml', 'w') do |f|
|
84
|
+
f.write("#{key}: #{value}")
|
85
|
+
f.close
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
Given /^I have a configuration file with "([^\"]*)" set to:$/ do |key, table|
|
90
|
+
File.open('_config.yml', 'w') do |f|
|
91
|
+
f.write("#{key}:\n")
|
92
|
+
table.hashes.each do |row|
|
93
|
+
f.write("- #{row["Value"]}\n")
|
94
|
+
end
|
95
|
+
f.close
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
When /^I run jekyll$/ do
|
101
|
+
run_jekyll
|
102
|
+
end
|
103
|
+
|
104
|
+
When /^I debug jekyll$/ do
|
105
|
+
run_jekyll(:debug => true)
|
106
|
+
end
|
107
|
+
|
108
|
+
When /^I change "(.*)" to contain "(.*)"$/ do |file, text|
|
109
|
+
File.open(file, 'a') do |f|
|
110
|
+
f.write(text)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
Then /^the (.*) directory should exist$/ do |dir|
|
115
|
+
assert File.directory?(dir)
|
116
|
+
end
|
117
|
+
|
118
|
+
Then /^the (.*) file should exist$/ do |file|
|
119
|
+
assert File.file?(file)
|
120
|
+
end
|
121
|
+
|
122
|
+
Then /^I should see "(.*)" in "(.*)"$/ do |text, file|
|
123
|
+
assert_match Regexp.new(text), File.open(file).readlines.join
|
124
|
+
end
|
125
|
+
|
126
|
+
Then /^the "(.*)" file should not exist$/ do |file|
|
127
|
+
assert !File.exists?(file)
|
128
|
+
end
|
129
|
+
|
130
|
+
Then /^I should see today's time in "(.*)"$/ do |file|
|
131
|
+
assert_match Regexp.new(Regexp.escape(Time.now.to_s)), File.open(file).readlines.join
|
132
|
+
end
|
133
|
+
|
134
|
+
Then /^I should see today's date in "(.*)"$/ do |file|
|
135
|
+
assert_match Regexp.new(Date.today.to_s), File.open(file).readlines.join
|
136
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'rr'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
World do
|
6
|
+
include Test::Unit::Assertions
|
7
|
+
end
|
8
|
+
|
9
|
+
TEST_DIR = File.join('/', 'tmp', 'jekyll')
|
10
|
+
JEKYLL_PATH = File.join(ENV['PWD'], 'bin', 'jekyll')
|
11
|
+
|
12
|
+
def run_jekyll(opts = {})
|
13
|
+
command = JEKYLL_PATH
|
14
|
+
command << " >> /dev/null 2>&1" if opts[:debug].nil?
|
15
|
+
system command
|
16
|
+
end
|
data/lib/jekyll.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__) # For use/testing when no gem is installed
|
2
|
+
|
3
|
+
# rubygems
|
4
|
+
require 'rubygems'
|
5
|
+
|
6
|
+
# core
|
7
|
+
require 'fileutils'
|
8
|
+
require 'time'
|
9
|
+
require 'yaml'
|
10
|
+
|
11
|
+
# stdlib
|
12
|
+
|
13
|
+
# 3rd party
|
14
|
+
require 'liquid'
|
15
|
+
require 'redcloth'
|
16
|
+
|
17
|
+
# internal requires
|
18
|
+
require 'jekyll/core_ext'
|
19
|
+
require 'jekyll/pager'
|
20
|
+
require 'jekyll/site'
|
21
|
+
require 'jekyll/convertible'
|
22
|
+
require 'jekyll/layout'
|
23
|
+
require 'jekyll/page'
|
24
|
+
require 'jekyll/post'
|
25
|
+
require 'jekyll/filters'
|
26
|
+
require 'jekyll/tags/highlight'
|
27
|
+
require 'jekyll/tags/include'
|
28
|
+
require 'jekyll/albino'
|
29
|
+
|
30
|
+
module Jekyll
|
31
|
+
# Default options. Overriden by values in _config.yml or command-line opts.
|
32
|
+
# (Strings rather symbols used for compatability with YAML)
|
33
|
+
DEFAULTS = {
|
34
|
+
'auto' => false,
|
35
|
+
'server' => false,
|
36
|
+
'server_port' => 4000,
|
37
|
+
|
38
|
+
'source' => '.',
|
39
|
+
'destination' => File.join('.', '_site'),
|
40
|
+
|
41
|
+
'lsi' => false,
|
42
|
+
'pygments' => false,
|
43
|
+
'markdown' => 'maruku',
|
44
|
+
'permalink' => 'date',
|
45
|
+
|
46
|
+
'maruku' => {
|
47
|
+
'use_tex' => false,
|
48
|
+
'use_divs' => false,
|
49
|
+
'png_engine' => 'blahtex',
|
50
|
+
'png_dir' => 'images/latex',
|
51
|
+
'png_url' => '/images/latex'
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
# Generate a Jekyll configuration Hash by merging the default options
|
56
|
+
# with anything in _config.yml, and adding the given options on top
|
57
|
+
# +override+ is a Hash of config directives
|
58
|
+
#
|
59
|
+
# Returns Hash
|
60
|
+
def self.configuration(override)
|
61
|
+
# _config.yml may override default source location, but until
|
62
|
+
# then, we need to know where to look for _config.yml
|
63
|
+
source = override['source'] || Jekyll::DEFAULTS['source']
|
64
|
+
|
65
|
+
# Get configuration from <source>/_config.yml
|
66
|
+
config_file = File.join(source, '_config.yml')
|
67
|
+
begin
|
68
|
+
config = YAML.load_file(config_file)
|
69
|
+
raise "Invalid configuration - #{config_file}" if !config.is_a?(Hash)
|
70
|
+
STDOUT.puts "Configuration from #{config_file}"
|
71
|
+
rescue => err
|
72
|
+
STDERR.puts "WARNING: Could not read configuration. Using defaults (and options)."
|
73
|
+
STDERR.puts "\t" + err.to_s
|
74
|
+
config = {}
|
75
|
+
end
|
76
|
+
|
77
|
+
# Merge DEFAULTS < _config.yml < override
|
78
|
+
Jekyll::DEFAULTS.deep_merge(config).deep_merge(override)
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.version
|
82
|
+
yml = YAML.load(File.read(File.join(File.dirname(__FILE__), *%w[.. VERSION.yml])))
|
83
|
+
"#{yml[:major]}.#{yml[:minor]}.#{yml[:patch]}"
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
##
|
2
|
+
# Wrapper for the Pygments command line tool, pygmentize.
|
3
|
+
#
|
4
|
+
# Pygments: http://pygments.org/
|
5
|
+
#
|
6
|
+
# Assumes pygmentize is in the path. If not, set its location
|
7
|
+
# with Albino.bin = '/path/to/pygmentize'
|
8
|
+
#
|
9
|
+
# Use like so:
|
10
|
+
#
|
11
|
+
# @syntaxer = Albino.new('/some/file.rb', :ruby)
|
12
|
+
# puts @syntaxer.colorize
|
13
|
+
#
|
14
|
+
# This'll print out an HTMLized, Ruby-highlighted version
|
15
|
+
# of '/some/file.rb'.
|
16
|
+
#
|
17
|
+
# To use another formatter, pass it as the third argument:
|
18
|
+
#
|
19
|
+
# @syntaxer = Albino.new('/some/file.rb', :ruby, :bbcode)
|
20
|
+
# puts @syntaxer.colorize
|
21
|
+
#
|
22
|
+
# You can also use the #colorize class method:
|
23
|
+
#
|
24
|
+
# puts Albino.colorize('/some/file.rb', :ruby)
|
25
|
+
#
|
26
|
+
# Another also: you get a #to_s, for somewhat nicer use in Rails views.
|
27
|
+
#
|
28
|
+
# ... helper file ...
|
29
|
+
# def highlight(text)
|
30
|
+
# Albino.new(text, :ruby)
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# ... view file ...
|
34
|
+
# <%= highlight text %>
|
35
|
+
#
|
36
|
+
# The default lexer is 'text'. You need to specify a lexer yourself;
|
37
|
+
# because we are using STDIN there is no auto-detect.
|
38
|
+
#
|
39
|
+
# To see all lexers and formatters available, run `pygmentize -L`.
|
40
|
+
#
|
41
|
+
# Chris Wanstrath // chris@ozmm.org
|
42
|
+
# GitHub // http://github.com
|
43
|
+
#
|
44
|
+
require 'open4'
|
45
|
+
|
46
|
+
class Albino
|
47
|
+
@@bin = Rails.development? ? 'pygmentize' : '/usr/bin/pygmentize' rescue 'pygmentize'
|
48
|
+
|
49
|
+
def self.bin=(path)
|
50
|
+
@@bin = path
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.colorize(*args)
|
54
|
+
new(*args).colorize
|
55
|
+
end
|
56
|
+
|
57
|
+
def initialize(target, lexer = :text, format = :html)
|
58
|
+
@target = File.exists?(target) ? File.read(target) : target rescue target
|
59
|
+
@options = { :l => lexer, :f => format, :O => 'encoding=utf-8' }
|
60
|
+
end
|
61
|
+
|
62
|
+
def execute(command)
|
63
|
+
output = ''
|
64
|
+
Open4.popen4(command) do |pid, stdin, stdout, stderr|
|
65
|
+
stdin.puts @target
|
66
|
+
stdin.close
|
67
|
+
output = stdout.read.strip
|
68
|
+
[stdout, stderr].each { |io| io.close }
|
69
|
+
end
|
70
|
+
output
|
71
|
+
end
|
72
|
+
|
73
|
+
def colorize(options = {})
|
74
|
+
html = execute(@@bin + convert_options(options))
|
75
|
+
# Work around an RDiscount bug: http://gist.github.com/97682
|
76
|
+
html.to_s.sub(%r{</pre></div>\Z}, "</pre>\n</div>")
|
77
|
+
end
|
78
|
+
alias_method :to_s, :colorize
|
79
|
+
|
80
|
+
def convert_options(options = {})
|
81
|
+
@options.merge(options).inject('') do |string, (flag, value)|
|
82
|
+
string + " -#{flag} #{value}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
if $0 == __FILE__
|
88
|
+
require 'rubygems'
|
89
|
+
require 'test/spec'
|
90
|
+
require 'mocha'
|
91
|
+
begin require 'redgreen'; rescue LoadError; end
|
92
|
+
|
93
|
+
context "Albino" do
|
94
|
+
setup do
|
95
|
+
@syntaxer = Albino.new(__FILE__, :ruby)
|
96
|
+
end
|
97
|
+
|
98
|
+
specify "defaults to text" do
|
99
|
+
syntaxer = Albino.new(__FILE__)
|
100
|
+
syntaxer.expects(:execute).with('pygmentize -f html -l text').returns(true)
|
101
|
+
syntaxer.colorize
|
102
|
+
end
|
103
|
+
|
104
|
+
specify "accepts options" do
|
105
|
+
@syntaxer.expects(:execute).with('pygmentize -f html -l ruby').returns(true)
|
106
|
+
@syntaxer.colorize
|
107
|
+
end
|
108
|
+
|
109
|
+
specify "works with strings" do
|
110
|
+
syntaxer = Albino.new('class New; end', :ruby)
|
111
|
+
assert_match %r(highlight), syntaxer.colorize
|
112
|
+
end
|
113
|
+
|
114
|
+
specify "aliases to_s" do
|
115
|
+
assert_equal @syntaxer.colorize, @syntaxer.to_s
|
116
|
+
end
|
117
|
+
|
118
|
+
specify "class method colorize" do
|
119
|
+
assert_equal @syntaxer.colorize, Albino.colorize(__FILE__, :ruby)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
@@ -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,79 @@
|
|
1
|
+
# Quickly hacked together my Michael Ivey
|
2
|
+
# Based on mt.rb by Nick Gerakines, open source and publically
|
3
|
+
# available under the MIT license. Use this module at your own risk.
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'sequel'
|
7
|
+
require 'fastercsv'
|
8
|
+
require 'fileutils'
|
9
|
+
require File.join(File.dirname(__FILE__),"csv.rb")
|
10
|
+
|
11
|
+
# NOTE: This converter requires Sequel and the MySQL gems.
|
12
|
+
# The MySQL gem can be difficult to install on OS X. Once you have MySQL
|
13
|
+
# installed, running the following commands should work:
|
14
|
+
# $ sudo gem install sequel
|
15
|
+
# $ sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
|
16
|
+
|
17
|
+
module Jekyll
|
18
|
+
module Mephisto
|
19
|
+
#Accepts a hash with database config variables, exports mephisto posts into a csv
|
20
|
+
#export PGPASSWORD if you must
|
21
|
+
def self.postgres(c)
|
22
|
+
sql = <<-SQL
|
23
|
+
BEGIN;
|
24
|
+
CREATE TEMP TABLE jekyll AS
|
25
|
+
SELECT title, permalink, body, published_at, filter FROM contents
|
26
|
+
WHERE user_id = 1 AND type = 'Article' ORDER BY published_at;
|
27
|
+
COPY jekyll TO STDOUT WITH CSV HEADER;
|
28
|
+
ROLLBACK;
|
29
|
+
SQL
|
30
|
+
command = %Q(psql -h #{c[:host] || "localhost"} -c "#{sql.strip}" #{c[:database]} #{c[:username]} -o #{c[:filename] || "posts.csv"})
|
31
|
+
puts command
|
32
|
+
`#{command}`
|
33
|
+
CSV.process
|
34
|
+
end
|
35
|
+
|
36
|
+
# This query will pull blog posts from all entries across all blogs. If
|
37
|
+
# you've got unpublished, deleted or otherwise hidden posts please sift
|
38
|
+
# through the created posts to make sure nothing is accidently published.
|
39
|
+
|
40
|
+
QUERY = "SELECT id, permalink, body, published_at, title FROM contents WHERE user_id = 1 AND type = 'Article' AND published_at IS NOT NULL ORDER BY published_at"
|
41
|
+
|
42
|
+
def self.process(dbname, user, pass, host = 'localhost')
|
43
|
+
db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host)
|
44
|
+
|
45
|
+
FileUtils.mkdir_p "_posts"
|
46
|
+
|
47
|
+
db[QUERY].each do |post|
|
48
|
+
title = post[:title]
|
49
|
+
slug = post[:permalink]
|
50
|
+
date = post[:published_at]
|
51
|
+
content = post[:body]
|
52
|
+
# more_content = ''
|
53
|
+
|
54
|
+
# Be sure to include the body and extended body.
|
55
|
+
# if more_content != nil
|
56
|
+
# content = content + " \n" + more_content
|
57
|
+
# end
|
58
|
+
|
59
|
+
# Ideally, this script would determine the post format (markdown, html
|
60
|
+
# , etc) and create files with proper extensions. At this point it
|
61
|
+
# just assumes that markdown will be acceptable.
|
62
|
+
name = [date.year, date.month, date.day, slug].join('-') + ".markdown"
|
63
|
+
|
64
|
+
data = {
|
65
|
+
'layout' => 'post',
|
66
|
+
'title' => title.to_s,
|
67
|
+
'mt_id' => post[:entry_id],
|
68
|
+
}.delete_if { |k,v| v.nil? || v == ''}.to_yaml
|
69
|
+
|
70
|
+
File.open("_posts/#{name}", "w") do |f|
|
71
|
+
f.puts data
|
72
|
+
f.puts "---"
|
73
|
+
f.puts content
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|