Changeset 2282 for lang/ruby/ssb
- Timestamp:
- 12/02/07 15:51:18 (13 months ago)
- Location:
- lang/ruby/ssb/trunk
- Files:
-
- 2 added
- 4 modified
-
README (modified) (1 diff)
-
config/common.rb (modified) (1 diff)
-
dat (added)
-
dat/kddi-table.yaml (added)
-
libs/ssb/emoji.rb (modified) (3 diffs)
-
test/emoji_test.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/ruby/ssb/trunk/README
r2212 r2282 74 74 - ursm 75 75 - lchin 76 - id:miyagawa -
lang/ruby/ssb/trunk/config/common.rb
r2196 r2282 17 17 CONFIG[:config_dir] = File.join(SSB::CONFIG[:home_dir], 'config') 18 18 CONFIG[:config_file] = File.join(SSB::CONFIG[:config_dir], 'config.yaml') 19 CONFIG[:dat_dir] = File.join(SSB::CONFIG[:home_dir], 'dat') 19 20 CONFIG[:default_uri] = 'http://localhost/' 20 21 end -
lang/ruby/ssb/trunk/libs/ssb/emoji.rb
r2277 r2282 6 6 # $Id$ 7 7 # 8 require 'yaml' 8 9 9 10 module SSB … … 13 14 SJIS_IMODE_PICTOGRAM = '\xF8[\x9F-\xFC]|\xF9[\x40-\x7E\x80-\xB0]|\xF9[\xB1-\xFC]' 14 15 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 15 27 16 28 def self.emoji_conv(term, str) … … 32 44 33 45 # UNICODE 16進数実体参照 (とりあえず拡張絵文字だけ) 34 ret.gsub!(/ &#x([0-9a-zA-Z]+);/) do |s|46 ret.gsub!(/(&#x([0-9a-zA-Z]+);)/) do |s| 35 47 code = 36 case ($ 1.hex)48 case ($2.hex) 37 49 when 0xE63E..0xE69B 38 50 # 4705 39 $ 1.hex + 470551 $2.hex + 4705 40 52 when 0xE69C..0xE6DA, 0xE6AC..0xE6BA 41 53 # 4772 42 $ 1.hex + 477254 $2.hex + 4772 43 55 when 0xE6DB..0xE70A, 0xE70C..0xE757 44 56 # 4773 45 $ 1.hex + 477357 $2.hex + 4773 46 58 else 47 $1 .hex59 $1 48 60 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 50 66 end 51 67 52 68 # KDDI localsrc 53 69 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 54 79 ret.gsub!(/ (localsrc)=\"?([^>\" ]+)\"?/im) { |s| 55 80 ' class="emoji" src="emoji/kddi/' + '%03d' % $2.to_i + '.gif"' -
lang/ruby/ssb/trunk/test/emoji_test.rb
r2277 r2282 34 34 assert_equal(conv(SSB::KtaiSpec::CARRIER_KDDI, '<img localsrc="54" />'), "<img class=\"emoji\" src=\"emoji/kddi/054.gif\" />") 35 35 end 36 37 test 'ezweb cref hex' do 38 assert_equal(conv(SSB::KtaiSpec::CARRIER_KDDI, ''), "<img class=\"emoji\" src=\"emoji/kddi/001.gif\" />") 39 end 36 40 37 41 # thirdforce
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)