docomo_css 0.2.1 → 0.2.2

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/Rakefile CHANGED
@@ -31,7 +31,7 @@ begin
31
31
  s.homepage = "http://www.milk1000.cc/"
32
32
  s.authors = ["milk1000cc", "Paul McMahon"]
33
33
  s.add_dependency 'hpricot'
34
- s.add_dependency 'milk1000cc-tiny_css'
34
+ s.add_dependency 'tiny_css'
35
35
  end
36
36
  rescue LoadError
37
37
  puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.2.2
data/docomo_css.gemspec CHANGED
@@ -1,12 +1,15 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
1
4
  # -*- encoding: utf-8 -*-
2
5
 
3
6
  Gem::Specification.new do |s|
4
7
  s.name = %q{docomo_css}
5
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
6
9
 
7
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
11
  s.authors = ["milk1000cc", "Paul McMahon"]
9
- s.date = %q{2009-06-11}
12
+ s.date = %q{2010-09-15}
10
13
  s.description = %q{Inlines CSS so that you can use external CSS with docomo handsets.}
11
14
  s.email = %q{info@milk1000.cc}
12
15
  s.extra_rdoc_files = [
@@ -22,13 +25,15 @@ Gem::Specification.new do |s|
22
25
  "init.rb",
23
26
  "lib/docomo_css.rb",
24
27
  "rails/init.rb",
28
+ "test/actual.css",
29
+ "test/actual.html",
25
30
  "test/docomo_css_test.rb",
31
+ "test/expected.html"
26
32
  ]
27
- s.has_rdoc = true
28
33
  s.homepage = %q{http://www.milk1000.cc/}
29
34
  s.rdoc_options = ["--charset=UTF-8"]
30
35
  s.require_paths = ["lib"]
31
- s.rubygems_version = %q{1.3.1}
36
+ s.rubygems_version = %q{1.3.7}
32
37
  s.summary = %q{CSS inliner}
33
38
  s.test_files = [
34
39
  "test/docomo_css_test.rb"
@@ -36,17 +41,18 @@ Gem::Specification.new do |s|
36
41
 
37
42
  if s.respond_to? :specification_version then
38
43
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
39
- s.specification_version = 2
44
+ s.specification_version = 3
40
45
 
41
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
42
- s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
46
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
+ s.add_runtime_dependency(%q<hpricot>, [">= 0"])
43
48
  s.add_runtime_dependency(%q<tiny_css>, [">= 0"])
44
49
  else
45
- s.add_dependency(%q<nokogiri>, [">= 0"])
50
+ s.add_dependency(%q<hpricot>, [">= 0"])
46
51
  s.add_dependency(%q<tiny_css>, [">= 0"])
47
52
  end
48
53
  else
49
- s.add_dependency(%q<nokogiri>, [">= 0"])
54
+ s.add_dependency(%q<hpricot>, [">= 0"])
50
55
  s.add_dependency(%q<tiny_css>, [">= 0"])
51
56
  end
52
57
  end
58
+
data/lib/docomo_css.rb CHANGED
@@ -15,8 +15,9 @@ module DocomoCss
15
15
 
16
16
  class DocomoCssFilter
17
17
  def after(controller)
18
- return unless controller.response.content_type == 'application/xhtml+xml'
18
+ return unless controller.response.content_type =~ /application\/xhtml\+xml/
19
19
  return unless controller.request.user_agent =~ /docomo/i
20
+ return if docomo_2_0_browser?(controller)
20
21
  body = escape_numeric_character_reference controller.response.body
21
22
  body = embed_css remove_xml_declare(body)
22
23
  controller.response.body = unescape_numeric_character_reference body
@@ -105,5 +106,11 @@ module DocomoCss
105
106
  def pseudo_selectors(css)
106
107
  css.style.keys.grep(/a:(link|focus|visited)/)
107
108
  end
109
+
110
+ private
111
+
112
+ def docomo_2_0_browser?(controller)
113
+ controller.request.user_agent =~ /DoCoMo\/2\.0 [^(]*\(c(\d+);/ && $1.to_i >= 500
114
+ end
108
115
  end
109
116
  end
data/test/actual.css ADDED
@@ -0,0 +1,4 @@
1
+ a:link { color: red; }
2
+ a:focus { color: green; }
3
+ a:visited { color: blue; }
4
+ div.content { background-color: #999 }
data/test/actual.html ADDED
@@ -0,0 +1,13 @@
1
+ <?xml version="1.0" encoding="Shift_JIS"?>
2
+ <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.3) 1.0//EN" "i-xhtml_4ja_10.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />
6
+ <link rel="stylesheet" href="/actual.css" />
7
+ </head>
8
+ <body>
9
+ <div class="content">
10
+ <a href="/">TOP</a>
11
+ </div>
12
+ </body>
13
+ </html>
@@ -155,15 +155,40 @@ a:visited { color: blue; }
155
155
  assert_equal '', @filter.remove_xml_declare('<?xml?>')
156
156
  end
157
157
 
158
- def test_output
158
+ def test_output_with_docomo_1_0_browser
159
+ request = stub('request', :user_agent => 'DoCoMo/2.0 D905i(c100;TB;W24H17)')
159
160
  response = stub("response") do
160
161
  expects(:content_type).returns('application/xhtml+xml')
161
162
  expects(:body).returns(File.open(File.join(File.dirname(__FILE__), 'actual.html'), 'rb'){ |f| f.read })
162
163
  expects(:body=).with(File.open(File.join(File.dirname(__FILE__), 'expected.html'), 'rb'){ |f| f.read })
163
164
  end
164
- controller = stub("controller", :response => response)
165
+ controller = stub("controller", :response => response, :request => request)
165
166
  @filter.stubs(:css_path).returns(File.join(File.dirname(__FILE__), 'actual.css'))
166
167
 
167
168
  @filter.after(controller)
168
169
  end
170
+
171
+ def test_output_with_docomo_1_0_browser_and_utf8_charset
172
+ request = stub('request', :user_agent => 'DoCoMo/2.0 D905i(c100;TB;W24H17)')
173
+ response = stub("response") do
174
+ expects(:content_type).returns('application/xhtml+xml; charset=utf-8')
175
+ expects(:body).returns(File.open(File.join(File.dirname(__FILE__), 'actual.html'), 'rb'){ |f| f.read })
176
+ expects(:body=).with(File.open(File.join(File.dirname(__FILE__), 'expected.html'), 'rb'){ |f| f.read })
177
+ end
178
+ controller = stub("controller", :response => response, :request => request)
179
+ @filter.stubs(:css_path).returns(File.join(File.dirname(__FILE__), 'actual.css'))
180
+
181
+ @filter.after(controller)
182
+ end
183
+
184
+ def test_output_with_docomo_2_0_browser
185
+ request = stub('request', :user_agent => 'DoCoMo/2.0 N03B(c500;TB;W24H16)')
186
+ response = stub("response") do
187
+ expects(:content_type).returns('application/xhtml+xml')
188
+ expects(:body).never
189
+ end
190
+ controller = stub("controller", :response => response, :request => request)
191
+
192
+ @filter.after(controller)
193
+ end
169
194
  end
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="Shift_JIS"?>
2
+ <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.3) 1.0//EN" "i-xhtml_4ja_10.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />
6
+ <link rel="stylesheet" href="/actual.css" />
7
+ <style type="text/css">
8
+ <![CDATA[
9
+ a:visited {
10
+ color: blue;
11
+ }
12
+ a:link {
13
+ color: red;
14
+ }
15
+ a:focus {
16
+ color: green;
17
+ }
18
+
19
+ ]]>
20
+ </style>
21
+ </head>
22
+ <body>
23
+ <div class="content" style="background-color:#999">
24
+ <a href="/">TOP</a>
25
+ </div>
26
+ </body>
27
+ </html>
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docomo_css
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 1
10
- version: 0.2.1
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - milk1000cc
@@ -16,11 +16,11 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2009-06-11 00:00:00 +09:00
19
+ date: 2010-09-15 00:00:00 +09:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
- name: nokogiri
23
+ name: hpricot
24
24
  prerelease: false
25
25
  requirement: &id001 !ruby/object:Gem::Requirement
26
26
  none: false
@@ -65,7 +65,10 @@ files:
65
65
  - init.rb
66
66
  - lib/docomo_css.rb
67
67
  - rails/init.rb
68
+ - test/actual.css
69
+ - test/actual.html
68
70
  - test/docomo_css_test.rb
71
+ - test/expected.html
69
72
  has_rdoc: true
70
73
  homepage: http://www.milk1000.cc/
71
74
  licenses: []
@@ -98,7 +101,7 @@ requirements: []
98
101
  rubyforge_project:
99
102
  rubygems_version: 1.3.7
100
103
  signing_key:
101
- specification_version: 2
104
+ specification_version: 3
102
105
  summary: CSS inliner
103
106
  test_files:
104
107
  - test/docomo_css_test.rb