galakei 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -47,6 +47,8 @@ EOD
47
47
  [BorderAdapter, BackGroundAdapter, FontAdapter]
48
48
  when 'p'
49
49
  [BackGroundAdapter, FontAdapter]
50
+ when 'td'
51
+ [FontAdapter]
50
52
  when 'div'
51
53
  [BorderAdapter]
52
54
  else
@@ -6,7 +6,8 @@ class Galakei::Filter::NonStandardChar < Galakei::Filter::Base
6
6
  end
7
7
 
8
8
  def condition?
9
- response.content_type =~ %r{text/html|application/xhtml+xml}
9
+ response.content_type =~ %r{text/html|application/xhtml+xml} &&
10
+ (response.charset || Rails.application.config.encoding).downcase == "utf-8"
10
11
  end
11
12
 
12
13
  def filter
@@ -0,0 +1,17 @@
1
+ # Takes care of recoding pages to Shift-JIS for some handsets when required
2
+ class Galakei::Filter::Recode < Galakei::Filter::Base
3
+ def self.inject(klass)
4
+ this_class = self
5
+ klass.after_filter self, :if => lambda {|c| this_class.condition?(c) }
6
+ end
7
+
8
+ def condition?
9
+ request.ssl? && request.au?
10
+ end
11
+
12
+ def filter
13
+ doc = Nokogiri::HTML(response.body)
14
+ response.body = doc.serialize(:encoding => 'Shift_JIS')
15
+ response.charset = "Shift_JIS"
16
+ end
17
+ end
@@ -4,7 +4,7 @@ module Galakei
4
4
  initializer "galakei.extend.action_controller" do |app|
5
5
  ActiveSupport.on_load :action_controller do
6
6
  include Galakei::HelperMethods
7
- filters = %w[Views ContentType NonStandardChar]
7
+ filters = %w[Views ContentType Recode NonStandardChar]
8
8
  filters << :Haml if defined?(Haml)
9
9
  filters.each {|f| Galakei::Filter.const_get(f).inject(self) }
10
10
  end
@@ -1,3 +1,3 @@
1
1
  module Galakei
2
- VERSION = "0.6.1"
2
+ VERSION = "0.6.2"
3
3
  end
data/lib/galakei.rb CHANGED
@@ -18,7 +18,8 @@ module Galakei
18
18
  autoload :Base, "galakei/filter/base"
19
19
  autoload :ContentType, "galakei/filter/content_type"
20
20
  autoload :Haml, "galakei/filter/haml"
21
- autoload :Views, "galakei/filter/views"
22
21
  autoload :NonStandardChar, "galakei/filter/non_standard_char"
22
+ autoload :Recode, "galakei/filter/recode"
23
+ autoload :Views, "galakei/filter/views"
23
24
  end
24
25
  end
@@ -0,0 +1,15 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/acceptance_helper')
3
+
4
+ class RecodeController < ApplicationController
5
+ def index
6
+ render :layout => true, :inline => "Test"
7
+ end
8
+ end
9
+
10
+ feature 'recode' do
11
+ scenario 'au SSL', :driver => :au do
12
+ visit 'https://www.example.com/recode/index'
13
+ page.find(:xpath, '//head/meta')['content'].should == "text/html; charset=Shift_JIS"
14
+ end
15
+ end
@@ -79,7 +79,7 @@ EOD
79
79
  end
80
80
  end
81
81
 
82
- ((1..6).map {|i| "h#{i}"} + %w[p]).each do |tag|
82
+ ((1..6).map {|i| "h#{i}"} + %w[p td]).each do |tag|
83
83
  context "style applied to #{tag}" do
84
84
  before do
85
85
  parser = CssParser::Parser.new
@@ -110,20 +110,48 @@ EOD
110
110
  doc.at("//#{tag}").to_s.should == %Q{<#{tag} class="fontsize"><span style="font-size: x-small;">foo<br>bar</span></#{tag}>}
111
111
  end
112
112
 
113
+ it "should applied css of tag omitted" do
114
+ doc = Nokogiri::HTML("<#{tag} class='classonly'>foo</#{tag}>")
115
+ @stylesheet.apply(doc)
116
+ doc.at("//#{tag}").to_s.should == %Q{<#{tag} class="classonly" style="line-height: 1px;">foo</#{tag}>}
117
+ end
118
+ end
119
+ end
120
+
121
+
122
+ ((1..6).map {|i| "h#{i}"} + %w[p]).each do |tag|
123
+ context "style applied to #{tag}" do
124
+ before do
125
+ parser = CssParser::Parser.new
126
+ parser.add_block!(<<-EOD)
127
+ #{tag}.backgroundcolor { background-color: blue; }
128
+ EOD
129
+ @stylesheet = described_class.new(parser)
130
+ end
113
131
  it "should wrap element in div for background-color" do
114
132
  doc = Nokogiri::HTML("<#{tag} class='backgroundcolor'>foo</#{tag}>")
115
133
  @stylesheet.apply(doc)
116
134
  doc.at("//div").to_s.should == %Q{<div style="background-color: blue;"><#{tag} class="backgroundcolor">foo</#{tag}></div>}
117
135
  end
136
+ end
137
+ end
118
138
 
119
- it "should applied css of tag omitted" do
120
- doc = Nokogiri::HTML("<#{tag} class='classonly'>foo</#{tag}>")
121
- @stylesheet.apply(doc)
122
- doc.at("//#{tag}").to_s.should == %Q{<#{tag} class="classonly" style="line-height: 1px;">foo</#{tag}>}
123
- end
139
+ context "style applied to td" do
140
+ before do
141
+ parser = CssParser::Parser.new
142
+ parser.add_block!(<<-EOD)
143
+ td { background-color: blue; }
144
+ EOD
145
+ @stylesheet = described_class.new(parser)
146
+ end
147
+ it "should wrap element in div for background-color" do
148
+ doc = Nokogiri::HTML("<td>foo</td>")
149
+ @stylesheet.apply(doc)
150
+ doc.at("//td").to_s.should == %Q{<td style="background-color: blue;">foo</td>}
124
151
  end
125
152
  end
126
153
 
154
+
127
155
  context "style applied to child of h1" do
128
156
  before do
129
157
  parser = CssParser::Parser.new
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 1
9
- version: 0.6.1
8
+ - 2
9
+ version: 0.6.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Paul McMahon
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-04-15 00:00:00 +09:00
19
+ date: 2011-04-19 00:00:00 +09:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -105,6 +105,7 @@ files:
105
105
  - lib/galakei/filter/content_type.rb
106
106
  - lib/galakei/filter/haml.rb
107
107
  - lib/galakei/filter/non_standard_char.rb
108
+ - lib/galakei/filter/recode.rb
108
109
  - lib/galakei/filter/views.rb
109
110
  - lib/galakei/helper_methods.rb
110
111
  - lib/galakei/input_mode.rb
@@ -125,6 +126,7 @@ files:
125
126
  - spec/acceptance/handset_detection_spec.rb
126
127
  - spec/acceptance/input_mode_spec.rb
127
128
  - spec/acceptance/non_standard_char_spec.rb
129
+ - spec/acceptance/recode_spec.rb
128
130
  - spec/acceptance/session_spec.rb
129
131
  - spec/acceptance/support/capybara_ssl_fix.rb
130
132
  - spec/acceptance/support/handsets.rb