Changeset 2294 for lang/ruby/ssb
- Timestamp:
- 12/02/07 19:39:24 (13 months ago)
- Location:
- lang/ruby/ssb/trunk
- Files:
-
- 1 added
- 3 modified
-
dat/docomo-table.yaml (added)
-
libs/ssb.rb (modified) (3 diffs)
-
libs/ssb/emoji.rb (modified) (2 diffs)
-
test/emoji_test.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/ruby/ssb/trunk/libs/ssb.rb
r2260 r2294 146 146 end 147 147 148 page = SSB::Application.filter_html(page, request_uri, term, ssb )148 page = SSB::Application.filter_html(page, request_uri, term, ssb, response) 149 149 150 150 page = NKF::nkf('-w', page) … … 175 175 end 176 176 177 def self.filter_html(page, request_uri, term, ssb )177 def self.filter_html(page, request_uri, term, ssb, response) 178 178 # <?xml をけす。IEのバグ対応 179 179 page.gsub!(/<\?([^\?]+)\?>/) { |s| … … 211 211 212 212 # 絵文字を <img> に変換 213 page = Emoji::emoji_conv(term, page) 213 is_utf8 = response.respond_to?(:header) && (response.header['Content-Type'] =~ /utf-?8/i) 214 page = Emoji::emoji_conv(term, page, is_utf8) 214 215 215 216 page -
lang/ruby/ssb/trunk/libs/ssb/emoji.rb
r2289 r2294 26 26 end 27 27 28 def self.emoji_conv(term, str) 28 def self.docomo_uni2sjis(uni) 29 table = YAML.load_file(File.join(SSB::CONFIG[:dat_dir], 'docomo-table.yaml')) 30 table.each {|x| 31 if x['unicode'] == uni 32 return x['sjis'] 33 end 34 } 35 nil 36 end 37 38 def self.emoji_conv(term, str, is_utf8=false) 29 39 ret = str 30 # SJIS HEX Binary 40 41 # SJIS Binary 31 42 ret.gsub!(RE_IMODE_SJIS) do |s| 32 43 orig_match = $1 … … 35 46 else 36 47 orig_match 48 end 49 end 50 51 # UTF8 BINARY 52 if term.get_carrier == KtaiSpec::CARRIER_DOCOMO and is_utf8 53 ret.gsub!(/./) do |c| 54 sjis = SSB::Emoji.docomo_uni2sjis(sprintf "%X", c.unpack("U")[0]) 55 sjis ? sprintf('<img class="emoji" src="emoji/docomo/%s.gif" />', sjis) : c 37 56 end 38 57 end -
lang/ruby/ssb/trunk/test/emoji_test.rb
r2289 r2294 13 13 14 14 unit_tests do 15 def conv(carrier, str )16 SSB::Emoji.emoji_conv(Term.new(carrier), str )15 def conv(carrier, str, is_utf8=false) 16 SSB::Emoji.emoji_conv(Term.new(carrier), str, is_utf8) 17 17 end 18 18 … … 28 28 test 'docomo cref hex extension' do 29 29 assert_equal(conv(SSB::KtaiSpec::CARRIER_DOCOMO, ""), "<img class=\"emoji\" src=\"emoji/docomo/F9B1.gif\" />") 30 end 31 32 test 'docomo utf8 binary' do 33 assert_equal(conv(SSB::KtaiSpec::CARRIER_DOCOMO, "\xEE\x98\xBE", true), "<img class=\"emoji\" src=\"emoji/docomo/F89F.gif\" />") 30 34 end 31 35
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)