redmine_wiki_exporter 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
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.to_s.split('/').last
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("#{exporting_path}/images/#{url.split('/').last}.png")
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] = "images/#{img[:src].split('/').last}.png" if image_urls.include? 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
- link[:href] = "#{link[:href].to_s.split('/').last}.html" if link[:href].to_s.include? "/wiki/"
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("#{exporting_path}/#{page_name}.html", "w")
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("#{exporting_path}/images") rescue nil
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.split('/').last)
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.4"
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-05}
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
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
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
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-05 00:00:00.000000000Z
12
+ date: 2011-09-07 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hpricot
16
- requirement: &70151929352780 !ruby/object:Gem::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: *70151929352780
24
+ version_requirements: *70361266613640
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mechanize
27
- requirement: &70151929352300 !ruby/object:Gem::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: *70151929352300
35
+ version_requirements: *70361266613160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70151929368180 !ruby/object:Gem::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: *70151929368180
46
+ version_requirements: *70361266612680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &70151929367700 !ruby/object:Gem::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: *70151929367700
57
+ version_requirements: *70361266612200
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &70151929367220 !ruby/object:Gem::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: *70151929367220
68
+ version_requirements: *70361266611720
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &70151929366740 !ruby/object:Gem::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: *70151929366740
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: 538845770611641112
116
+ hash: 34952586860801575
117
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements: