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 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: