# 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.