String
# File tk/lib/tk/encodedstr.rb, line 68 def initialize(str, enc = nil) super(str) # @encoding = ( enc || # ((self.class::Encoding)? # self.class::Encoding : Tk.encoding_system) ) enc ||= (self.class::Encoding)? self.class::Encoding : ((Tk.encoding)? Tk.encoding : Tk.encoding_system) if TkCore::WITH_ENCODING unless encobj = Tk::Encoding::ENCODING_TABLE.get_obj(enc) fail ArgumentError, "unsupported Tk encoding '#{enc}'" end self.force_encoding(encobj) else @encoding = enc end end
# File tk/lib/tk/encodedstr.rb, line 60 def self.new_with_utf_backslash(str, enc = nil) self.new('', enc).replace(self.subst_utf_backslash(str)) end
# File tk/lib/tk/encodedstr.rb, line 64 def self.new_without_utf_backslash(str, enc = nil) self.new('', enc).replace(str) end
# File tk/lib/tk/encodedstr.rb, line 21 def self.subst_tk_backslash(str) TclTkLib._subst_Tcl_backslash(str) end
# File tk/lib/tk/encodedstr.rb, line 13 def self.subst_utf_backslash(str) # str.gsub(/\\u([0-9A-Fa-f]{1,4})/){[$1.hex].pack('U')} TclTkLib._subst_UTF_backslash(str) end
# File tk/lib/tk/encodedstr.rb, line 38 def self.to_backslash_sequence(str) str.unpack('U*').collect{|c| if c <= 0x1F # control character case c when 0x07; '\a' when 0x08; '\b' when 0x09; '\t' when 0x0a; '\n' when 0x0b; '\v' when 0x0c; '\f' when 0x0d; '\r' else format('\x%02X', c) end elsif c <= 0xFF # ascii character c.chr else format('\u%X', c) end }.join('') end
# File tk/lib/tk/encodedstr.rb, line 17 def self.utf_backslash(str) self.subst_utf_backslash(str) end
wrapper methods for compatibility
# File tk/lib/tk/encodedstr.rb, line 89 def encoding Tk::Encoding::ENCODING_TABLE.get_name(super()) end
# File tk/lib/tk/encodedstr.rb, line 127 def instance_eval(*args, &b) old_enc = @encoding = self.encoding ret = super(*args, &b) if @encoding if @encoding != old_enc # modified by user self.force_encoding(@encoding) end remove_instance_variable(:@encoding) else begin remove_instance_variable(:@encoding) # user sets to nil -> use current default self.force_encoding(Tk.encoding) rescue NameError # removed by user -> ignore, because user don't use @encoding end end ret end
# File tk/lib/tk/encodedstr.rb, line 106 def instance_variable_get(key) if (key.to_s == '@encoding') self.encoding else super(key) end end
# File tk/lib/tk/encodedstr.rb, line 114 def instance_variable_set(key, value) if (key.to_s == '@encoding') if value self.force_encoding(value) else self.force_encoding(Tk::Encoding::UNKNOWN) end value else super(key, value) end end
# File tk/lib/tk/encodedstr.rb, line 151 def instance_variables ret = super() ret << :@encoding # fake !! ret end