38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/jekyll-import/importers/typo.rb', line 38
def self.process(options)
server = options.fetch('server')
dbname = options.fetch('dbname')
user = options.fetch('user')
pass = options.fetch('password', '')
host = options.fetch('host', "localhost")
FileUtils.mkdir_p '_posts'
case server.intern
when :postgres
db = Sequel.postgres(dbname, :user => user, :password => pass, :host => host, :encoding => 'utf8')
when :mysql
db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host, :encoding => 'utf8')
else
raise "Unknown database server '#{server}'"
end
db[SQL].each do |post|
next unless post[:state] =~ /published/i
if post[:slug] == nil
post[:slug] = "no slug"
end
if post[:extended]
post[:body] << "\n<!-- more -->\n"
post[:body] << post[:extended]
end
name = [ sprintf("%.04d", post[:date].year),
sprintf("%.02d", post[:date].month),
sprintf("%.02d", post[:date].day),
post[:slug].strip ].join('-')
name += '.' + post[:filter].split(' ')[0]
File.open("_posts/#{name}", 'w') do |f|
f.puts({ 'layout' => 'post',
'title' => (post[:title] and post[:title].to_s.force_encoding('UTF-8')),
'tags' => (post[:keywords] and post[:keywords].to_s.force_encoding('UTF-8')),
'typo_id' => post[:id]
}.delete_if { |k, v| v.nil? || v == '' }.to_yaml)
f.puts '---'
f.puts post[:body].delete("\r")
end
end
end
|