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