redmine_wiki_exporter 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/redmine_wiki_exporter.rb +59 -8
- data/redmine_wiki_exporter.gemspec +2 -2
- data/spec/redmine_wiki_exporter_spec.rb +10 -2
- metadata +15 -15
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
@@ -15,6 +15,24 @@ end
|
|
15
15
|
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
|
16
16
|
|
17
17
|
class RedmineWikiExporter
|
18
|
+
class WikiURL
|
19
|
+
def url
|
20
|
+
@url
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(url)
|
24
|
+
@url = url
|
25
|
+
end
|
26
|
+
|
27
|
+
def wikiname
|
28
|
+
url.to_s.split('/').last
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def url_to_wikiname(url)
|
33
|
+
WikiURL.new(url).wikiname
|
34
|
+
end
|
35
|
+
|
18
36
|
def root_url
|
19
37
|
@root_url
|
20
38
|
end
|
@@ -27,15 +45,34 @@ class RedmineWikiExporter
|
|
27
45
|
@agent
|
28
46
|
end
|
29
47
|
|
48
|
+
def homepage_wikiname
|
49
|
+
@homepage_wikiname
|
50
|
+
end
|
51
|
+
def homepage_wikiname=(wikiname)
|
52
|
+
@homepage_wikiname = wikiname
|
53
|
+
end
|
54
|
+
|
30
55
|
def exporting_path
|
31
56
|
@exporting_path
|
32
57
|
end
|
33
58
|
def exporting_path=(path)
|
34
|
-
@exporting_path = path
|
59
|
+
@exporting_path = "#{path}/"
|
60
|
+
end
|
61
|
+
def html_dir_name
|
62
|
+
"html"
|
63
|
+
end
|
64
|
+
def html_path
|
65
|
+
"#{exporting_path}#{html_dir_name}/"
|
66
|
+
end
|
67
|
+
def image_dir_name
|
68
|
+
"images"
|
69
|
+
end
|
70
|
+
def image_path
|
71
|
+
"#{html_path}#{image_dir_name}/"
|
35
72
|
end
|
36
73
|
|
37
74
|
def page_name
|
38
|
-
agent.page.uri
|
75
|
+
url_to_wikiname(agent.page.uri)
|
39
76
|
end
|
40
77
|
|
41
78
|
def initialize(root, project)
|
@@ -59,7 +96,7 @@ class RedmineWikiExporter
|
|
59
96
|
def save_images
|
60
97
|
agent.page.images.map {|i| i.url}.select {|url| url.include? "/attachments/download/"}.each do |url|
|
61
98
|
image = agent.get(url)
|
62
|
-
image.save("#{
|
99
|
+
image.save("#{image_path}#{url_to_wikiname(url)}.png")
|
63
100
|
end
|
64
101
|
end
|
65
102
|
|
@@ -69,19 +106,33 @@ class RedmineWikiExporter
|
|
69
106
|
doc = Hpricot(agent.page.body)
|
70
107
|
wiki = (doc/"div.wiki")
|
71
108
|
(wiki/:img).each do |img|
|
72
|
-
img[:src] = "
|
109
|
+
img[:src] = "#{image_dir_name}/#{url_to_wikiname(img[:src])}.png" if image_urls.include? img[:src]
|
73
110
|
end
|
74
111
|
(wiki/:a).each do |link|
|
75
|
-
|
112
|
+
link_wikiname = url_to_wikiname(link[:href])
|
113
|
+
if link_wikiname == homepage_wikiname
|
114
|
+
page_filename = "../#{link_wikiname}.html"
|
115
|
+
else
|
116
|
+
page_filename = "#{link_wikiname}.html"
|
117
|
+
end
|
118
|
+
page_filename = "#{html_dir_name}/#{link_wikiname}.html" if url_to_wikiname(agent.page.uri) == homepage_wikiname
|
119
|
+
link[:href] = "#{page_filename}" if link[:href].to_s.include? "/wiki/"
|
120
|
+
end
|
121
|
+
|
122
|
+
if url_to_wikiname(agent.page.uri) == homepage_wikiname
|
123
|
+
filename = "#{exporting_path}#{page_name}.html"
|
124
|
+
else
|
125
|
+
filename = "#{html_path}#{page_name}.html"
|
76
126
|
end
|
77
|
-
file = open(
|
127
|
+
file = open(filename, "w")
|
78
128
|
file.write(header + wiki.inner_html + footer)
|
79
129
|
file.close
|
80
130
|
end
|
81
131
|
|
82
132
|
def mkdirs
|
83
133
|
Dir::mkdir("#{exporting_path}") rescue nil
|
84
|
-
Dir::mkdir("#{
|
134
|
+
Dir::mkdir("#{html_path}") rescue nil
|
135
|
+
Dir::mkdir("#{image_path}") rescue nil
|
85
136
|
end
|
86
137
|
|
87
138
|
def save(wiki_name)
|
@@ -110,7 +161,7 @@ class RedmineWikiExporter
|
|
110
161
|
|
111
162
|
def scrape
|
112
163
|
wiki_urls.select(&scraping_selector).each do |url|
|
113
|
-
save(url
|
164
|
+
save(url_to_wikiname(url))
|
114
165
|
end
|
115
166
|
end
|
116
167
|
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{redmine_wiki_exporter}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Toshiyuki Hirooka}]
|
12
|
-
s.date = %q{2011-09-
|
12
|
+
s.date = %q{2011-09-07}
|
13
13
|
s.description = %q{redmine wiki exporter}
|
14
14
|
s.email = %q{toshi.hirooka@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -1,7 +1,15 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
3
|
describe "RedmineWikiExporter" do
|
4
|
-
|
5
|
-
|
4
|
+
context "#url_to_wikiname" do
|
5
|
+
let(:exporter) { RedmineWikiExporter.new(nil, nil) }
|
6
|
+
context do
|
7
|
+
subject { exporter.url_to_wikiname("http://foo/bar/baz") }
|
8
|
+
it { should == "baz" }
|
9
|
+
end
|
10
|
+
context do
|
11
|
+
subject { exporter.url_to_wikiname("http://foo/bar/") }
|
12
|
+
it { should == "bar" }
|
13
|
+
end
|
6
14
|
end
|
7
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redmine_wiki_exporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-07 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hpricot
|
16
|
-
requirement: &
|
16
|
+
requirement: &70361266613640 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70361266613640
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: mechanize
|
27
|
-
requirement: &
|
27
|
+
requirement: &70361266613160 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70361266613160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70361266612680 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.3.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70361266612680
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &70361266612200 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70361266612200
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70361266611720 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.6.4
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70361266611720
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rcov
|
71
|
-
requirement: &
|
71
|
+
requirement: &70361266611240 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70361266611240
|
80
80
|
description: redmine wiki exporter
|
81
81
|
email: toshi.hirooka@gmail.com
|
82
82
|
executables: []
|
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
segments:
|
115
115
|
- 0
|
116
|
-
hash:
|
116
|
+
hash: 34952586860801575
|
117
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|