children(*args)
click to toggle source
def self.children(*args)
tk_split_simplelist(tk_call('namespace', 'children', *args)).collect{|ns|
Tk_Namespace_ID_TBL.mutex.synchronize{
if Tk_Namespace_ID_TBL.key?(ns)
Tk_Namespace_ID_TBL[ns]
else
ns
end
}
}
end
code(script = Proc.new)
click to toggle source
def self.code(script = Proc.new)
TkNamespace.new('').code(script)
end
current()
click to toggle source
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
current_path()
click to toggle source
def self.current_path
tk_call('namespace', 'current')
end
delete(*ns_list)
click to toggle source
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
ensemble_configinfo(cmd, slot = nil)
click to toggle source
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
ensemble_create(*keys)
click to toggle source
def self.ensemble_create(*keys)
tk_call('namespace', 'ensemble', 'create', *hash_kv(keys))
end
ensemble_exist?(cmd)
click to toggle source
def self.ensemble_exist?(cmd)
bool(tk_call('namespace', 'ensemble', 'exists', cmd))
end
eval(namespace, cmd = Proc.new, *args)
click to toggle source
def self.eval(namespace, cmd = Proc.new, *args)
TkNamespace.new(namespace).eval(cmd, *args)
end
exist?(ns)
click to toggle source
def self.exist?(ns)
bool(tk_call('namespace', 'exists', ns))
end
export(*patterns)
click to toggle source
def self.export(*patterns)
tk_call('namespace', 'export', *patterns)
end
export_with_clear(*patterns)
click to toggle source
def self.export_with_clear(*patterns)
tk_call('namespace', 'export', '-clear', *patterns)
end
force_import(*patterns)
click to toggle source
def self.force_import(*patterns)
tk_call('namespace', 'import', '-force', *patterns)
end
forget(*patterns)
click to toggle source
def self.forget(*patterns)
tk_call('namespace', 'forget', *patterns)
end
get_path()
click to toggle source
def self.get_path
tk_call('namespace', 'path')
end
get_unknown_handler()
click to toggle source
def self.get_unknown_handler
tk_tcl2ruby(tk_call('namespace', 'unknown'))
end
id2obj(id)
click to toggle source
def TkNamespace.id2obj(id)
Tk_Namespace_ID_TBL.mutex.synchronize{
Tk_Namespace_ID_TBL[id]? Tk_Namespace_ID_TBL[id]: id
}
end
import(*patterns)
click to toggle source
def self.import(*patterns)
tk_call('namespace', 'import', *patterns)
end
inscope(namespace, script, *args)
click to toggle source
def self.inscope(namespace, script, *args)
tk_call('namespace', 'inscope', namespace, script, *args)
end
new(name = nil, parent = nil)
click to toggle source
def initialize(name = nil, parent = nil)
unless name
Tk_Namespace_ID.mutex.synchronize{
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
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)
__tk_call('namespace', 'eval', @fullname, '')
Tk_Namespace_ID_TBL.mutex.synchronize{
Tk_Namespace_ID_TBL[@fullname] = self
}
end
origin(cmd)
click to toggle source
def self.origin(cmd)
tk_call('namespace', 'origin', cmd)
end
parent(namespace=None)
click to toggle source
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
qualifiers(str)
click to toggle source
def self.qualifiers(str)
tk_call('namespace', 'qualifiers', str)
end
set_path(*namespace_list)
click to toggle source
def self.set_path(*namespace_list)
tk_call('namespace', 'path', array2tk_list(namespace_list))
end
set_unknown_handler(cmd = Proc.new)
click to toggle source
def self.set_unknown_handler(cmd = Proc.new)
tk_call('namespace', 'unknown', cmd)
end
tail(str)
click to toggle source
def self.tail(str)
tk_call('namespace', 'tail', str)
end
upvar(namespace, *var_pairs)
click to toggle source
def self.upvar(namespace, *var_pairs)
tk_call('namespace', 'upvar', namespace, *(var_pairs.flatten))
end
which(name)
click to toggle source
def self.which(name)
tk_call('namespace', 'which', name)
end
which_command(name)
click to toggle source
def self.which_command(name)
tk_call('namespace', 'which', '-command', name)
end
which_variable(name)
click to toggle source
def self.which_variable(name)
tk_call('namespace', 'which', '-variable', name)
end
__tk_call(*args)
click to toggle source
__tk_call_with_enc(*args)
click to toggle source
__tk_call_without_enc(*args)
click to toggle source
children(pattern=None)
click to toggle source
def children(pattern=None)
TkNamespace.children(@fullname, pattern)
end
code(script = Proc.new)
click to toggle source
begin¶ ↑
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
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
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
current()
click to toggle source
current_namespace()
click to toggle source
def current_namespace
self
end
current_path()
click to toggle source
def current_path
@fullname
end
delete()
click to toggle source
def delete
TkNamespece.delete(@fullname)
end
eval(cmd = Proc.new, *args)
click to toggle source
begin¶ ↑
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]))
tk_tcl2ruby(ret)
end
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
exist?()
click to toggle source
def exist?
TkNamespece.exist?(@fullname)
end
export()
click to toggle source
def export
TkNamespace.export(@fullname)
end
export_with_clear()
click to toggle source
def export_with_clear
TkNamespace.export_with_clear(@fullname)
end
force_import()
click to toggle source
def force_import
TkNamespace.force_import(@fullname)
end
forget()
click to toggle source
def forget
TkNamespace.forget(@fullname)
end
import()
click to toggle source
def import
TkNamespace.import(@fullname)
end
inscope(script, *args)
click to toggle source
def inscope(script, *args)
TkNamespace.inscope(@fullname, script, *args)
end
install_cmd(cmd)
click to toggle source
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
mutex()
click to toggle source
ns_tk_call(*args)
click to toggle source
ns_tk_call_with_enc(*args)
click to toggle source
ns_tk_call_without_enc(*args)
click to toggle source
parent()
click to toggle source
def parent
tk_call('namespace', 'parent', @fullname)
end
set_path()
click to toggle source
def set_path
tk_call('namespace', 'path', @fullname)
end
tk_call(*args)
click to toggle source
def tk_call(*args)
args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
super('namespace', 'eval', @fullname,
TkCore::INTERP._merge_tklist(*args))
end
tk_call_with_enc(*args)
click to toggle source
def tk_call_with_enc(*args)
args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
super('namespace', 'eval', @fullname,
TkCore::INTERP._merge_tklist(*args))
end
tk_call_without_enc(*args)
click to toggle source
def tk_call_without_enc(*args)
args = args.collect{|arg| (s = _get_eval_string(arg, true))? s: ''}
super('namespace', 'eval', @fullname,
TkCore::INTERP._merge_tklist(*args))
end
upvar(*var_pairs)
click to toggle source
def upvar(*var_pairs)
TkNamespace.inscope(@fullname, *(var_pairs.flatten))
end