Changeset 2282 for lang/ruby/ssb

Show
Ignore:
Timestamp:
12/02/07 15:51:18 (13 months ago)
Author:
tokuhirom
Message:

lang/ruby/ssb: added ez hex cref pictogram support.

Location:
lang/ruby/ssb/trunk
Files:
2 added
4 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/ssb/trunk/README

    r2212 r2282  
    7474 - ursm 
    7575 - lchin 
     76 - id:miyagawa 
  • lang/ruby/ssb/trunk/config/common.rb

    r2196 r2282  
    1717  CONFIG[:config_dir] = File.join(SSB::CONFIG[:home_dir], 'config') 
    1818  CONFIG[:config_file] = File.join(SSB::CONFIG[:config_dir], 'config.yaml') 
     19  CONFIG[:dat_dir] = File.join(SSB::CONFIG[:home_dir], 'dat') 
    1920  CONFIG[:default_uri] = 'http://localhost/' 
    2021end 
  • lang/ruby/ssb/trunk/libs/ssb/emoji.rb

    r2277 r2282  
    66# $Id$ 
    77# 
     8require 'yaml' 
    89 
    910module SSB 
     
    1314    SJIS_IMODE_PICTOGRAM = '\xF8[\x9F-\xFC]|\xF9[\x40-\x7E\x80-\xB0]|\xF9[\xB1-\xFC]' 
    1415    RE_IMODE_SJIS = Regexp.new("((#{SJIS_IMODE_PICTOGRAM})|(#{SJIS_ONE_BYTE}|#{SJIS_TWO_BYTES}))") 
     16 
     17    # TODO: speed up! 
     18    def self.ez_uni2number(uni) 
     19      table = YAML.load_file(File.join(SSB::CONFIG[:dat_dir], 'kddi-table.yaml')) 
     20      table.each {|x| 
     21        if x['unicode'] == uni 
     22          return x['number'] 
     23        end 
     24      } 
     25      nil 
     26    end 
    1527 
    1628    def self.emoji_conv(term, str) 
     
    3244 
    3345      # UNICODE 16進数実体参照 (とりあえず拡張絵文字だけ) 
    34       ret.gsub!(/&#x([0-9a-zA-Z]+);/) do |s| 
     46      ret.gsub!(/(&#x([0-9a-zA-Z]+);)/) do |s| 
    3547        code = 
    36           case ($1.hex) 
     48          case ($2.hex) 
    3749          when 0xE63E..0xE69B 
    3850            # 4705 
    39             $1.hex + 4705 
     51            $2.hex + 4705 
    4052          when 0xE69C..0xE6DA, 0xE6AC..0xE6BA 
    4153            # 4772 
    42             $1.hex + 4772 
     54            $2.hex + 4772 
    4355          when 0xE6DB..0xE70A, 0xE70C..0xE757 
    4456            # 4773 
    45             $1.hex + 4773 
     57            $2.hex + 4773 
    4658          else 
    47             $1.hex 
     59            $1 
    4860          end 
    49         '<img class="emoji" src="emoji/docomo/' + (code).to_s(16).upcase + '.gif" />' 
     61        if code.is_a?(Integer) 
     62          '<img class="emoji" src="emoji/docomo/' + (code).to_s(16).upcase + '.gif" />' 
     63        else 
     64          code 
     65        end 
    5066      end 
    5167 
    5268      # KDDI localsrc 
    5369      if term.get_carrier == KtaiSpec::CARRIER_KDDI 
     70        ret.gsub!(/(&#x([0-9a-zA-Z]+);)/) do |s| 
     71          number = SSB::Emoji.ez_uni2number($2) 
     72          if number.nil? 
     73            $1 
     74          else 
     75            sprintf '<img class="emoji" src="emoji/kddi/%03d.gif" />', number 
     76          end 
     77        end 
     78 
    5479        ret.gsub!(/ (localsrc)=\"?([^>\" ]+)\"?/im) { |s| 
    5580          ' class="emoji" src="emoji/kddi/' + '%03d' % $2.to_i + '.gif"' 
  • lang/ruby/ssb/trunk/test/emoji_test.rb

    r2277 r2282  
    3434    assert_equal(conv(SSB::KtaiSpec::CARRIER_KDDI, '<img localsrc="54" />'), "<img class=\"emoji\" src=\"emoji/kddi/054.gif\" />") 
    3535  end 
     36 
     37  test 'ezweb cref hex' do 
     38    assert_equal(conv(SSB::KtaiSpec::CARRIER_KDDI, '&#xE481;'), "<img class=\"emoji\" src=\"emoji/kddi/001.gif\" />") 
     39  end 
    3640   
    3741  # thirdforce