class JekyllImport::Importers::TextPattern
Constants
- QUERY
Reads a MySQL database via Sequel and creates a post file for each post. The only posts selected are those with a status of 4 or 5, which means “live” and “sticky” respectively. Other statuses are 1 => draft, 2 => hidden and 3 => pending.
Public Class Methods
process(options)
click to toggle source
# File lib/jekyll-import/importers/textpattern.rb, line 36 def self.process(options) dbname = options.fetch("dbname") user = options.fetch("user") pass = options.fetch("password", "") host = options.fetch("host", "127.0.0.1") db = Sequel.mysql2(dbname, :user => user, :password => pass, :host => host, :encoding => "utf8") FileUtils.mkdir_p "_posts" db[QUERY].each do |post| # Get required fields and construct Jekyll compatible name. title = post[:Title] slug = post[:url_title] date = post[:Posted] content = post[:Body] name = [date.strftime("%Y-%m-%d"), slug].join("-") + ".textile" # Get the relevant fields as a hash, delete empty fields and convert # to YAML for the header. data = { "layout" => "post", "title" => title.to_s, "tags" => post[:Keywords].split(","), }.delete_if { |_k, v| v.nil? || v == "" }.to_yaml # Write out the data and content to file. File.open("_posts/#{name}", "w") do |f| f.puts data f.puts "---" f.puts content end end end
require_deps()
click to toggle source
# File lib/jekyll-import/importers/textpattern.rb, line 19 def self.require_deps JekyllImport.require_with_fallback(%w( rubygems sequel mysql2 fileutils safe_yaml )) end
specify_options(c)
click to toggle source
# File lib/jekyll-import/importers/textpattern.rb, line 29 def self.specify_options(c) c.option "dbname", "--dbname DB", "Database name." c.option "user", "--user USER", "Database user name." c.option "password", "--password PW", "Database user's password. (default: '')" c.option "host", "--host HOST", "Database host name. (default: 'localhost')" end