decoration_mail 0.1.0
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/Gemfile +9 -0
- data/Gemfile.lock +39 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +44 -0
- data/Rakefile +37 -0
- data/VERSION +1 -0
- data/decoration_mail.gemspec +73 -0
- data/init.rb +3 -0
- data/lib/decoration_mail/base.rb +82 -0
- data/lib/decoration_mail/converter.rb +101 -0
- data/lib/decoration_mail/image.rb +34 -0
- data/lib/decoration_mail/message.rb +13 -0
- data/lib/decoration_mail.rb +13 -0
- data/spec/resources/au_decoration.eml +192 -0
- data/spec/resources/au_decoration_with_attachment.eml +666 -0
- data/spec/resources/docomo_decoration.eml +427 -0
- data/spec/resources/docomo_decoration_with_attachment.eml +585 -0
- data/spec/resources/softbank_decoration.eml +1822 -0
- data/spec/resources/softbank_decoration_with_attachment.eml +2728 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/unit/base_spec.rb +72 -0
- data/spec/unit/converter_spec.rb +155 -0
- metadata +143 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
3
|
+
|
4
|
+
describe DecorationMail::Base do
|
5
|
+
before {
|
6
|
+
@mail = Mail.read(File.expand_path('../../resources/docomo_decoration_with_attachment.eml', __FILE__))
|
7
|
+
@deco = @mail.decoration
|
8
|
+
}
|
9
|
+
|
10
|
+
subject { @deco }
|
11
|
+
|
12
|
+
it { should have(7).images }
|
13
|
+
|
14
|
+
context "using save method" do
|
15
|
+
it "ブロック付きで呼び出すべき" do
|
16
|
+
lambda { subject.save }.should raise_error(ArgumentError)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "ブロック変数はDecorationMail::Imageのインスタンスであるべき" do
|
20
|
+
images = []
|
21
|
+
subject.save do |image|
|
22
|
+
images << image
|
23
|
+
end
|
24
|
+
images.first.should be_instance_of DecorationMail::Image
|
25
|
+
end
|
26
|
+
|
27
|
+
it "HTMLが返るべき" do
|
28
|
+
html = subject.save do |image|
|
29
|
+
end
|
30
|
+
Hpricot.parse(html).search("div").should_not be_empty
|
31
|
+
end
|
32
|
+
|
33
|
+
it "HTMLにはHTMLタグが含まれない" do
|
34
|
+
html = subject.save do |image|
|
35
|
+
end
|
36
|
+
Hpricot.parse(html).search("html").should be_empty
|
37
|
+
end
|
38
|
+
|
39
|
+
it "HTMLにはHEADタグが含まれない" do
|
40
|
+
html = subject.save do |image|
|
41
|
+
end
|
42
|
+
Hpricot.parse(html).search("head").should be_empty
|
43
|
+
end
|
44
|
+
|
45
|
+
it "HTMLにはBODYタグが含まれない" do
|
46
|
+
html = subject.save do |image|
|
47
|
+
end
|
48
|
+
Hpricot.parse(html).search("body").should be_empty
|
49
|
+
end
|
50
|
+
|
51
|
+
it "ブロック変数にパスを渡すとIMGタグのSRCが書き換わるべき" do
|
52
|
+
html = subject.save do |image|
|
53
|
+
image.path = "http://exmaple.com"
|
54
|
+
end
|
55
|
+
html.should match /http:\/\/exmaple\.com/
|
56
|
+
end
|
57
|
+
|
58
|
+
it "other_imagesオプションで:topを指定すると添付画像をデコメ上部に貼り付ける" do
|
59
|
+
html = subject.save(:other_images => :top) do |image|
|
60
|
+
image.path = "other_image.jpg" unless image.content_id
|
61
|
+
end
|
62
|
+
html.should match /other_image\.jpg/
|
63
|
+
end
|
64
|
+
|
65
|
+
it "other_imagesオプションで:bottomを指定すると添付画像をデコメ上部に貼り付ける" do
|
66
|
+
html = subject.save(:other_images => :bottom) do |image|
|
67
|
+
image.path = "other_image.jpg" unless image.content_id
|
68
|
+
end
|
69
|
+
html.should match /other_image\.jpg/
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
3
|
+
|
4
|
+
|
5
|
+
describe DecorationMail::Converter do
|
6
|
+
describe "body tag" do
|
7
|
+
it "should convert body to div" do
|
8
|
+
html = Hpricot.parse('<body>ほげほげ</body>')
|
9
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
10
|
+
result.should eql '<div>ほげほげ</div>'
|
11
|
+
end
|
12
|
+
|
13
|
+
context "with bgcolor" do
|
14
|
+
it "should convert body to div and inline css" do
|
15
|
+
html = Hpricot.parse('<body bgcolor="#ffffff">ほげほげ</body>')
|
16
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
17
|
+
result.should eql '<div style="background-color:#ffffff;">ほげほげ</div>'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "font tag" do
|
23
|
+
context "color" do
|
24
|
+
it "should convert font to span and inline css" do
|
25
|
+
html = Hpricot.parse('<font color="#ffffff">ほげほげ</font>')
|
26
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
27
|
+
result.should eql '<span style="color:#ffffff;">ほげほげ</span>'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "size = 1" do
|
32
|
+
it "should convert font to span and inline css (xx-small)" do
|
33
|
+
html = Hpricot.parse('<font size="1">ほげほげ</font>')
|
34
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
35
|
+
result.should eql '<span style="font-size:xx-small;">ほげほげ</span>'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "size = 2" do
|
40
|
+
it "should convert font to span and inline css (x-small)" do
|
41
|
+
html = Hpricot.parse('<font size="2">ほげほげ</font>')
|
42
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
43
|
+
result.should eql '<span style="font-size:x-small;">ほげほげ</span>'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context "size = 3" do
|
48
|
+
it "should convert font to span and inline css (small)" do
|
49
|
+
html = Hpricot.parse('<font size="3">ほげほげ</font>')
|
50
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
51
|
+
result.should eql '<span style="font-size:small;">ほげほげ</span>'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context "size = 4" do
|
56
|
+
it "should convert font to span and inline css (medium)" do
|
57
|
+
html = Hpricot.parse('<font size="4">ほげほげ</font>')
|
58
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
59
|
+
result.should eql '<span style="font-size:medium;">ほげほげ</span>'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "size = 5" do
|
64
|
+
it "should convert font to span and inline css (large)" do
|
65
|
+
html = Hpricot.parse('<font size="5">ほげほげ</font>')
|
66
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
67
|
+
result.should eql '<span style="font-size:large;">ほげほげ</span>'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "size = 6" do
|
72
|
+
it "should convert font to span and inline css (x-large)" do
|
73
|
+
html = Hpricot.parse('<font size="6">ほげほげ</font>')
|
74
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
75
|
+
result.should eql '<span style="font-size:x-large;">ほげほげ</span>'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context "size = 7" do
|
80
|
+
it "should convert font to span and inline css (xx-large)" do
|
81
|
+
html = Hpricot.parse('<font size="7">ほげほげ</font>')
|
82
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
83
|
+
result.should eql '<span style="font-size:xx-large;">ほげほげ</span>'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context "size = 10 (invalid value)" do
|
88
|
+
it "should convert font to span and inline css (x-small)" do
|
89
|
+
html = Hpricot.parse('<font size="10">ほげほげ</font>')
|
90
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
91
|
+
result.should eql '<span style="font-size:x-small;">ほげほげ</span>'
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "div tag" do
|
97
|
+
context "align = left" do
|
98
|
+
it "should convert legacy attribute to inline css" do
|
99
|
+
html = Hpricot.parse('<div align="left">ほげほげ</div>')
|
100
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
101
|
+
result.should eql '<div style="text-align:left;">ほげほげ</div>'
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context "align = right" do
|
106
|
+
it "should convert legacy attribute to inline css" do
|
107
|
+
html = Hpricot.parse('<div align="right">ほげほげ</div>')
|
108
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
109
|
+
result.should eql '<div style="text-align:right;">ほげほげ</div>'
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context "align = center" do
|
114
|
+
it "should convert legacy attribute to inline css" do
|
115
|
+
html = Hpricot.parse('<div align="center">ほげほげ</div>')
|
116
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
117
|
+
result.should eql '<div style="text-align:center;">ほげほげ</div>'
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "blink tag" do
|
123
|
+
it "should convert blink to span and inline css" do
|
124
|
+
html = Hpricot.parse('<blink>ほげほげ</blink>')
|
125
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
126
|
+
result.should eql '<span style="text-decoration:blink;">ほげほげ</span>'
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
describe "marquee tag" do
|
131
|
+
context "behavior = scroll" do
|
132
|
+
it "should convert marquee to div and inline css" do
|
133
|
+
html = Hpricot.parse('<marquee behavior="scroll">ほげほげ</marquee>')
|
134
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
135
|
+
result.should eql '<div style="display:-wap-marquee;-wap-marquee-loop:infinite;">ほげほげ</div>'
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "behavior = alternate" do
|
140
|
+
it "should convert marquee to div and inline css" do
|
141
|
+
html = Hpricot.parse('<marquee behavior="alternate">ほげほげ</marquee>')
|
142
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
143
|
+
result.should eql '<div style="display:-wap-marquee;-wap-marquee-style:alternate;-wap-marquee-loop:infinite;">ほげほげ</div>'
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
context "without attribute" do
|
148
|
+
it "should convert marquee to div and inline css" do
|
149
|
+
html = Hpricot.parse('<marquee>ほげほげ</marquee>')
|
150
|
+
result = DecorationMail::Converter.convert_to_xhtml(html).to_html
|
151
|
+
result.should eql '<div style="display:-wap-marquee;-wap-marquee-loop:infinite;">ほげほげ</div>'
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: decoration_mail
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Dai Akatsuka
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-02-08 00:00:00 +09:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: mail
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 2
|
30
|
+
- 9
|
31
|
+
version: 2.2.9
|
32
|
+
type: :runtime
|
33
|
+
prerelease: false
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: hpricot
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
- 8
|
45
|
+
- 3
|
46
|
+
version: 0.8.3
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rspec
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
segments:
|
58
|
+
- 2
|
59
|
+
- 0
|
60
|
+
version: "2.0"
|
61
|
+
type: :development
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: jeweler
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: *id004
|
77
|
+
description: Decoration Mail Parser
|
78
|
+
email: d.akatsuka@gmail.com
|
79
|
+
executables: []
|
80
|
+
|
81
|
+
extensions: []
|
82
|
+
|
83
|
+
extra_rdoc_files:
|
84
|
+
- README.rdoc
|
85
|
+
files:
|
86
|
+
- Gemfile
|
87
|
+
- Gemfile.lock
|
88
|
+
- MIT-LICENSE
|
89
|
+
- README.rdoc
|
90
|
+
- Rakefile
|
91
|
+
- VERSION
|
92
|
+
- decoration_mail.gemspec
|
93
|
+
- init.rb
|
94
|
+
- lib/decoration_mail.rb
|
95
|
+
- lib/decoration_mail/base.rb
|
96
|
+
- lib/decoration_mail/converter.rb
|
97
|
+
- lib/decoration_mail/image.rb
|
98
|
+
- lib/decoration_mail/message.rb
|
99
|
+
- spec/resources/au_decoration.eml
|
100
|
+
- spec/resources/au_decoration_with_attachment.eml
|
101
|
+
- spec/resources/docomo_decoration.eml
|
102
|
+
- spec/resources/docomo_decoration_with_attachment.eml
|
103
|
+
- spec/resources/softbank_decoration.eml
|
104
|
+
- spec/resources/softbank_decoration_with_attachment.eml
|
105
|
+
- spec/spec_helper.rb
|
106
|
+
- spec/unit/base_spec.rb
|
107
|
+
- spec/unit/converter_spec.rb
|
108
|
+
has_rdoc: true
|
109
|
+
homepage: https://github.com/dakatsuka/decoration_mail
|
110
|
+
licenses: []
|
111
|
+
|
112
|
+
post_install_message:
|
113
|
+
rdoc_options: []
|
114
|
+
|
115
|
+
require_paths:
|
116
|
+
- lib
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
version: "0"
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
segments:
|
131
|
+
- 0
|
132
|
+
version: "0"
|
133
|
+
requirements: []
|
134
|
+
|
135
|
+
rubyforge_project:
|
136
|
+
rubygems_version: 1.3.7
|
137
|
+
signing_key:
|
138
|
+
specification_version: 3
|
139
|
+
summary: Decoration Mail Parser
|
140
|
+
test_files:
|
141
|
+
- spec/spec_helper.rb
|
142
|
+
- spec/unit/base_spec.rb
|
143
|
+
- spec/unit/converter_spec.rb
|