gimli 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.textile CHANGED
@@ -11,6 +11,8 @@ It's inspired by the markup convertion in "gollum":https://github.com/github/gol
11
11
  It works by converting the markup to pdf using "PDFKit":https://github.com/jdpace/PDFKit
12
12
  The markup is converted to html using "github/markup":https://github.com/github/markup
13
13
 
14
+ Check out a small presentation here. "http://slides.wallgren.me/gimli":http://slides.wallgren.me/gimli
15
+
14
16
  h3. Markup
15
17
 
16
18
  Markup files may be written in any format supported by GitHub-Markup (except roff).
@@ -20,13 +20,24 @@ module Gimli
20
20
  # Convert the file and save it as a PDF file
21
21
  def convert!
22
22
  markup = Markup.new @file
23
- html = markup.render
23
+ html = convert_image_urls markup.render
24
24
 
25
25
  kit = pdf_kit(html)
26
26
 
27
27
  kit.to_file(output_file)
28
28
  end
29
29
 
30
+ # Rewrite relative image urls to absolute
31
+ # @param [String] html some html to parse
32
+ # @return [String] the html with all image urls replaced to absolute
33
+ def convert_image_urls(html)
34
+ html.scan(/<img[^>]+src="([^"]+)"/).each do |url|
35
+ html.gsub!(url[0], ::File.expand_path(url[0])) unless url[0] =~ /^https?/
36
+ end
37
+
38
+ html
39
+ end
40
+
30
41
  # Load the pdfkit with html
31
42
  # @param [String] html
32
43
  # @return [PDFKit]
data/lib/gimli/version.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Gimli
4
4
 
5
- Version = "0.1.4"
5
+ Version = "0.1.5"
6
6
 
7
7
  end
8
8
 
@@ -69,5 +69,34 @@ describe Gimli::Converter do
69
69
 
70
70
  converter.stylesheet.should == style
71
71
  end
72
+
73
+ it 'should convert relative image urls to absolute' do
74
+ file = Gimli::File.new 'fake'
75
+ converter = Gimli::Converter.new file
76
+
77
+ html = '<p>foo</p><img src="test.jpg" alt="" /><p>bar</p><img src="test2.jpg" alt="" />'
78
+ valid_html = "<p>foo</p><img src=\"#{File.expand_path('test.jpg')}\" alt=\"\" /><p>bar</p><img src=\"#{File.expand_path('test2.jpg')}\" alt=\"\" />"
79
+
80
+ converter.convert_image_urls(html).should == valid_html
81
+ end
82
+
83
+ it 'should not rewrite non relative urls' do
84
+ file = Gimli::File.new 'fake'
85
+ converter = Gimli::Converter.new file
86
+
87
+ html = '<p>foo</p><img src="https://d3nwyuy0nl342s.cloudfront.net/images/modules/header/logov3-hover.png" alt="" /><p>bar</p>'
88
+
89
+ converter.convert_image_urls(html).should == html
90
+ end
91
+
92
+ it 'should work on both absolute and relative images' do
93
+ file = Gimli::File.new 'fake'
94
+ converter = Gimli::Converter.new file
95
+
96
+ html = '<p>foo</p><img src="test.jpg" alt="" /><p>bar</p><img src="/tmp/test2.jpg" alt="" /> <img src="https://d3nwyuy0nl342s.cloudfront.net/images/modules/header/logov3-hover.png" alt="" />'
97
+ valid_html = "<p>foo</p><img src=\"#{File.expand_path('test.jpg')}\" alt=\"\" /><p>bar</p><img src=\"/tmp/test2.jpg\" alt=\"\" /> <img src=\"https://d3nwyuy0nl342s.cloudfront.net/images/modules/header/logov3-hover.png\" alt=\"\" />"
98
+
99
+ converter.convert_image_urls(html).should == valid_html
100
+ end
72
101
  end
73
102
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gimli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-05-09 00:00:00.000000000 +02:00
12
+ date: 2011-05-27 00:00:00.000000000 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
17
- requirement: &23142000 !ruby/object:Gem::Requirement
17
+ requirement: &20582820 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *23142000
25
+ version_requirements: *20582820
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: github-markup
28
- requirement: &23141560 !ruby/object:Gem::Requirement
28
+ requirement: &20582380 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *23141560
36
+ version_requirements: *20582380
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: redcarpet
39
- requirement: &23141140 !ruby/object:Gem::Requirement
39
+ requirement: &20581960 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *23141140
47
+ version_requirements: *20581960
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: RedCloth
50
- requirement: &23140720 !ruby/object:Gem::Requirement
50
+ requirement: &20581540 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *23140720
58
+ version_requirements: *20581540
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: org-ruby
61
- requirement: &23140300 !ruby/object:Gem::Requirement
61
+ requirement: &20581120 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *23140300
69
+ version_requirements: *20581120
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: creole
72
- requirement: &23139880 !ruby/object:Gem::Requirement
72
+ requirement: &20580700 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *23139880
80
+ version_requirements: *20580700
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: wikicloth
83
- requirement: &23139460 !ruby/object:Gem::Requirement
83
+ requirement: &20580280 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *23139460
91
+ version_requirements: *20580280
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: albino
94
- requirement: &23139040 !ruby/object:Gem::Requirement
94
+ requirement: &20579860 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *23139040
102
+ version_requirements: *20579860
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: nokogiri
105
- requirement: &23138620 !ruby/object:Gem::Requirement
105
+ requirement: &20579440 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '0'
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *23138620
113
+ version_requirements: *20579440
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: wkhtmltopdf-binary
116
- requirement: &23138200 !ruby/object:Gem::Requirement
116
+ requirement: &20579020 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: '0'
122
122
  type: :runtime
123
123
  prerelease: false
124
- version_requirements: *23138200
124
+ version_requirements: *20579020
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: pdfkit
127
- requirement: &23137780 !ruby/object:Gem::Requirement
127
+ requirement: &20578600 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ! '>='
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: '0'
133
133
  type: :runtime
134
134
  prerelease: false
135
- version_requirements: *23137780
135
+ version_requirements: *20578600
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: optiflag
138
- requirement: &23137360 !ruby/object:Gem::Requirement
138
+ requirement: &20573260 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ! '>='
@@ -143,10 +143,10 @@ dependencies:
143
143
  version: '0'
144
144
  type: :runtime
145
145
  prerelease: false
146
- version_requirements: *23137360
146
+ version_requirements: *20573260
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: rspec
149
- requirement: &23136940 !ruby/object:Gem::Requirement
149
+ requirement: &20572820 !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements:
152
152
  - - ! '>='
@@ -154,10 +154,10 @@ dependencies:
154
154
  version: '0'
155
155
  type: :development
156
156
  prerelease: false
157
- version_requirements: *23136940
157
+ version_requirements: *20572820
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: rr
160
- requirement: &23136520 !ruby/object:Gem::Requirement
160
+ requirement: &20572320 !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
163
  - - ! '>='
@@ -165,7 +165,7 @@ dependencies:
165
165
  version: '0'
166
166
  type: :development
167
167
  prerelease: false
168
- version_requirements: *23136520
168
+ version_requirements: *20572320
169
169
  description: Utility for converting markup files to pdf files. Useful for reports
170
170
  etc.
171
171
  email: fredrik.wallgren@gmail.com