#acl SomeUser:read,write All:read = Lightweight Language Lovers = == PythonとRubyを比較してみる(Pythonによるコーディング) == {{{#format class SjisChars $KCODE = "SJIS" KU13 = 0x8740..0x879c KU89_92 = 0xED40..0xEEFC KU115_9 = 0xFA40..0xFC4B GAIJI = 0xF040..0xF9FC def initialize(chars) @chars = chars @reKisyu = mkRegexp(KU13, KU89_92, KU115_9) @reGaiji = mkRegexp(GAIJI) end def mkRegexp(*ra) ra.map! {|r| "[%s-%s]" % [[r.first].pack("n"), [r.last].pack("n")]} Regexp.compile(ra.join("|")) end def scanSjis @chars.split(//).each {|c| yield c, isKanji(c), isGaiji(c), isKisyu(c)} end def isKanji(c) c.length == 2 end def isGaiji(c) @reGaiji.match(c) != nil end def isKisyu(c) @reKisyu.match(c) != nil end def hexprint scanSjis do |c, isKanji, isGaiji, isKisyu| h = (c.unpack("n")[0] if isKanji) || c.unpack("C")[0] attr = ("Gaiji" if isGaiji) || ("Kisyu" if isKisyu) || "" printf("%s %x %s\n", c, h, attr) end end end sc = SjisChars.new("abc漢字・・①㈱纊彧德羽裵錞德鍈ⅰ黑") sc.hexprint sc.scanSjis do |c, k, g, ki| printf("%s %s %s %s\n", c, k, g, ki) end }}} ---- CategoryPython CategoryRuby