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'
|
||||
|
||||
namespace :wordpress do
|
||||
|
@ -10,8 +9,8 @@ namespace :wordpress do
|
|||
p "Truncating #{table_name} ..."
|
||||
ActiveRecord::Base.connection.execute "DELETE FROM #{table_name}"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
desc "import blog data from a Refinery::WordPress XML dump"
|
||||
task :import_blog, :file_name do |task, params|
|
||||
|
@ -20,47 +19,18 @@ namespace :wordpress do
|
|||
|
||||
dump.authors.each(&:to_refinery)
|
||||
dump.posts.each(&:to_refinery)
|
||||
|
||||
ENV["MODEL"] = 'BlogPost'
|
||||
Rake::Task["friendly_id:redo_slugs"].invoke
|
||||
ENV["MODEL"] = nil
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
desc "Import data from a Refinery::WordPress XML dump"
|
||||
task :import, :file_name do |task, params|
|
||||
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|
|
||||
Rake::Task["environment"].invoke
|
||||
Rake::Task["wordpress:reset_blog"].invoke
|
||||
Rake::Task["wordpress:import_blog"].invoke(params[:file_name])
|
||||
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
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
module Refinery
|
||||
module WordPress
|
||||
class Page
|
||||
include ::ActionView::Helpers::TagHelper
|
||||
include ::ActionView::Helpers::TextHelper
|
||||
|
||||
attr_reader :node
|
||||
|
||||
def initialize(node)
|
||||
|
@ -19,6 +22,31 @@ module Refinery
|
|||
node.xpath("content:encoded").text
|
||||
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
|
||||
node.xpath("dc:creator").text
|
||||
end
|
||||
|
@ -51,7 +79,7 @@ module Refinery
|
|||
page = ::Page.create!(:title => title, :created_at => post_date,
|
||||
:draft => draft?, :parent_id => parent_id)
|
||||
|
||||
page.parts.create(:title => 'Body', :body => content)
|
||||
page.parts.create(:title => 'Body', :body => content_formatted)
|
||||
page
|
||||
end
|
||||
end
|
||||
|
|
|
@ -31,7 +31,7 @@ module Refinery
|
|||
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,
|
||||
:tag_list => tag_list
|
||||
|
||||
|
|
|
@ -94,6 +94,9 @@ describe Refinery::WordPress::Dump, :type => :model do
|
|||
it { page.should_not == dump.pages.first }
|
||||
|
||||
describe "#to_refinery" do
|
||||
include ::ActionView::Helpers::TagHelper
|
||||
include ::ActionView::Helpers::TextHelper
|
||||
|
||||
before do
|
||||
# "About me" has a parent page with id 8 in the XML dump,
|
||||
# would otherwise fails creation
|
||||
|
@ -111,7 +114,7 @@ describe Refinery::WordPress::Dump, :type => :model do
|
|||
@page.title.should == page.title
|
||||
@page.draft.should == page.draft?
|
||||
@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
|
||||
|
|
Loading…
Reference in New Issue
Block a user