38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
# File 'lib/jekyll-import/importers/dotclear.rb', line 38
def self.process(opts)
options = {
:datafile => opts.fetch("datafile", ""),
:mediafolder => opts.fetch("mediafolder", ""),
}
FileUtils.mkdir_p("_posts")
FileUtils.mkdir_p("_drafts")
type_data = ""
= {}
posts_and_drafts = {}
keywords = {}
File.readlines(options[:datafile]).each do |lineraw|
line = lineraw.strip.gsub(%r!\n$!, "")
next if line.empty?
if line.start_with?("[")
type_data = line.split(" ").first[1..-1]
[type_data] = (line)
next
end
elts = (line)
if type_data == "post"
draft = (elts[[type_data].index("post_status")] != "1")
date_str = elts[[type_data].index("post_creadt")]
date_blank = (date_str.nil? || date_str.empty?)
date_str_formatted = date_blank ? Date.today : Date.parse(date_str).strftime("%Y-%m-%d")
title_param = elts[[type_data].index("post_title")].to_s.parameterize
content = elts[[type_data].index("post_content_xhtml")].to_s
content = content.gsub('\"', '"').gsub('\n', "\n").gsub("/public/", "/assets/images/")
filepath = File.join(Dir.pwd, (draft ? "_drafts" : "_posts"), "#{date_str_formatted}-#{title_param}.html")
entire_content_file = " ---\n layout: post\n title: \"\#{elts[headers[type_data].index(\"post_title\")]}\"\n date: \#{elts[headers[type_data].index(\"post_creadt\")]} +0100\n tags: ABC\n ---\n\n \#{content}\n POST_FILE\n\n posts_and_drafts[elts[headers[type_data].index(\"post_id\")]] = { :path => filepath, :content => entire_content_file }\n elsif type_data == \"media\"\n elts[headers[type_data].index(\"media_title\")]\n mediafilepath = elts[headers[type_data].index(\"media_file\")]\n\n src_path = File.join(options[:mediafolder], mediafilepath)\n dst_path = File.join(Dir.pwd, \"assets\", \"images\", mediafilepath.to_s)\n\n FileUtils.mkdir_p(File.dirname(dst_path))\n FileUtils.cp(src_path, dst_path)\n elsif type_data == \"meta\"\n keywords[elts[headers[type_data].index(\"post_id\")]] ||= []\n keywords[elts[headers[type_data].index(\"post_id\")]] << elts[headers[type_data].index(\"meta_id\")]\n elsif type_data == \"link\"\n\n elsif type_data == \"setting\"\n\n elsif type_data == \"comment\"\n\n end\n end\n\n # POST-process : Change media path in posts and drafts\n posts_and_drafts.each do |post_id, hsh|\n keywords_str = keywords[post_id].to_a.join(\", \")\n content_file = hsh[:content]\n content_file = content_file.gsub(\"tags: ABC\", \"tags: [\#{keywords_str}]\")\n\n File.open(hsh[:path], \"wb\") do |f|\n f.write(content_file)\n end\n end\nend\n"
|