Sha256: 6321dd6c3b087ac7cd53bdf5167004c7f4abb1966e488582b38a11ab27fa9e4d
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
# 出力変換 require 'scanf' module Jpmobile class Filter def initialize(app) @app = app end def call(env) # 入力を保存 mobile = env['rack.jpmobile'] status, env, response = @app.call(env) if env['Content-Type'].match?(%r{text/html|application/xhtml\+xml}) if mobile && mobile.apply_filter? type, charset = env['Content-Type'].split(/;\s*charset=/) body = response_to_body(response) body = body.gsub(/<input name="utf8" type="hidden" value="#{[0x2713].pack("U")}"[^>]*?>/, ' ') body = body.gsub(/<input name="utf8" type="hidden" value="✓"[^>]*?>/, ' ') response, charset = mobile.to_external(body, type, charset) if type && charset env['Content-Type'] = "#{type}; charset=#{charset}" end elsif Jpmobile::Emoticon.pc_emoticon? body = response_to_body(response) response = Jpmobile::Emoticon.emoticons_to_image(body) end end new_response = ::Rack::Response.new(response, status, env) new_response.finish end private def response_to_body(response) if response.respond_to?(:to_str) response.to_str elsif response.respond_to?(:each) body = [] response.each do |part| body << response_to_body(part) end body.join("\n") else body end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jpmobile-5.2.1 | lib/jpmobile/rack/filter.rb |
jpmobile-5.2.0 | lib/jpmobile/rack/filter.rb |