galakei 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- galakei (0.9.0)
4
+ galakei (0.10.0)
5
5
  actionpack (~> 3.0.3)
6
6
  css_parser
7
7
  nokogiri
@@ -107,7 +107,7 @@ GEM
107
107
  rspec (~> 2.5.0)
108
108
  rubyzip (0.9.4)
109
109
  sanitize (2.0.3)
110
- nokogiri (>= 1.4.4, < 1.6)
110
+ nokogiri (< 1.6, >= 1.4.4)
111
111
  selenium-webdriver (0.1.3)
112
112
  childprocess (~> 0.1.5)
113
113
  ffi (~> 0.6.3)
data/lib/galakei/email.rb CHANGED
@@ -10,9 +10,15 @@ module Galakei::Email
10
10
  /^.+@emnet\.ne\.jp$/,
11
11
  /^.+@docomo\.ne\.jp$/ ]
12
12
 
13
- SANITIZE_OPTIONS = {
14
- :elements => %w{br a div hr},
15
- :attributes => {'a' => ['href'] },
13
+ SANITIZE_OPTIONS = {
14
+ :elements => %w{font blink marquee br a div hr img},
15
+ :attributes => {'a' => ['href'],
16
+ 'font' => ['size','color'],
17
+ 'marquee' => ['behaviour'],
18
+ 'hr' => ['color'],
19
+ 'div' => ['align'],
20
+ 'img' => ['src'],
21
+ },
16
22
  :protocols => {'a' => {'href' => ['http', 'https', 'mailto']}},
17
23
  :whitespace_elements => []
18
24
  }
@@ -29,9 +35,9 @@ module Galakei::Email
29
35
  node.name = "div"
30
36
  node.after("<br />")
31
37
  end
32
-
38
+ encoding = doc.meta_encoding || "UTF-8"
33
39
  res = "<html><head>"
34
- res << "<meta http-equiv=\"Content-type\" content=\"text/html;charset=#{doc.meta_encoding}\" />"
40
+ res << "<meta http-equiv=\"Content-type\" content=\"text/html;charset=#{encoding}\" />"
35
41
  res << "</head><body>"
36
42
  res << Sanitize.clean(doc.to_s, SANITIZE_OPTIONS)
37
43
  res << "</body></html>"
@@ -1,3 +1,3 @@
1
1
  module Galakei
2
- VERSION = "0.10.0"
2
+ VERSION = "0.10.1"
3
3
  end
@@ -5,22 +5,17 @@ describe Galakei::Email do
5
5
 
6
6
  it "should not have h tags" do
7
7
  html_email = '<h1>Email big heading</h1><h2>Second heading</h2><h6>Sixth heading</h6>'
8
- Galakei::Email.to_galakei_email(html_email).should =~ /^((?!h[0-9]).)*$/
8
+ Galakei::Email.to_galakei_email(html_email).should_not =~ /<h[0-9]>/
9
9
  end
10
10
 
11
- it "should not have images" do
12
- html_email='<a href="http://dragonmobile.nuancemobiledeveloper.com/"><img src="http://www.mobilemonday.jp/wp-content/uploads/2011/01/NMDP.jpg" alt=""></a>this was an image'
13
- Galakei::Email.to_galakei_email(html_email).should =~ /^((?!img).)*$/
11
+ it "should have images with cid" do
12
+ html_email='<a href="http://dragonmobile.nuancemobiledeveloper.com/"><img src="cid:image-attachment-id" alt=""/></a>this was an image'
13
+ Galakei::Email.to_galakei_email(html_email).should =~ /img.*cid/m
14
14
  end
15
15
 
16
16
  it "should not have unsupported protocols" do
17
- html_email='<a href="ftp://some.ftpsite.com/">Downloadz youz warez herez</a>'
18
- Galakei::Email.to_galakei_email(html_email).should =~ /^((?!ftp).)*$/m
19
- end
20
-
21
- it "should not have head elements" do
22
- html_email='<html><head><meta http-equiv="blah" content=""><title>Document X</title><head><body></body></html>'
23
- Galakei::Email.to_galakei_email(html_email).should =~ /^((?!head).)*$/
17
+ html_email='<a href="ftp://some.ftpsite.com/">Downloadz youz warez herez</a> Monsieur'
18
+ Galakei::Email.to_galakei_email(html_email).should_not =~ /ftpsite/
24
19
  end
25
20
 
26
21
  it "should have a html, head, meta and body" do
@@ -29,8 +24,13 @@ describe Galakei::Email do
29
24
  end
30
25
 
31
26
  it "should have div,href,br,hr elements" do
32
- html_email='<div><a href="http://dragonmobile.nuancemobiledeveloper.com/"><img src="http://www.mobilemonday.jp/wp-content/uploads/2011/01/NMDP.jpg" alt=""></a></div><hr> <br><div class="register_button"><a href="http://gigs.checkin.local:3000/events/2/tickets/new?auth_token=demo">Register</a></div>'
33
- Galakei::Email.to_galakei_email(html_email).should =~ /div(.*)href(.*)hr(.*)br/m
27
+ html_email='<div align="center"><a href="http://dragonmobile.nuancemobiledeveloper.com/"><img src="http://www.mobilemonday.jp/wp-content/uploads/2011/01/NMDP.jpg" alt=""></a></div><hr color="blue"> <br><div class="register_button"><a href="http://gigs.checkin.local:3000/events/2/tickets/new?auth_token=demo">Register</a></div>'
28
+ Galakei::Email.to_galakei_email(html_email).should =~ /div(.*)align(.*)href(.*)hr(.*)blue(.*)br/m
29
+ end
30
+
31
+ it "should allow font, blink and marquee elements" do
32
+ html_email='<div align="center"><font size="2" color="red">NEWS FLASH</font><blink>plink plink plink the nineties!</blink><marquee behaviour="scroll">This is corn!</marquee></div>'
33
+ Galakei::Email.to_galakei_email(html_email).should =~ /font(.*)size(.*)color(.*)blink(.*)marquee(.*)behaviour/m
34
34
  end
35
35
 
36
36
  end
metadata CHANGED
@@ -1,80 +1,107 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: galakei
3
- version: !ruby/object:Gem::Version
4
- version: 0.10.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 53
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 10
9
+ - 1
10
+ version: 0.10.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Paul McMahon
9
14
  - Michael Reinsch
10
15
  - Yuki Akamatsu
11
16
  autorequire:
12
17
  bindir: bin
13
18
  cert_chain: []
14
- date: 2011-09-02 00:00:00.000000000Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
19
+
20
+ date: 2011-09-08 00:00:00 Z
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
17
23
  name: actionpack
18
- requirement: &2157761600 !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
19
26
  none: false
20
- requirements:
27
+ requirements:
21
28
  - - ~>
22
- - !ruby/object:Gem::Version
29
+ - !ruby/object:Gem::Version
30
+ hash: 1
31
+ segments:
32
+ - 3
33
+ - 0
34
+ - 3
23
35
  version: 3.0.3
24
36
  type: :runtime
25
- prerelease: false
26
- version_requirements: *2157761600
27
- - !ruby/object:Gem::Dependency
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
28
39
  name: rack
29
- requirement: &2157761100 !ruby/object:Gem::Requirement
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
30
42
  none: false
31
- requirements:
32
- - - ! '>='
33
- - !ruby/object:Gem::Version
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 29
47
+ segments:
48
+ - 1
49
+ - 2
50
+ - 1
34
51
  version: 1.2.1
35
52
  type: :runtime
36
- prerelease: false
37
- version_requirements: *2157761100
38
- - !ruby/object:Gem::Dependency
53
+ version_requirements: *id002
54
+ - !ruby/object:Gem::Dependency
39
55
  name: css_parser
40
- requirement: &2157760720 !ruby/object:Gem::Requirement
56
+ prerelease: false
57
+ requirement: &id003 !ruby/object:Gem::Requirement
41
58
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
46
66
  type: :runtime
47
- prerelease: false
48
- version_requirements: *2157760720
49
- - !ruby/object:Gem::Dependency
67
+ version_requirements: *id003
68
+ - !ruby/object:Gem::Dependency
50
69
  name: nokogiri
51
- requirement: &2157760260 !ruby/object:Gem::Requirement
70
+ prerelease: false
71
+ requirement: &id004 !ruby/object:Gem::Requirement
52
72
  none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
56
- version: '0'
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
57
80
  type: :runtime
58
- prerelease: false
59
- version_requirements: *2157760260
60
- - !ruby/object:Gem::Dependency
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
61
83
  name: sanitize
62
- requirement: &2157759840 !ruby/object:Gem::Requirement
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
63
86
  none: false
64
- requirements:
65
- - - ! '>='
66
- - !ruby/object:Gem::Version
67
- version: '0'
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
68
94
  type: :runtime
69
- prerelease: false
70
- version_requirements: *2157759840
71
- description: Japanese feature phones (a.k.a., keitai, galakei) have a number of restrictions
72
- over normal web browsers. This library adds support for them
95
+ version_requirements: *id005
96
+ description: Japanese feature phones (a.k.a., keitai, galakei) have a number of restrictions over normal web browsers. This library adds support for them
73
97
  email: info@mobalean.com
74
98
  executables: []
99
+
75
100
  extensions: []
101
+
76
102
  extra_rdoc_files: []
77
- files:
103
+
104
+ files:
78
105
  - .gitignore
79
106
  - Gemfile
80
107
  - Gemfile.lock
@@ -138,26 +165,36 @@ files:
138
165
  - spec/spec_helper.rb
139
166
  homepage: http://www.mobalean.com
140
167
  licenses: []
168
+
141
169
  post_install_message:
142
170
  rdoc_options: []
143
- require_paths:
171
+
172
+ require_paths:
144
173
  - lib
145
- required_ruby_version: !ruby/object:Gem::Requirement
174
+ required_ruby_version: !ruby/object:Gem::Requirement
146
175
  none: false
147
- requirements:
148
- - - ! '>='
149
- - !ruby/object:Gem::Version
150
- version: '0'
151
- required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ hash: 3
180
+ segments:
181
+ - 0
182
+ version: "0"
183
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
184
  none: false
153
- requirements:
154
- - - ! '>='
155
- - !ruby/object:Gem::Version
156
- version: '0'
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ hash: 3
189
+ segments:
190
+ - 0
191
+ version: "0"
157
192
  requirements: []
193
+
158
194
  rubyforge_project: galakei
159
195
  rubygems_version: 1.8.6
160
196
  signing_key:
161
197
  specification_version: 3
162
198
  summary: Japanese feature phones support
163
199
  test_files: []
200
+