# File tk/lib/tk/namespace.rb, line 292
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 310
def self.code(script = Proc.new)
TkNamespace.new('').code(script)
end
# File tk/lib/tk/namespace.rb, line 361
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 354
def self.current_path
tk_call('namespace', 'current')
end
# File tk/lib/tk/namespace.rb, line 378
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 404
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 397
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 394
def self.ensemble_create(*keys)
tk_call('namespace', 'ensemble', 'create', *hash_kv(keys))
end
# File tk/lib/tk/namespace.rb, line 413
def self.ensemble_exist?(cmd)
bool(tk_call('namespace', 'ensemble', 'exists', cmd))
end
# File tk/lib/tk/namespace.rb, line 417
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 439
def self.exist?(ns)
bool(tk_call('namespace', 'exists', ns))
end
# File tk/lib/tk/namespace.rb, line 446
def self.export(*patterns)
tk_call('namespace', 'export', *patterns)
end
# File tk/lib/tk/namespace.rb, line 449
def self.export_with_clear(*patterns)
tk_call('namespace', 'export', '-clear', *patterns)
end
# File tk/lib/tk/namespace.rb, line 469
def self.force_import(*patterns)
tk_call('namespace', 'import', '-force', *patterns)
end
# File tk/lib/tk/namespace.rb, line 459
def self.forget(*patterns)
tk_call('namespace', 'forget', *patterns)
end
# File tk/lib/tk/namespace.rb, line 504
def self.get_path
tk_call('namespace', 'path')
end
# File tk/lib/tk/namespace.rb, line 529
def self.get_unknown_handler
tk_tcl2ruby(tk_call('namespace', 'unknown'))
end
# File tk/lib/tk/namespace.rb, line 30
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 466
def self.import(*patterns)
tk_call('namespace', 'import', *patterns)
end
# File tk/lib/tk/namespace.rb, line 479
def self.inscope(namespace, script, *args)
tk_call('namespace', 'inscope', namespace, script, *args)
end
# File tk/lib/tk/namespace.rb, line 246
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 486
def self.origin(cmd)
tk_call('namespace', 'origin', cmd)
end
# File tk/lib/tk/namespace.rb, line 490
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 514
def self.qualifiers(str)
tk_call('namespace', 'qualifiers', str)
end
# File tk/lib/tk/namespace.rb, line 507
def self.set_path(*namespace_list)
tk_call('namespace', 'path', array2tk_list(namespace_list))
end
# File tk/lib/tk/namespace.rb, line 532
def self.set_unknown_handler(cmd = Proc.new)
tk_call('namespace', 'unknown', cmd)
end
# File tk/lib/tk/namespace.rb, line 518
def self.tail(str)
tk_call('namespace', 'tail', str)
end
# File tk/lib/tk/namespace.rb, line 522
def self.upvar(namespace, *var_pairs)
tk_call('namespace', 'upvar', namespace, *(var_pairs.flatten))
end
# File tk/lib/tk/namespace.rb, line 536
def self.which(name)
tk_call('namespace', 'which', name)
end
# File tk/lib/tk/namespace.rb, line 306
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 326
def code(script = Proc.new)
if script.kind_of?(String)
cmd = proc{|*args|
ret = ScopeArgs.new(@fullname,*args).instance_eval(script)
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 371
def current_namespace
# ns_tk_call('namespace', 'current')
# @fullname
self
end
# File tk/lib/tk/namespace.rb, line 357
def current_path
@fullname
end
# File tk/lib/tk/namespace.rb, line 390
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 432
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 442
def exist?
TkNamespece.exist?(@fullname)
end
# File tk/lib/tk/namespace.rb, line 452
def export
TkNamespace.export(@fullname)
end
# File tk/lib/tk/namespace.rb, line 455
def export_with_clear
TkNamespace.export_with_clear(@fullname)
end
# File tk/lib/tk/namespace.rb, line 475
def force_import
TkNamespace.force_import(@fullname)
end
# File tk/lib/tk/namespace.rb, line 462
def forget
TkNamespace.forget(@fullname)
end
# File tk/lib/tk/namespace.rb, line 472
def import
TkNamespace.import(@fullname)
end
# File tk/lib/tk/namespace.rb, line 482
def inscope(script, *args)
TkNamespace.inscope(@fullname, script, *args)
end
# File tk/lib/tk/namespace.rb, line 211
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 500
def parent
tk_call('namespace', 'parent', @fullname)
end
# File tk/lib/tk/namespace.rb, line 510
def set_path
tk_call('namespace', 'path', @fullname)
end
# File tk/lib/tk/namespace.rb, line 224
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 236
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 230
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, code samples, 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.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.