jekyll-import 0.14.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jekyll-import.rb +2 -0
- data/lib/jekyll-import/importer.rb +5 -3
- data/lib/jekyll-import/importers.rb +3 -0
- data/lib/jekyll-import/importers/behance.rb +7 -6
- data/lib/jekyll-import/importers/blogger.rb +23 -38
- data/lib/jekyll-import/importers/csv.rb +6 -5
- data/lib/jekyll-import/importers/drupal6.rb +7 -5
- data/lib/jekyll-import/importers/drupal7.rb +15 -13
- data/lib/jekyll-import/importers/drupal_common.rb +55 -31
- data/lib/jekyll-import/importers/easyblog.rb +8 -8
- data/lib/jekyll-import/importers/enki.rb +14 -12
- data/lib/jekyll-import/importers/ghost.rb +4 -1
- data/lib/jekyll-import/importers/google_reader.rb +4 -4
- data/lib/jekyll-import/importers/joomla.rb +9 -9
- data/lib/jekyll-import/importers/joomla3.rb +15 -15
- data/lib/jekyll-import/importers/jrnl.rb +11 -9
- data/lib/jekyll-import/importers/marley.rb +12 -10
- data/lib/jekyll-import/importers/mephisto.rb +15 -15
- data/lib/jekyll-import/importers/mt.rb +16 -13
- data/lib/jekyll-import/importers/posterous.rb +12 -9
- data/lib/jekyll-import/importers/roller.rb +277 -0
- data/lib/jekyll-import/importers/rss.rb +18 -6
- data/lib/jekyll-import/importers/s9y.rb +3 -1
- data/lib/jekyll-import/importers/s9y_database.rb +38 -53
- data/lib/jekyll-import/importers/textpattern.rb +6 -4
- data/lib/jekyll-import/importers/tumblr.rb +101 -107
- data/lib/jekyll-import/importers/typo.rb +29 -27
- data/lib/jekyll-import/importers/wordpress.rb +47 -59
- data/lib/jekyll-import/importers/wordpressdotcom.rb +27 -32
- data/lib/jekyll-import/util.rb +2 -1
- data/lib/jekyll-import/version.rb +3 -1
- data/lib/jekyll/commands/import.rb +4 -7
- metadata +40 -40
- data/lib/jekyll-import/importers/tmp.rb +0 -0
@@ -0,0 +1,277 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JekyllImport
|
4
|
+
module Importers
|
5
|
+
class Roller < Importer
|
6
|
+
def self.require_deps
|
7
|
+
JekyllImport.require_with_fallback(%w(
|
8
|
+
rubygems
|
9
|
+
sequel
|
10
|
+
fileutils
|
11
|
+
safe_yaml
|
12
|
+
unidecode
|
13
|
+
))
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.specify_options(c)
|
17
|
+
c.option "dbname", "--dbname DB", "Database name (default: '')"
|
18
|
+
c.option "socket", "--socket SOCKET", "Database socket (default: '')"
|
19
|
+
c.option "user", "--user USER", "Database user name (default: '')"
|
20
|
+
c.option "password", "--password PW", "Database user's password (default: '')"
|
21
|
+
c.option "host", "--host HOST", "Database host name (default: 'localhost')"
|
22
|
+
c.option "port", "--port PORT", "Database port number (default: '3306')"
|
23
|
+
c.option "clean_entities", "--clean_entities", "Whether to clean entities (default: true)"
|
24
|
+
c.option "comments", "--comments", "Whether to import comments (default: true)"
|
25
|
+
c.option "categories", "--categories", "Whether to import categories (default: true)"
|
26
|
+
c.option "tags", "--tags", "Whether to import tags (default: true)"
|
27
|
+
|
28
|
+
c.option "status", "--status STATUS,STATUS2", Array,
|
29
|
+
"Array of allowed statuses (default: ['PUBLISHED'], other options: 'DRAFT')"
|
30
|
+
end
|
31
|
+
|
32
|
+
# Main migrator function. Call this to perform the migration.
|
33
|
+
#
|
34
|
+
# dbname:: The name of the database
|
35
|
+
# user:: The database user name
|
36
|
+
# pass:: The database user's password
|
37
|
+
# host:: The address of the MySQL database host. Default: 'localhost'
|
38
|
+
# port:: The port number of the MySQL database. Default: '3306'
|
39
|
+
# socket:: The database socket's path
|
40
|
+
# options:: A hash table of configuration options.
|
41
|
+
#
|
42
|
+
# Supported options are:
|
43
|
+
#
|
44
|
+
# :clean_entities:: If true, convert non-ASCII characters to HTML
|
45
|
+
# entities in the posts, comments, titles, and
|
46
|
+
# names. Requires the 'htmlentities' gem to
|
47
|
+
# work. Default: true.
|
48
|
+
# :comments:: If true, migrate post comments too. Comments
|
49
|
+
# are saved in the post's YAML front matter.
|
50
|
+
# Default: true.
|
51
|
+
# :categories:: If true, save the post's categories in its
|
52
|
+
# YAML front matter. Default: true.
|
53
|
+
# :tags:: If true, save the post's tags in its
|
54
|
+
# YAML front matter. Default: true.
|
55
|
+
# :extension:: Set the post extension. Default: "html"
|
56
|
+
# :status:: Array of allowed post statuses. Only
|
57
|
+
# posts with matching status will be migrated.
|
58
|
+
# Known statuses are :PUBLISHED and :DRAFT
|
59
|
+
# If this is nil or an empty
|
60
|
+
# array, all posts are migrated regardless of
|
61
|
+
# status. Default: [:PUBLISHED].
|
62
|
+
#
|
63
|
+
def self.process(opts)
|
64
|
+
options = {
|
65
|
+
:user => opts.fetch("user", ""),
|
66
|
+
:pass => opts.fetch("password", ""),
|
67
|
+
:host => opts.fetch("host", "localhost"),
|
68
|
+
:port => opts.fetch("port", "3306"),
|
69
|
+
:socket => opts.fetch("socket", nil),
|
70
|
+
:dbname => opts.fetch("dbname", ""),
|
71
|
+
:clean_entities => opts.fetch("clean_entities", true),
|
72
|
+
:comments => opts.fetch("comments", true),
|
73
|
+
:categories => opts.fetch("categories", true),
|
74
|
+
:tags => opts.fetch("tags", true),
|
75
|
+
:extension => opts.fetch("extension", "html"),
|
76
|
+
:status => opts.fetch("status", ["PUBLISHED"]).map(&:to_sym) # :DRAFT
|
77
|
+
}
|
78
|
+
|
79
|
+
if options[:clean_entities]
|
80
|
+
begin
|
81
|
+
require "htmlentities"
|
82
|
+
rescue LoadError
|
83
|
+
STDERR.puts "Could not require 'htmlentities', so the :clean_entities option is now disabled."
|
84
|
+
options[:clean_entities] = false
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
FileUtils.mkdir_p("_posts")
|
89
|
+
FileUtils.mkdir_p("_drafts") if options[:status].include? :DRAFT
|
90
|
+
|
91
|
+
db = Sequel.mysql2(options[:dbname],
|
92
|
+
:user => options[:user],
|
93
|
+
:password => options[:pass],
|
94
|
+
:socket => options[:socket],
|
95
|
+
:host => options[:host],
|
96
|
+
:port => options[:port],
|
97
|
+
:encoding => "utf8")
|
98
|
+
|
99
|
+
posts_query = "
|
100
|
+
SELECT
|
101
|
+
weblogentry.id AS `id`,
|
102
|
+
weblogentry.status AS `status`,
|
103
|
+
weblogentry.title AS `title`,
|
104
|
+
weblogentry.anchor AS `slug`,
|
105
|
+
weblogentry.updatetime AS `date`,
|
106
|
+
weblogentry.text AS `content`,
|
107
|
+
weblogentry.summary AS `excerpt`,
|
108
|
+
weblogentry.categoryid AS `categoryid`,
|
109
|
+
roller_user.fullname AS `author`,
|
110
|
+
roller_user.username AS `author_login`,
|
111
|
+
roller_user.emailaddress AS `author_email`,
|
112
|
+
weblog.handle AS `site`
|
113
|
+
FROM weblogentry AS `weblogentry`
|
114
|
+
LEFT JOIN roller_user AS `roller_user`
|
115
|
+
ON weblogentry.creator = roller_user.username
|
116
|
+
LEFT JOIN weblog AS `weblog`
|
117
|
+
ON weblogentry.websiteid = weblog.id"
|
118
|
+
|
119
|
+
if options[:status] && !options[:status].empty?
|
120
|
+
status = options[:status][0]
|
121
|
+
posts_query += "
|
122
|
+
WHERE weblogentry.status = '#{status}'"
|
123
|
+
options[:status][1..-1].each do |stat|
|
124
|
+
posts_query += " OR
|
125
|
+
weblogentry.status = '#{stat}'"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
db[posts_query].each do |post|
|
130
|
+
process_post(post, db, options)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def self.process_post(post, db, options)
|
135
|
+
extension = options[:extension]
|
136
|
+
|
137
|
+
title = post[:title]
|
138
|
+
title = clean_entities(title) if options[:clean_entities]
|
139
|
+
|
140
|
+
slug = post[:slug]
|
141
|
+
slug = sluggify(title) if !slug || slug.empty?
|
142
|
+
|
143
|
+
date = post[:date] || Time.now
|
144
|
+
name = format("%02d-%02d-%02d-%s.%s", date.year, date.month, date.day, slug, extension)
|
145
|
+
|
146
|
+
content = post[:content].to_s
|
147
|
+
content = clean_entities(content) if options[:clean_entities]
|
148
|
+
|
149
|
+
excerpt = post[:excerpt].to_s
|
150
|
+
|
151
|
+
permalink = "#{post[:site]}/entry/#{post[:slug]}"
|
152
|
+
|
153
|
+
categories = []
|
154
|
+
tags = []
|
155
|
+
|
156
|
+
if options[:categories]
|
157
|
+
cquery =
|
158
|
+
"SELECT
|
159
|
+
weblogcategory.name AS `name`
|
160
|
+
FROM
|
161
|
+
weblogcategory AS `weblogcategory`
|
162
|
+
WHERE
|
163
|
+
weblogcategory.id = '#{post[:categoryid]}'"
|
164
|
+
|
165
|
+
db[cquery].each do |term|
|
166
|
+
categories << (options[:clean_entities] ? clean_entities(term[:name]) : term[:name])
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
if options[:tags]
|
171
|
+
cquery =
|
172
|
+
"SELECT
|
173
|
+
roller_weblogentrytag.name AS `name`
|
174
|
+
FROM
|
175
|
+
roller_weblogentrytag AS `roller_weblogentrytag`
|
176
|
+
WHERE
|
177
|
+
roller_weblogentrytag.entryid = '#{post[:id]}'"
|
178
|
+
|
179
|
+
db[cquery].each do |term|
|
180
|
+
tags << (options[:clean_entities] ? clean_entities(term[:name]) : term[:name])
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
comments = []
|
185
|
+
|
186
|
+
if options[:comments]
|
187
|
+
cquery =
|
188
|
+
"SELECT
|
189
|
+
id AS `id`,
|
190
|
+
name AS `author`,
|
191
|
+
email AS `author_email`,
|
192
|
+
posttime AS `date`,
|
193
|
+
content AS `content`
|
194
|
+
FROM roller_comment
|
195
|
+
WHERE
|
196
|
+
entryid = '#{post[:id]}' AND
|
197
|
+
status = 'APPROVED'"
|
198
|
+
|
199
|
+
db[cquery].each do |comment|
|
200
|
+
comcontent = comment[:content].to_s
|
201
|
+
comauthor = comment[:author].to_s
|
202
|
+
comcontent.force_encoding("UTF-8") if comcontent.respond_to?(:force_encoding)
|
203
|
+
|
204
|
+
if options[:clean_entities]
|
205
|
+
comcontent = clean_entities(comcontent)
|
206
|
+
comauthor = clean_entities(comauthor)
|
207
|
+
end
|
208
|
+
|
209
|
+
comments << {
|
210
|
+
"id" => comment[:id].to_i,
|
211
|
+
"author" => comauthor,
|
212
|
+
"author_email" => comment[:author_email].to_s,
|
213
|
+
"date" => comment[:date].to_s,
|
214
|
+
"content" => comcontent,
|
215
|
+
}
|
216
|
+
end
|
217
|
+
|
218
|
+
comments.sort! { |a, b| a["id"] <=> b["id"] }
|
219
|
+
end
|
220
|
+
|
221
|
+
# Get the relevant fields as a hash, delete empty fields and
|
222
|
+
# convert to YAML for the header.
|
223
|
+
data = {
|
224
|
+
"layout" => post[:type].to_s,
|
225
|
+
"status" => post[:status].to_s,
|
226
|
+
"published" => post[:status].to_s == "DRAFT" ? nil : (post[:status].to_s == "PUBLISHED"),
|
227
|
+
"title" => title.to_s,
|
228
|
+
"author" => {
|
229
|
+
"display_name" => post[:author].to_s,
|
230
|
+
"login" => post[:author_login].to_s,
|
231
|
+
"email" => post[:author_email].to_s,
|
232
|
+
},
|
233
|
+
"author_login" => post[:author_login].to_s,
|
234
|
+
"author_email" => post[:author_email].to_s,
|
235
|
+
"excerpt" => excerpt,
|
236
|
+
"id" => post[:id],
|
237
|
+
"date" => date.to_s,
|
238
|
+
"categories" => options[:categories] ? categories : nil,
|
239
|
+
"tags" => options[:tags] ? tags : nil,
|
240
|
+
"comments" => options[:comments] ? comments : nil,
|
241
|
+
"permalink" => permalink,
|
242
|
+
}.delete_if { |_k, v| v.nil? || v == "" }.to_yaml
|
243
|
+
|
244
|
+
filename = post[:status] == "DRAFT" ? "_drafts/#{slug}.md" : "_posts/#{name}"
|
245
|
+
|
246
|
+
# Write out the data and content to file
|
247
|
+
File.open(filename, "w") do |f|
|
248
|
+
f.puts data
|
249
|
+
f.puts "---"
|
250
|
+
f.puts Util.wpautop(content)
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
def self.clean_entities(text)
|
255
|
+
text.force_encoding("UTF-8") if text.respond_to?(:force_encoding)
|
256
|
+
text = HTMLEntities.new.encode(text, :named)
|
257
|
+
# We don't want to convert these, it would break all
|
258
|
+
# HTML tags in the post and comments.
|
259
|
+
text.gsub!("&", "&")
|
260
|
+
text.gsub!("<", "<")
|
261
|
+
text.gsub!(">", ">")
|
262
|
+
text.gsub!(""", '"')
|
263
|
+
text.gsub!("'", "'")
|
264
|
+
text.gsub!("/", "/")
|
265
|
+
text
|
266
|
+
end
|
267
|
+
|
268
|
+
def self.sluggify(title)
|
269
|
+
title.to_ascii.downcase.gsub(%r![^0-9a-z]+!, " ").strip.tr(" ", "-")
|
270
|
+
end
|
271
|
+
|
272
|
+
def self.page_path(_page_id)
|
273
|
+
""
|
274
|
+
end
|
275
|
+
end
|
276
|
+
end
|
277
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module JekyllImport
|
2
4
|
module Importers
|
3
5
|
class RSS < Importer
|
@@ -7,9 +9,7 @@ module JekyllImport
|
|
7
9
|
end
|
8
10
|
|
9
11
|
def self.validate(options)
|
10
|
-
if options["source"].nil?
|
11
|
-
abort "Missing mandatory option --source."
|
12
|
-
end
|
12
|
+
abort "Missing mandatory option --source." if options["source"].nil?
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.require_deps
|
@@ -30,9 +30,11 @@ module JekyllImport
|
|
30
30
|
# Returns nothing.
|
31
31
|
def self.process(options)
|
32
32
|
source = options.fetch("source")
|
33
|
+
frontmatter = options.fetch("frontmatter", [])
|
34
|
+
body = options.fetch("body", ["description"])
|
33
35
|
|
34
36
|
content = ""
|
35
|
-
|
37
|
+
URI.parse(source).open { |s| content = s.read }
|
36
38
|
rss = ::RSS::Parser.parse(content, false)
|
37
39
|
|
38
40
|
raise "There doesn't appear to be any RSS items at the source (#{source}) provided." unless rss
|
@@ -49,14 +51,24 @@ module JekyllImport
|
|
49
51
|
"title" => item.title,
|
50
52
|
}
|
51
53
|
|
52
|
-
header["tag"] = options["tag"]
|
54
|
+
header["tag"] = options["tag"] unless options.to_s.empty?
|
55
|
+
|
56
|
+
frontmatter.each do |value|
|
57
|
+
header[value] = item.send(value)
|
58
|
+
end
|
59
|
+
|
60
|
+
output = ""
|
61
|
+
|
62
|
+
body.each do |row|
|
63
|
+
output += item.send(row)
|
64
|
+
end
|
53
65
|
|
54
66
|
FileUtils.mkdir_p("_posts")
|
55
67
|
|
56
68
|
File.open("_posts/#{name}.html", "w") do |f|
|
57
69
|
f.puts header.to_yaml
|
58
70
|
f.puts "---\n\n"
|
59
|
-
f.puts
|
71
|
+
f.puts output
|
60
72
|
end
|
61
73
|
end
|
62
74
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module JekyllImport
|
2
4
|
module Importers
|
3
5
|
class S9Y < Importer
|
@@ -26,7 +28,7 @@ module JekyllImport
|
|
26
28
|
FileUtils.mkdir_p("_posts")
|
27
29
|
|
28
30
|
text = ""
|
29
|
-
|
31
|
+
URI.parse(source).open { |line| text = line.read }
|
30
32
|
rss = ::RSS::Parser.parse(text)
|
31
33
|
|
32
34
|
rss.items.each do |item|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module JekyllImport
|
2
4
|
module Importers
|
3
5
|
class S9YDatabase < Importer
|
@@ -5,29 +7,29 @@ module JekyllImport
|
|
5
7
|
JekyllImport.require_with_fallback(
|
6
8
|
%w(
|
7
9
|
rubygems
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
sequel
|
11
|
+
fileutils
|
12
|
+
safe_yaml
|
13
|
+
unidecode
|
12
14
|
)
|
13
15
|
)
|
14
16
|
end
|
15
17
|
|
16
18
|
def self.specify_options(c)
|
17
|
-
c.option "dbname",
|
18
|
-
c.option "socket",
|
19
|
-
c.option "user",
|
20
|
-
c.option "password",
|
21
|
-
c.option "host",
|
22
|
-
c.option "port",
|
23
|
-
c.option "table_prefix",
|
24
|
-
c.option "clean_entities", "--clean_entities",
|
25
|
-
c.option "comments",
|
26
|
-
c.option "categories",
|
27
|
-
c.option "tags",
|
28
|
-
c.option "drafts",
|
29
|
-
c.option "markdown",
|
30
|
-
c.option "permalinks",
|
19
|
+
c.option "dbname", "--dbname DB", "Database name (default: '')"
|
20
|
+
c.option "socket", "--socket SOCKET", "Database socket (default: '')"
|
21
|
+
c.option "user", "--user USER", "Database user name (default: '')"
|
22
|
+
c.option "password", "--password PW", "Database user's password (default: '')"
|
23
|
+
c.option "host", "--host HOST", "Database host name (default: 'localhost')"
|
24
|
+
c.option "port", "--port PORT", "Custom database port connect to (default: 3306)"
|
25
|
+
c.option "table_prefix", "--table_prefix PREFIX", "Table prefix name (default: 'serendipity_')"
|
26
|
+
c.option "clean_entities", "--clean_entities", "Whether to clean entities (default: true)"
|
27
|
+
c.option "comments", "--comments", "Whether to import comments (default: true)"
|
28
|
+
c.option "categories", "--categories", "Whether to import categories (default: true)"
|
29
|
+
c.option "tags", "--tags", "Whether to import tags (default: true)"
|
30
|
+
c.option "drafts", "--drafts", "Whether to export drafts as well"
|
31
|
+
c.option "markdown", "--markdown", "convert into markdown format (default: false)"
|
32
|
+
c.option "permalinks", "--permalinks", "preserve S9Y permalinks (default: false)"
|
31
33
|
end
|
32
34
|
|
33
35
|
# Main migrator function. Call this to perform the migration.
|
@@ -68,7 +70,7 @@ module JekyllImport
|
|
68
70
|
:user => opts.fetch("user", ""),
|
69
71
|
:pass => opts.fetch("password", ""),
|
70
72
|
:host => opts.fetch("host", "localhost"),
|
71
|
-
:port
|
73
|
+
:port => opts.fetch("port", 3306),
|
72
74
|
:socket => opts.fetch("socket", nil),
|
73
75
|
:dbname => opts.fetch("dbname", ""),
|
74
76
|
:table_prefix => opts.fetch("table_prefix", "serendipity_"),
|
@@ -93,14 +95,13 @@ module JekyllImport
|
|
93
95
|
FileUtils.mkdir_p("_posts")
|
94
96
|
FileUtils.mkdir_p("_drafts") if options[:drafts]
|
95
97
|
|
96
|
-
db = Sequel.mysql2(options[:dbname],
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
)
|
98
|
+
db = Sequel.mysql2(options[:dbname],
|
99
|
+
:user => options[:user],
|
100
|
+
:password => options[:pass],
|
101
|
+
:socket => options[:socket],
|
102
|
+
:host => options[:host],
|
103
|
+
:port => options[:port],
|
104
|
+
:encoding => "utf8")
|
104
105
|
|
105
106
|
px = options[:table_prefix]
|
106
107
|
|
@@ -136,9 +137,7 @@ module JekyllImport
|
|
136
137
|
LEFT JOIN #{px}authors AS `authors`
|
137
138
|
ON entries.authorid = authors.authorid"
|
138
139
|
|
139
|
-
unless options[:drafts]
|
140
|
-
posts_query << "WHERE posts.isdraft = 'false'"
|
141
|
-
end
|
140
|
+
posts_query << "WHERE posts.isdraft = 'false'" unless options[:drafts]
|
142
141
|
|
143
142
|
db[posts_query].each do |post|
|
144
143
|
process_post(post, db, options, page_name_list)
|
@@ -149,31 +148,21 @@ module JekyllImport
|
|
149
148
|
extension = options[:extension]
|
150
149
|
|
151
150
|
title = post[:title]
|
152
|
-
if options[:clean_entities]
|
153
|
-
title = clean_entities(title)
|
154
|
-
end
|
151
|
+
title = clean_entities(title) if options[:clean_entities]
|
155
152
|
|
156
153
|
slug = post[:slug]
|
157
|
-
if !slug || slug.empty?
|
158
|
-
slug = sluggify(title)
|
159
|
-
end
|
154
|
+
slug = sluggify(title) if !slug || slug.empty?
|
160
155
|
|
161
156
|
status = post[:isdraft] == "true" ? "draft" : "published"
|
162
157
|
date = Time.at(post[:timestamp]).utc || Time.now.utc
|
163
158
|
name = format("%02d-%02d-%02d-%s.%s", date.year, date.month, date.day, slug, extension)
|
164
159
|
|
165
160
|
content = post[:body].to_s
|
166
|
-
unless post[:body_extended].to_s.empty?
|
167
|
-
content += "\n\n" + post[:body_extended].to_s
|
168
|
-
end
|
161
|
+
content += "\n\n" + post[:body_extended].to_s unless post[:body_extended].to_s.empty?
|
169
162
|
|
170
|
-
if options[:clean_entities]
|
171
|
-
content = clean_entities(content)
|
172
|
-
end
|
163
|
+
content = clean_entities(content) if options[:clean_entities]
|
173
164
|
|
174
|
-
if options[:markdown]
|
175
|
-
content = ReverseMarkdown.convert(content)
|
176
|
-
end
|
165
|
+
content = ReverseMarkdown.convert(content) if options[:markdown]
|
177
166
|
|
178
167
|
categories = process_categories(db, options, post)
|
179
168
|
comments = process_comments(db, options, post)
|
@@ -220,10 +209,10 @@ module JekyllImport
|
|
220
209
|
|
221
210
|
def self.require_if_available(gem_name, option_name)
|
222
211
|
require gem_name
|
223
|
-
|
212
|
+
true
|
224
213
|
rescue LoadError
|
225
214
|
STDERR.puts "Could not require '#{gem_name}', so the :#{option_name} option is now disabled."
|
226
|
-
|
215
|
+
true
|
227
216
|
end
|
228
217
|
|
229
218
|
def self.process_categories(db, options, post)
|
@@ -274,9 +263,7 @@ module JekyllImport
|
|
274
263
|
comcontent = comment[:content].to_s
|
275
264
|
comauthor = comment[:author].to_s
|
276
265
|
|
277
|
-
if comcontent.respond_to?(:force_encoding)
|
278
|
-
comcontent.force_encoding("UTF-8")
|
279
|
-
end
|
266
|
+
comcontent.force_encoding("UTF-8") if comcontent.respond_to?(:force_encoding)
|
280
267
|
|
281
268
|
if options[:clean_entities]
|
282
269
|
comcontent = clean_entities(comcontent)
|
@@ -338,9 +325,7 @@ module JekyllImport
|
|
338
325
|
end
|
339
326
|
|
340
327
|
def self.clean_entities(text)
|
341
|
-
if text.respond_to?(:force_encoding)
|
342
|
-
text.force_encoding("UTF-8")
|
343
|
-
end
|
328
|
+
text.force_encoding("UTF-8") if text.respond_to?(:force_encoding)
|
344
329
|
text = HTMLEntities.new.encode(text, :named)
|
345
330
|
# We don't want to convert these, it would break all
|
346
331
|
# HTML tags in the post and comments.
|