More refactorings and specs
This commit is contained in:
parent
ddb65040a7
commit
76830ec51c
|
@ -51,7 +51,7 @@ GEM
|
||||||
orm_adapter (~> 0.0.3)
|
orm_adapter (~> 0.0.3)
|
||||||
warden (~> 1.0.3)
|
warden (~> 1.0.3)
|
||||||
diff-lcs (1.1.2)
|
diff-lcs (1.1.2)
|
||||||
dragonfly (0.9.2)
|
dragonfly (0.9.3)
|
||||||
rack
|
rack
|
||||||
erubis (2.6.6)
|
erubis (2.6.6)
|
||||||
abstract (>= 1.0.0)
|
abstract (>= 1.0.0)
|
||||||
|
@ -125,7 +125,7 @@ GEM
|
||||||
will_paginate (~> 3.0.pre)
|
will_paginate (~> 3.0.pre)
|
||||||
refinerycms-dashboard (1.0.0)
|
refinerycms-dashboard (1.0.0)
|
||||||
refinerycms-core (= 1.0.0)
|
refinerycms-core (= 1.0.0)
|
||||||
refinerycms-generators (1.0.1)
|
refinerycms-generators (1.0.2)
|
||||||
refinerycms-images (1.0.0)
|
refinerycms-images (1.0.0)
|
||||||
dragonfly (~> 0.9.0)
|
dragonfly (~> 0.9.0)
|
||||||
rack-cache (>= 0.5.3)
|
rack-cache (>= 0.5.3)
|
||||||
|
|
|
@ -23,22 +23,10 @@ module Refinery
|
||||||
end
|
end
|
||||||
|
|
||||||
def content_formatted
|
def content_formatted
|
||||||
# WordPress doesn't export <p>-Tags, so let's run a simple_format over
|
formatted = format_syntax_highlighter(format_paragraphs(content))
|
||||||
# the content. As we trust ourselves, no sanatize.
|
|
||||||
formatted = simple_format(content)
|
|
||||||
|
|
||||||
# Support for SyntaxHighlighter (http://alexgorbatchev.com/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+)\](.+?)\[\/\1\]/m, '<pre class="brush: \1">\2</pre>')
|
|
||||||
|
|
||||||
# remove all tags inside <pre> that simple_format created
|
# remove all tags inside <pre> that simple_format created
|
||||||
# TODO: replace simple_format with a method, that ignores pre-tags
|
# TODO: replace format_paragraphs with a method, that ignores pre-tags
|
||||||
formatted.gsub!(/(<pre.*?>)(.+?)(<\/pre>)/m) do |match|
|
formatted.gsub!(/(<pre.*?>)(.+?)(<\/pre>)/m) do |match|
|
||||||
"#{$1}#{strip_tags($2)}#{$3}"
|
"#{$1}#{strip_tags($2)}#{$3}"
|
||||||
end
|
end
|
||||||
|
@ -89,7 +77,10 @@ module Refinery
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def simple_format(text, html_options={})
|
def format_paragraphs(text, html_options={})
|
||||||
|
# WordPress doesn't export <p>-Tags, so let's run a simple_format over
|
||||||
|
# the content. As we trust ourselves, no sanatize. This code is heavily
|
||||||
|
# inspired by the simple_format rails helper
|
||||||
text = ''.html_safe if text.nil?
|
text = ''.html_safe if text.nil?
|
||||||
start_tag = tag('p', html_options, true)
|
start_tag = tag('p', html_options, true)
|
||||||
|
|
||||||
|
@ -99,6 +90,18 @@ module Refinery
|
||||||
|
|
||||||
text.html_safe.safe_concat("</p>")
|
text.html_safe.safe_concat("</p>")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def format_syntax_highlighter(text)
|
||||||
|
# Support for SyntaxHighlighter (http://alexgorbatchev.com/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>
|
||||||
|
text.gsub(/\[(\w+)\](.+?)\[\/\1\]/m, '<pre class="brush: \1">\2</pre>')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
4
spec/fixtures/wordpress_dump.xml
vendored
4
spec/fixtures/wordpress_dump.xml
vendored
|
@ -62,7 +62,7 @@
|
||||||
<wp:comment_status>open</wp:comment_status>
|
<wp:comment_status>open</wp:comment_status>
|
||||||
<wp:ping_status>open</wp:ping_status>
|
<wp:ping_status>open</wp:ping_status>
|
||||||
<wp:post_name>hello-world</wp:post_name>
|
<wp:post_name>hello-world</wp:post_name>
|
||||||
<wp:status>publish</wp:status>
|
<wp:status>draft</wp:status>
|
||||||
<wp:post_parent>0</wp:post_parent>
|
<wp:post_parent>0</wp:post_parent>
|
||||||
<wp:menu_order>0</wp:menu_order>
|
<wp:menu_order>0</wp:menu_order>
|
||||||
<wp:post_type>post</wp:post_type>
|
<wp:post_type>post</wp:post_type>
|
||||||
|
@ -107,7 +107,7 @@ As a new WordPress user, you should go to <a href="http://localhost/wordpress/wp
|
||||||
<wp:comment_status>open</wp:comment_status>
|
<wp:comment_status>open</wp:comment_status>
|
||||||
<wp:ping_status>open</wp:ping_status>
|
<wp:ping_status>open</wp:ping_status>
|
||||||
<wp:post_name>sample-page</wp:post_name>
|
<wp:post_name>sample-page</wp:post_name>
|
||||||
<wp:status>publish</wp:status>
|
<wp:status>draft</wp:status>
|
||||||
<wp:post_parent>0</wp:post_parent>
|
<wp:post_parent>0</wp:post_parent>
|
||||||
<wp:menu_order>0</wp:menu_order>
|
<wp:menu_order>0</wp:menu_order>
|
||||||
<wp:post_type>page</wp:post_type>
|
<wp:post_type>page</wp:post_type>
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe Refinery::WordPress::Dump, :type => :model do
|
describe Refinery::WordPress::Dump, :type => :model do
|
||||||
let(:file_name) { File.realpath(File.join(File.dirname(__FILE__), '../../fixtures/wordpress_dump.xml')) }
|
let(:dump) { test_dump }
|
||||||
let(:dump) { Refinery::WordPress::Dump.new(file_name) }
|
|
||||||
|
|
||||||
it "should create a Dump object given a xml file" do
|
it "should create a Dump object given a xml file" do
|
||||||
dump.should be_a Refinery::WordPress::Dump
|
dump.should be_a Refinery::WordPress::Dump
|
||||||
|
@ -46,6 +45,10 @@ describe Refinery::WordPress::Dump, :type => :model do
|
||||||
it "should return all included pages" do
|
it "should return all included pages" do
|
||||||
dump.pages.should have(3).pages
|
dump.pages.should have(3).pages
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should return only published pages with only_published=true" do
|
||||||
|
dump.pages(true).should have(2).pages
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#authors" do
|
describe "#authors" do
|
||||||
|
@ -58,5 +61,9 @@ describe Refinery::WordPress::Dump, :type => :model do
|
||||||
it "should return all posts" do
|
it "should return all posts" do
|
||||||
dump.posts.should have(3).posts
|
dump.posts.should have(3).posts
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should return only published posts with only_published=true" do
|
||||||
|
dump.posts(true).should have(2).posts
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -39,5 +39,67 @@ describe Refinery::WordPress::Page, :type => :model do
|
||||||
@page.parts.first.body.should == "#{simple_format(page.content)}"
|
@page.parts.first.body.should == "#{simple_format(page.content)}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#format_paragraphs" do
|
||||||
|
let(:sample_text) do
|
||||||
|
text = <<-EOT
|
||||||
|
This is sample text.
|
||||||
|
|
||||||
|
Even more text.
|
||||||
|
But this time no paragraph.
|
||||||
|
EOT
|
||||||
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
|
@result = page.send(:format_paragraphs, sample_text)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should add paragraphs to the sample text" do
|
||||||
|
@result.should include('<p>')
|
||||||
|
@result.should include('</p>')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#format_syntax_highlighter" do
|
||||||
|
let(:sample_text) do
|
||||||
|
text = <<-EOT
|
||||||
|
This is sample text.
|
||||||
|
|
||||||
|
[ruby]
|
||||||
|
p "this is ruby code"
|
||||||
|
[/ruby]
|
||||||
|
|
||||||
|
This is more sample text.
|
||||||
|
EOT
|
||||||
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
|
@result = page.send(:format_syntax_highlighter, sample_text)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should reformat the [ruby] tag to a pre with correct class" do
|
||||||
|
@result.should match(/<pre class="brush: ruby">/)
|
||||||
|
@result.should include('</pre>')
|
||||||
|
end
|
||||||
|
|
||||||
|
context "without correct code tags" do
|
||||||
|
let(:sample_text) do
|
||||||
|
text = <<-EOT
|
||||||
|
This is sample text.
|
||||||
|
|
||||||
|
[ruby]
|
||||||
|
p "this is ruby code"
|
||||||
|
[/php]
|
||||||
|
|
||||||
|
This is more sample text.
|
||||||
|
EOT
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should not reformat the [ruby] tag" do
|
||||||
|
@result.should == sample_text
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user