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
Commenting is here to help enhance the documentation. For example, sample code, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.