# File tk/lib/tk/namespace.rb, line 291
def self.children(*args)
# args ::= [<namespace>] [<pattern>]
# <pattern> must be glob-style pattern
tk_split_simplelist(tk_call('namespace', 'children', *args)).collect{|ns|
# ns is fullname
Tk_Namespace_ID_TBL.mutex.synchronize{
if Tk_Namespace_ID_TBL.key?(ns)
Tk_Namespace_ID_TBL[ns]
else
ns
end
}
}
end
# File tk/lib/tk/namespace.rb, line 309
def self.code(script = Proc.new)
TkNamespace.new('').code(script)
end
# File tk/lib/tk/namespace.rb, line 365
def self.current
ns = self.current_path
Tk_Namespace_ID_TBL.mutex.synchronize{
if Tk_Namespace_ID_TBL.key?(ns)
Tk_Namespace_ID_TBL[ns]
else
ns
end
}
end
# File tk/lib/tk/namespace.rb, line 358
def self.current_path
tk_call('namespace', 'current')
end
# File tk/lib/tk/namespace.rb, line 382
def self.delete(*ns_list)
tk_call('namespace', 'delete', *ns_list)
ns_list.each{|ns|
Tk_Namespace_ID_TBL.mutex.synchronize{
if ns.kind_of?(TkNamespace)
Tk_Namespace_ID_TBL.delete(ns.path)
else
Tk_Namespace_ID_TBL.delete(ns.to_s)
end
}
}
end
# File tk/lib/tk/namespace.rb, line 408
def self.ensemble_configinfo(cmd, slot = nil)
if slot
tk_call('namespace', 'ensemble', 'configure', cmd, '-' + slot.to_s)
else
inf = {}
Hash(*tk_split_simplelist(tk_call('namespace', 'ensemble', 'configure', cmd))).each{|k, v| inf[k[1..-1]] = v}
inf
end
end
# File tk/lib/tk/namespace.rb, line 401
def self.ensemble_configure(cmd, slot, value=None)
if slot.kind_of?(Hash)
tk_call('namespace', 'ensemble', 'configure', cmd, *hash_kv(slot))
else
tk_call('namespace', 'ensemble', 'configure', cmd, '-'+slot.to_s, value)
end
end
# File tk/lib/tk/namespace.rb, line 398
def self.ensemble_create(*keys)
tk_call('namespace', 'ensemble', 'create', *hash_kv(keys))
end
# File tk/lib/tk/namespace.rb, line 417
def self.ensemble_exist?(cmd)
bool(tk_call('namespace', 'ensemble', 'exists', cmd))
end
# File tk/lib/tk/namespace.rb, line 421
def self.eval(namespace, cmd = Proc.new, *args)
#tk_call('namespace', 'eval', namespace, cmd, *args)
TkNamespace.new(namespace).eval(cmd, *args)
end
# File tk/lib/tk/namespace.rb, line 443
def self.exist?(ns)
bool(tk_call('namespace', 'exists', ns))
end
# File tk/lib/tk/namespace.rb, line 450
def self.export(*patterns)
tk_call('namespace', 'export', *patterns)
end
# File tk/lib/tk/namespace.rb, line 453
def self.export_with_clear(*patterns)
tk_call('namespace', 'export', '-clear', *patterns)
end
# File tk/lib/tk/namespace.rb, line 473
def self.force_import(*patterns)
tk_call('namespace', 'import', '-force', *patterns)
end
# File tk/lib/tk/namespace.rb, line 463
def self.forget(*patterns)
tk_call('namespace', 'forget', *patterns)
end
# File tk/lib/tk/namespace.rb, line 508
def self.get_path
tk_call('namespace', 'path')
end
# File tk/lib/tk/namespace.rb, line 533
def self.get_unknown_handler
tk_tcl2ruby(tk_call('namespace', 'unknown'))
end
# File tk/lib/tk/namespace.rb, line 29
def TkNamespace.id2obj(id)
Tk_Namespace_ID_TBL.mutex.synchronize{
Tk_Namespace_ID_TBL[id]? Tk_Namespace_ID_TBL[id]: id
}
end
# File tk/lib/tk/namespace.rb, line 470
def self.import(*patterns)
tk_call('namespace', 'import', *patterns)
end
# File tk/lib/tk/namespace.rb, line 483
def self.inscope(namespace, script, *args)
tk_call('namespace', 'inscope', namespace, script, *args)
end
# File tk/lib/tk/namespace.rb, line 245
def initialize(name = nil, parent = nil)
unless name
Tk_Namespace_ID.mutex.synchronize{
# name = Tk_Namespace_ID.join('')
name = Tk_Namespace_ID.join(TkCore::INTERP._ip_id_)
Tk_Namespace_ID[1].succ!
}
end
name = __tk_call('namespace', 'current') if name == ''
if parent
if parent =~ /^::/
if name =~ /^::/
@fullname = parent + name
else
@fullname = parent +'::'+ name
end
else
ancestor = __tk_call('namespace', 'current')
ancestor = '' if ancestor == '::'
if name =~ /^::/
@fullname = ancestor + '::' + parent + name
else
@fullname = ancestor + '::'+ parent +'::'+ name
end
end
else # parent == nil
ancestor = __tk_call('namespace', 'current')
ancestor = '' if ancestor == '::'
if name =~ /^::/
@fullname = name
else
@fullname = ancestor + '::' + name
end
end
@path = @fullname
@parent = __tk_call('namespace', 'qualifiers', @fullname)
@name = __tk_call('namespace', 'tail', @fullname)
# create namespace
__tk_call('namespace', 'eval', @fullname, '')
Tk_Namespace_ID_TBL.mutex.synchronize{
Tk_Namespace_ID_TBL[@fullname] = self
}
end
# File tk/lib/tk/namespace.rb, line 490
def self.origin(cmd)
tk_call('namespace', 'origin', cmd)
end
# File tk/lib/tk/namespace.rb, line 494
def self.parent(namespace=None)
ns = tk_call('namespace', 'parent', namespace)
Tk_Namespace_ID_TBL.mutex.synchronize{
if Tk_Namespace_ID_TBL.key?(ns)
Tk_Namespace_ID_TBL[ns]
else
ns
end
}
end
# File tk/lib/tk/namespace.rb, line 518
def self.qualifiers(str)
tk_call('namespace', 'qualifiers', str)
end
# File tk/lib/tk/namespace.rb, line 511
def self.set_path(*namespace_list)
tk_call('namespace', 'path', array2tk_list(namespace_list))
end
# File tk/lib/tk/namespace.rb, line 536
def self.set_unknown_handler(cmd = Proc.new)
tk_call('namespace', 'unknown', cmd)
end
# File tk/lib/tk/namespace.rb, line 522
def self.tail(str)
tk_call('namespace', 'tail', str)
end
# File tk/lib/tk/namespace.rb, line 526
def self.upvar(namespace, *var_pairs)
tk_call('namespace', 'upvar', namespace, *(var_pairs.flatten))
end
# File tk/lib/tk/namespace.rb, line 540
def self.which(name)
tk_call('namespace', 'which', name)
end
# File tk/lib/tk/namespace.rb, line 305
def children(pattern=None)
TkNamespace.children(@fullname, pattern)
end
def code(script = Proc.new)
if script.kind_of?(String) cmd = proc{|*args| ScopeArgs.new(@fullname,*args).instance_eval(script)} elsif script.kind_of?(Proc) cmd = proc{|*args| ScopeArgs.new(@fullname,*args).instance_eval(&script)} else fail ArgumentError, "String or Proc is expected" end TkNamespace::NsCode.new(tk_call_without_enc('namespace', 'code', _get_eval_string(cmd, false)))
end
# File tk/lib/tk/namespace.rb, line 325
def code(script = Proc.new)
if script.kind_of?(String)
cmd = proc{|*args|
if TkCore::WITH_RUBY_VM ### Ruby 1.9 !!!!
obj = ScopeArgs.new(@fullname,*args)
ret = obj.instance_exec(obj, script)
else
ret = ScopeArgs.new(@fullname,*args).instance_eval(script)
end
id = ret.object_id
TkNamespace::Tk_NsCode_RetObjID_TBL[id] = ret
id
}
elsif script.kind_of?(Proc)
cmd = proc{|*args|
if TkCore::WITH_RUBY_VM ### Ruby 1.9 !!!!
obj = ScopeArgs.new(@fullname,*args)
ret = obj.instance_exec(obj, &script)
else
ret = ScopeArgs.new(@fullname,*args).instance_eval(&script)
end
id = ret.object_id
TkNamespace::Tk_NsCode_RetObjID_TBL[id] = ret
id
}
else
fail ArgumentError, "String or Proc is expected"
end
TkNamespace::NsCode.new(tk_call_without_enc('namespace', 'code',
_get_eval_string(cmd, false)),
true)
end
# File tk/lib/tk/namespace.rb, line 375
def current_namespace
# ns_tk_call('namespace', 'current')
# @fullname
self
end
# File tk/lib/tk/namespace.rb, line 361
def current_path
@fullname
end
# File tk/lib/tk/namespace.rb, line 394
def delete
TkNamespece.delete(@fullname)
end
def eval(cmd = Proc.new, *args)
#TkNamespace.eval(@fullname, cmd, *args) #ns_tk_call(cmd, *args) code_obj = code(cmd) ret = code_obj.call(*args) # uninstall_cmd(TkCore::INTERP._split_tklist(code_obj.path)[-1]) uninstall_cmd(_fromUTF8(TkCore::INTERP._split_tklist(_toUTF8(code_obj.path))[-1])) tk_tcl2ruby(ret)
end
# File tk/lib/tk/namespace.rb, line 436
def eval(cmd = Proc.new, *args)
code_obj = code(cmd)
ret = code_obj.call(*args)
uninstall_cmd(_fromUTF8(TkCore::INTERP._split_tklist(_toUTF8(code_obj.path))[-1]))
ret
end
# File tk/lib/tk/namespace.rb, line 446
def exist?
TkNamespece.exist?(@fullname)
end
# File tk/lib/tk/namespace.rb, line 456
def export
TkNamespace.export(@fullname)
end
# File tk/lib/tk/namespace.rb, line 459
def export_with_clear
TkNamespace.export_with_clear(@fullname)
end
# File tk/lib/tk/namespace.rb, line 479
def force_import
TkNamespace.force_import(@fullname)
end
# File tk/lib/tk/namespace.rb, line 466
def forget
TkNamespace.forget(@fullname)
end
# File tk/lib/tk/namespace.rb, line 476
def import
TkNamespace.import(@fullname)
end
# File tk/lib/tk/namespace.rb, line 486
def inscope(script, *args)
TkNamespace.inscope(@fullname, script, *args)
end
# File tk/lib/tk/namespace.rb, line 210
def install_cmd(cmd)
lst = tk_split_simplelist(super(cmd), false, false)
if lst[1] =~ /^::/
lst[1] = @fullname
else
lst.insert(1, @fullname)
end
TkCore::INTERP._merge_tklist(*lst)
end
# File tk/lib/tk/namespace.rb, line 504
def parent
tk_call('namespace', 'parent', @fullname)
end
# File tk/lib/tk/namespace.rb, line 514
def set_path
tk_call('namespace', 'path', @fullname)
end
# File tk/lib/tk/namespace.rb, line 223
def tk_call(*args)
#super('namespace', 'eval', @fullname, *args)
args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
super('namespace', 'eval', @fullname,
TkCore::INTERP._merge_tklist(*args))
end
# File tk/lib/tk/namespace.rb, line 235
def tk_call_with_enc(*args)
#super('namespace', 'eval', @fullname, *args)
args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
super('namespace', 'eval', @fullname,
TkCore::INTERP._merge_tklist(*args))
end
# File tk/lib/tk/namespace.rb, line 229
def tk_call_without_enc(*args)
#super('namespace', 'eval', @fullname, *args)
args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
super('namespace', 'eval', @fullname,
TkCore::INTERP._merge_tklist(*args))
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.