HTML-Formatting
* added simple_format for content content * added support for SyntaxHighlighter JS * finished rake tasks for blog
This commit is contained in:
parent
a45f502f44
commit
afb35f58ad
|
@ -1,4 +1,3 @@
|
||||||
require 'nokogiri'
|
|
||||||
require 'wordpress'
|
require 'wordpress'
|
||||||
|
|
||||||
namespace :wordpress do
|
namespace :wordpress do
|
||||||
|
@ -10,8 +9,8 @@ namespace :wordpress do
|
||||||
p "Truncating #{table_name} ..."
|
p "Truncating #{table_name} ..."
|
||||||
ActiveRecord::Base.connection.execute "DELETE FROM #{table_name}"
|
ActiveRecord::Base.connection.execute "DELETE FROM #{table_name}"
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
desc "import blog data from a Refinery::WordPress XML dump"
|
desc "import blog data from a Refinery::WordPress XML dump"
|
||||||
task :import_blog, :file_name do |task, params|
|
task :import_blog, :file_name do |task, params|
|
||||||
|
@ -20,47 +19,18 @@ namespace :wordpress do
|
||||||
|
|
||||||
dump.authors.each(&:to_refinery)
|
dump.authors.each(&:to_refinery)
|
||||||
dump.posts.each(&:to_refinery)
|
dump.posts.each(&:to_refinery)
|
||||||
|
|
||||||
|
ENV["MODEL"] = 'BlogPost'
|
||||||
|
Rake::Task["friendly_id:redo_slugs"].invoke
|
||||||
|
ENV["MODEL"] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
desc "reset blog tables and then import blog data from a Refinery::WordPress XML dump"
|
||||||
|
task :reset_and_import_blog, :file_name do |task, params|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
desc "Import data from a Refinery::WordPress XML dump"
|
|
||||||
task :import, :file_name do |task, params|
|
|
||||||
Rake::Task["environment"].invoke
|
Rake::Task["environment"].invoke
|
||||||
|
Rake::Task["wordpress:reset_blog"].invoke
|
||||||
|
Rake::Task["wordpress:import_blog"].invoke(params[:file_name])
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "New import (testing)"
|
|
||||||
task :new_import, :file_name do |task, params|
|
|
||||||
Rake::Task["environment"].invoke
|
|
||||||
|
|
||||||
file_name = File.absolute_path(params[:file_name])
|
|
||||||
unless File.file?(file_name) && File.readable?(file_name)
|
|
||||||
raise "Given file '#{file_name}' no file or not readable."
|
|
||||||
end
|
|
||||||
|
|
||||||
dump = Refinery::WordPress::Dump.new(file_name)
|
|
||||||
p dump.authors
|
|
||||||
p dump.pages
|
|
||||||
dump.posts.each do |post|
|
|
||||||
p post.title
|
|
||||||
p post.categories
|
|
||||||
p post.tags
|
|
||||||
p post.creator
|
|
||||||
#p post.content
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
desc "Import data from a Refinery::WordPress XML dump into a clean database (reset first)"
|
|
||||||
task :import_clean, :file_name do |task, params|
|
|
||||||
Rake::Task["wordpress:reset"].invoke
|
|
||||||
Rake::Task["wordpress:import"].invoke(params[:file_name])
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
module Refinery
|
module Refinery
|
||||||
module WordPress
|
module WordPress
|
||||||
class Page
|
class Page
|
||||||
|
include ::ActionView::Helpers::TagHelper
|
||||||
|
include ::ActionView::Helpers::TextHelper
|
||||||
|
|
||||||
attr_reader :node
|
attr_reader :node
|
||||||
|
|
||||||
def initialize(node)
|
def initialize(node)
|
||||||
|
@ -19,6 +22,31 @@ module Refinery
|
||||||
node.xpath("content:encoded").text
|
node.xpath("content:encoded").text
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def content_formatted
|
||||||
|
# WordPress doesn't export <p>-Tags, so let's run a simple_format over
|
||||||
|
# the content
|
||||||
|
formatted = simple_format(content)
|
||||||
|
|
||||||
|
# Support for SyntaxHighlighter:
|
||||||
|
# In WordPress you can (via a plugin) enclose code in [lang][/lang]
|
||||||
|
# blocks, which are converted to a <pre>-tag with a class corresponding
|
||||||
|
# to the language.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# [ruby]p "Hello World"[/ruby]
|
||||||
|
# -> <pre class="brush: ruby">p "Hello world"</pre>
|
||||||
|
formatted.gsub!(/\[(\w+)\]/, '<pre class="brush: \1">')
|
||||||
|
formatted.gsub!(/\[\/\w+\]/, '</pre>')
|
||||||
|
|
||||||
|
# remove all tags inside <pre> that simple_format created
|
||||||
|
# TODO: replace simple_format with a method, that ignores pre-tags
|
||||||
|
formatted.gsub!(/(<pre.*?>)(.+?)(<\/pre>)/m) do |match|
|
||||||
|
"#{$1}#{strip_tags($2)}#{$3}"
|
||||||
|
end
|
||||||
|
|
||||||
|
formatted
|
||||||
|
end
|
||||||
|
|
||||||
def creator
|
def creator
|
||||||
node.xpath("dc:creator").text
|
node.xpath("dc:creator").text
|
||||||
end
|
end
|
||||||
|
@ -51,7 +79,7 @@ module Refinery
|
||||||
page = ::Page.create!(:title => title, :created_at => post_date,
|
page = ::Page.create!(:title => title, :created_at => post_date,
|
||||||
:draft => draft?, :parent_id => parent_id)
|
:draft => draft?, :parent_id => parent_id)
|
||||||
|
|
||||||
page.parts.create(:title => 'Body', :body => content)
|
page.parts.create(:title => 'Body', :body => content_formatted)
|
||||||
page
|
page
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -31,7 +31,7 @@ module Refinery
|
||||||
post = BlogPost.new
|
post = BlogPost.new
|
||||||
|
|
||||||
|
|
||||||
post = ::BlogPost.create! :title => title, :body => content, :draft => draft?,
|
post = ::BlogPost.create! :title => title, :body => content_formatted, :draft => draft?,
|
||||||
:published_at => post_date, :created_at => post_date, :author => user,
|
:published_at => post_date, :created_at => post_date, :author => user,
|
||||||
:tag_list => tag_list
|
:tag_list => tag_list
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,9 @@ describe Refinery::WordPress::Dump, :type => :model do
|
||||||
it { page.should_not == dump.pages.first }
|
it { page.should_not == dump.pages.first }
|
||||||
|
|
||||||
describe "#to_refinery" do
|
describe "#to_refinery" do
|
||||||
|
include ::ActionView::Helpers::TagHelper
|
||||||
|
include ::ActionView::Helpers::TextHelper
|
||||||
|
|
||||||
before do
|
before do
|
||||||
# "About me" has a parent page with id 8 in the XML dump,
|
# "About me" has a parent page with id 8 in the XML dump,
|
||||||
# would otherwise fails creation
|
# would otherwise fails creation
|
||||||
|
@ -111,7 +114,7 @@ describe Refinery::WordPress::Dump, :type => :model do
|
||||||
@page.title.should == page.title
|
@page.title.should == page.title
|
||||||
@page.draft.should == page.draft?
|
@page.draft.should == page.draft?
|
||||||
@page.created_at.should == page.post_date
|
@page.created_at.should == page.post_date
|
||||||
@page.parts.first.body.should == "<p>#{page.content}</p>"
|
@page.parts.first.body.should == "#{simple_format(page.content)}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user