From 9aa403612ee77ef5582c8cc4cb0925ff47d14280 Mon Sep 17 00:00:00 2001
From: Will Bradley
Date: Mon, 17 Mar 2014 23:27:02 -0700
Subject: [PATCH] Adding wordpress shortcode support
---
Gemfile | 2 +
Gemfile.lock | 181 ++++++++++++++++++++++
lib/wordpress.rb | 1 +
lib/wordpress/page.rb | 25 ++-
support/templates/haml/caption.haml | 24 +++
support/templates/haml/column.haml | 4 +
support/templates/haml/end_columns.haml | 1 +
support/templates/haml/google-map-v3.haml | 37 +++++
wordpress-import.gemspec | 1 +
9 files changed, 273 insertions(+), 3 deletions(-)
create mode 100644 Gemfile.lock
create mode 100644 support/templates/haml/caption.haml
create mode 100644 support/templates/haml/column.haml
create mode 100644 support/templates/haml/end_columns.haml
create mode 100644 support/templates/haml/google-map-v3.haml
diff --git a/Gemfile b/Gemfile
index 89d7671..5a1e6b5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -6,8 +6,10 @@ gem "rails", "4.0.0"
#gem "capybara", ">= 1.0.0.beta1"
gem "sqlite3"
gem "rmagick"
+gem 'shortcode', :git => 'git@github.com:kernow/shortcode.git'
group :development, :test do
+ gem 'byebug'
gem "rspec-rails", ">= 2.6.0"
gem "database_cleaner"
gem 'guard-rspec'
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..4bc2972
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,181 @@
+GIT
+ remote: git@github.com:kernow/shortcode.git
+ revision: 24516374d7571034aae2817401656cf0af5e6bf7
+ specs:
+ shortcode (0.1.1)
+ haml (~> 4.0)
+ parslet (= 1.5.0)
+
+PATH
+ remote: ./
+ specs:
+ wordpress-import (0.4.3)
+ bundler (~> 1.0)
+ nokogiri (~> 1.6.0)
+ shortcode (~> 0.1.1)
+
+GEM
+ remote: http://rubygems.org/
+ specs:
+ actionmailer (4.0.0)
+ actionpack (= 4.0.0)
+ mail (~> 2.5.3)
+ actionpack (4.0.0)
+ activesupport (= 4.0.0)
+ builder (~> 3.1.0)
+ erubis (~> 2.7.0)
+ rack (~> 1.5.2)
+ rack-test (~> 0.6.2)
+ activemodel (4.0.0)
+ activesupport (= 4.0.0)
+ builder (~> 3.1.0)
+ activerecord (4.0.0)
+ activemodel (= 4.0.0)
+ activerecord-deprecated_finders (~> 1.0.2)
+ activesupport (= 4.0.0)
+ arel (~> 4.0.0)
+ activerecord-deprecated_finders (1.0.3)
+ activesupport (4.0.0)
+ i18n (~> 0.6, >= 0.6.4)
+ minitest (~> 4.2)
+ multi_json (~> 1.3)
+ thread_safe (~> 0.1)
+ tzinfo (~> 0.3.37)
+ arel (4.0.2)
+ atomic (1.1.15)
+ blankslate (2.1.2.4)
+ builder (3.1.4)
+ byebug (2.7.0)
+ columnize (~> 0.3)
+ debugger-linecache (~> 1.2)
+ celluloid (0.15.2)
+ timers (~> 1.1.0)
+ celluloid-io (0.15.0)
+ celluloid (>= 0.15.0)
+ nio4r (>= 0.5.0)
+ coderay (1.1.0)
+ columnize (0.3.6)
+ database_cleaner (1.2.0)
+ debugger-linecache (1.2.0)
+ diff-lcs (1.2.5)
+ erubis (2.7.0)
+ fakeweb (1.3.0)
+ ffi (1.9.3)
+ formatador (0.2.4)
+ guard (2.5.1)
+ formatador (>= 0.2.4)
+ listen (~> 2.6)
+ lumberjack (~> 1.0)
+ pry (>= 0.9.12)
+ thor (>= 0.18.1)
+ guard-bundler (2.0.0)
+ bundler (~> 1.0)
+ guard (~> 2.2)
+ guard-rspec (4.2.8)
+ guard (~> 2.1)
+ rspec (>= 2.14, < 4.0)
+ haml (4.0.5)
+ tilt
+ hike (1.2.3)
+ i18n (0.6.9)
+ libnotify (0.8.2)
+ ffi (>= 1.0.11)
+ listen (2.7.0)
+ celluloid (>= 0.15.2)
+ celluloid-io (>= 0.15.0)
+ rb-fsevent (>= 0.9.3)
+ rb-inotify (>= 0.9)
+ lumberjack (1.0.4)
+ mail (2.5.4)
+ mime-types (~> 1.16)
+ treetop (~> 1.4.8)
+ method_source (0.8.2)
+ mime-types (1.25.1)
+ mini_portile (0.5.2)
+ minitest (4.7.5)
+ multi_json (1.9.0)
+ nio4r (1.0.0)
+ nokogiri (1.6.1)
+ mini_portile (~> 0.5.0)
+ parslet (1.5.0)
+ blankslate (~> 2.0)
+ polyglot (0.3.4)
+ pry (0.9.12.6)
+ coderay (~> 1.0)
+ method_source (~> 0.8)
+ slop (~> 3.4)
+ rack (1.5.2)
+ rack-test (0.6.2)
+ rack (>= 1.0)
+ rails (4.0.0)
+ actionmailer (= 4.0.0)
+ actionpack (= 4.0.0)
+ activerecord (= 4.0.0)
+ activesupport (= 4.0.0)
+ bundler (>= 1.3.0, < 2.0)
+ railties (= 4.0.0)
+ sprockets-rails (~> 2.0.0)
+ railties (4.0.0)
+ actionpack (= 4.0.0)
+ activesupport (= 4.0.0)
+ rake (>= 0.8.7)
+ thor (>= 0.18.1, < 2.0)
+ rake (10.1.1)
+ rb-fsevent (0.9.4)
+ rb-inotify (0.9.3)
+ ffi (>= 0.5.0)
+ rmagick (2.13.2)
+ rspec (2.14.1)
+ rspec-core (~> 2.14.0)
+ rspec-expectations (~> 2.14.0)
+ rspec-mocks (~> 2.14.0)
+ rspec-core (2.14.8)
+ rspec-expectations (2.14.5)
+ diff-lcs (>= 1.1.3, < 2.0)
+ rspec-mocks (2.14.6)
+ rspec-rails (2.14.1)
+ actionpack (>= 3.0)
+ activemodel (>= 3.0)
+ activesupport (>= 3.0)
+ railties (>= 3.0)
+ rspec-core (~> 2.14.0)
+ rspec-expectations (~> 2.14.0)
+ rspec-mocks (~> 2.14.0)
+ slop (3.5.0)
+ sprockets (2.12.0)
+ hike (~> 1.2)
+ multi_json (~> 1.0)
+ rack (~> 1.0)
+ tilt (~> 1.1, != 1.3.0)
+ sprockets-rails (2.0.1)
+ actionpack (>= 3.0)
+ activesupport (>= 3.0)
+ sprockets (~> 2.8)
+ sqlite3 (1.3.9)
+ thor (0.18.1)
+ thread_safe (0.2.0)
+ atomic (>= 1.1.7, < 2)
+ tilt (1.4.1)
+ timers (1.1.0)
+ treetop (1.4.15)
+ polyglot
+ polyglot (>= 0.3.1)
+ tzinfo (0.3.39)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ byebug
+ database_cleaner
+ fakeweb
+ ffi
+ guard-bundler
+ guard-rspec
+ libnotify
+ rails (= 4.0.0)
+ rmagick
+ rspec-rails (>= 2.6.0)
+ shortcode!
+ sqlite3
+ wordpress-import!
diff --git a/lib/wordpress.rb b/lib/wordpress.rb
index 22aedd7..b6171af 100644
--- a/lib/wordpress.rb
+++ b/lib/wordpress.rb
@@ -1,5 +1,6 @@
require 'nokogiri'
require "wordpress/railtie"
+require 'shortcode'
module WordPressImport
autoload :Author, 'wordpress/author'
diff --git a/lib/wordpress/page.rb b/lib/wordpress/page.rb
index 55c6661..1613fe2 100644
--- a/lib/wordpress/page.rb
+++ b/lib/wordpress/page.rb
@@ -26,7 +26,7 @@ module WordPressImport
end
def content_formatted
- formatted = format_syntax_highlighter(format_paragraphs(content))
+ formatted = format_shortcodes(format_syntax_highlighter(format_paragraphs(content)))
# remove all tags inside that simple_format created
# TODO: replace format_paragraphs with a method, that ignores pre-tags
@@ -103,8 +103,8 @@ module WordPressImport
text = ''.html_safe if text.nil?
start_tag = tag('p', html_options, true)
- text.gsub!(/\r?\n/, "
\n") # \r\n and \n -> line break
- text.gsub!(/\n\n+/, "
\n\n#{start_tag}") # 2+ newline -> paragraph
+ text.gsub!(/\n\n+/, "#{start_tag}") # 2+ newline -> paragraph
+ text.gsub!(/\r?\n/, "
\ No newline at end of file
diff --git a/support/templates/haml/end_columns.haml b/support/templates/haml/end_columns.haml
new file mode 100644
index 0000000..e071ab7
--- /dev/null
+++ b/support/templates/haml/end_columns.haml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/support/templates/haml/google-map-v3.haml b/support/templates/haml/google-map-v3.haml
new file mode 100644
index 0000000..fda62af
--- /dev/null
+++ b/support/templates/haml/google-map-v3.haml
@@ -0,0 +1,37 @@
+- addmarkerlist = @attributes[:addmarkerlist].to_s || ""
+
+- name = addmarkerlist.split("{}").last
+- uri_name = URI::encode(name)
+- uri_address = URI::encode(addmarkerlist.split("{}").first)
+
+-# google will open up the business page if we pass it a name
+- uri_address = "#{uri_name},%20#{uri_address}" unless (uri_name == uri_address || name.blank?)
+
+- gmaps_url = "https://maps.google.com/maps/?q=#{uri_address}&ie=UTF8&t=m"
+
+
View #{name} in a larger map
+
+
+-# [google-map-v3 width="425"
+ height="350"
+ zoom="12"
+ maptype="roadmap"
+ mapalign="left"
+ directionhint="false"
+ language="default"
+ poweredby="false"
+ maptypecontrol="true"
+ pancontrol="true"
+ zoomcontrol="true"
+ scalecontrol="true"
+ streetviewcontrol="true"
+ scrollwheelcontrol="false"
+ draggable="true"
+ tiltfourtyfive="false"
+ addmarkermashupbubble="false"
+ addmarkermashupbubble="false"
+ addmarkerlist="#1 Dream Manor Dr Globe, AZ{}1-default.png{}Dream Manor Inn"
+ bubbleautopan="true"
+ showbike="false"
+ showtraffic="false"
+ showpanoramio="false"]
\ No newline at end of file
diff --git a/wordpress-import.gemspec b/wordpress-import.gemspec
index 629e256..7609f2a 100644
--- a/wordpress-import.gemspec
+++ b/wordpress-import.gemspec
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
s.add_dependency 'bundler', '~> 1.0'
s.add_dependency 'nokogiri', '~> 1.6.0'
+ s.add_dependency 'shortcode', '~> 0.1.1'
s.add_development_dependency 'rspec-rails'
s.add_development_dependency 'database_cleaner'