Tcl Source Code

Hex Artifact Content
Login

Artifact 0f6bd1e8ef3bb1afd7317c12fdefb538205b5a45:

Attachment "eunknown.patch" to ticket [1577282fff] added by msofer 2006-10-15 01:16:16.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d 65 73  Index: doc/names
0010: 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d  pace.n.=========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66  ==========.RCS f
0060: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63  ile: /cvsroot/tc
0070: 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65 73 70  l/tcl/doc/namesp
0080: 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69  ace.n,v.retrievi
0090: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 31  ng revision 1.21
00a0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 32 31 20  .diff -u -r1.21 
00b0: 6e 61 6d 65 73 70 61 63 65 2e 6e 0a 2d 2d 2d 20  namespace.n.--- 
00c0: 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 2e 6e 09  doc/namespace.n.
00d0: 32 36 20 41 75 67 20 32 30 30 36 20 31 33 3a 30  26 Aug 2006 13:0
00e0: 30 3a 33 38 20 2d 30 30 30 30 09 31 2e 32 31 0a  0:38 -0000.1.21.
00f0: 2b 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63  +++ doc/namespac
0100: 65 2e 6e 09 31 34 20 4f 63 74 20 32 30 30 36 20  e.n.14 Oct 2006 
0110: 31 38 3a 31 31 3a 35 30 20 2d 30 30 30 30 0a 40  18:11:50 -0000.@
0120: 40 20 2d 37 37 31 2c 39 20 2b 37 37 31 2c 39 20  @ -771,9 +771,9 
0130: 40 40 0a 20 2e 50 50 0a 20 57 68 65 6e 20 74 68  @@. .PP. When th
0140: 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 6e 6f  e result is a no
0150: 6e 2d 65 6d 70 74 79 20 6c 69 73 74 2c 20 74 68  n-empty list, th
0160: 65 20 77 6f 72 64 73 20 6f 66 20 74 68 61 74 20  e words of that 
0170: 6c 69 73 74 20 61 72 65 20 75 73 65 64 0a 20 74  list are used. t
0180: 6f 20 72 65 70 6c 61 63 65 20 74 68 65 20 65 6e  o replace the en
0190: 73 65 6d 62 6c 65 20 63 6f 6d 6d 61 6e 64 20 61  semble command a
01a0: 6e 64 20 73 75 62 63 6f 6d 6d 61 6e 64 2c 20 6a  nd subcommand, j
01b0: 75 73 74 20 61 73 20 69 66 20 74 68 65 79 20 68  ust as if they h
01c0: 61 64 0a 2d 62 65 65 6e 20 6c 6f 6f 6b 65 64 20  ad.-been looked 
01d0: 75 70 20 69 6e 20 74 68 65 20 5c 66 42 5c 2d 6d  up in the \fB\-m
01e0: 61 70 5c 66 52 2e 20 49 74 20 69 73 20 75 70 20  ap\fR. It is up 
01f0: 74 6f 20 74 68 65 20 75 6e 6b 6e 6f 77 6e 20 68  to the unknown h
0200: 61 6e 64 6c 65 72 20 74 6f 0a 2d 73 75 70 70 6c  andler to.-suppl
0210: 79 20 61 6c 6c 20 6e 61 6d 65 73 70 61 63 65 20  y all namespace 
0220: 71 75 61 6c 69 66 69 65 72 73 20 69 66 20 74 68  qualifiers if th
0230: 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 73  e implementing s
0240: 75 62 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74  ubcommand is not
0250: 0a 2d 69 6e 20 74 68 65 20 6e 61 6d 65 73 70 61  .-in the namespa
0260: 63 65 20 6f 66 20 74 68 65 20 63 61 6c 6c 65 72  ce of the caller
0270: 20 6f 66 20 74 68 65 20 65 6e 73 65 6d 62 6c 65   of the ensemble
0280: 20 63 6f 6d 6d 61 6e 64 2e 20 41 6c 73 6f 20 6e   command. Also n
0290: 6f 74 65 20 74 68 61 74 0a 2b 62 65 65 6e 20 6c  ote that.+been l
02a0: 6f 6f 6b 65 64 20 75 70 20 69 6e 20 74 68 65 20  ooked up in the 
02b0: 5c 66 42 5c 2d 6d 61 70 5c 66 52 2e 20 54 68 65  \fB\-map\fR. The
02c0: 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 73 75   implementing su
02d0: 62 63 6f 6d 6d 61 6e 64 20 69 73 20 6c 6f 6f 6b  bcommand is look
02e0: 65 64 20 75 70 0a 2b 69 6e 20 74 68 65 20 65 6e  ed up.+in the en
02f0: 73 65 6d 62 6c 65 27 73 20 6e 61 6d 65 73 70 61  semble's namespa
0300: 63 65 2e 0a 2b 41 6c 73 6f 20 6e 6f 74 65 20 74  ce..+Also note t
0310: 68 61 74 0a 20 77 68 65 6e 20 65 6e 73 65 6d 62  hat. when ensemb
0320: 6c 65 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20  le commands are 
0330: 63 68 61 69 6e 65 64 20 28 65 2e 67 2e 20 69 66  chained (e.g. if
0340: 20 79 6f 75 20 6d 61 6b 65 20 6f 6e 65 20 6f 66   you make one of
0350: 20 74 68 65 0a 20 63 6f 6d 6d 61 6e 64 73 20 74   the. commands t
0360: 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 20 61 6e  hat implement an
0370: 20 65 6e 73 65 6d 62 6c 65 20 73 75 62 63 6f 6d   ensemble subcom
0380: 6d 61 6e 64 20 69 6e 74 6f 20 61 6e 20 65 6e 73  mand into an ens
0390: 65 6d 62 6c 65 2c 20 69 6e 20 61 0a 20 6d 61 6e  emble, in a. man
03a0: 6e 65 72 20 73 69 6d 69 6c 61 72 20 74 6f 20 74  ner similar to t
03b0: 68 65 20 74 65 78 74 20 77 69 64 67 65 74 27 73  he text widget's
03c0: 20 74 61 67 20 61 6e 64 20 6d 61 72 6b 20 73 75   tag and mark su
03d0: 62 63 6f 6d 6d 61 6e 64 73 29 20 74 68 65 6e 20  bcommands) then 
03e0: 74 68 65 0a 49 6e 64 65 78 3a 20 74 65 73 74 73  the.Index: tests
03f0: 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 0a  /namespace.test.
0400: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0410: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0420: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0430: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0440: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63  ===.RCS file: /c
0450: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74  vsroot/tcl/tcl/t
0460: 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74  ests/namespace.t
0470: 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  est,v.retrieving
0480: 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 38 0a 64   revision 1.58.d
0490: 69 66 66 20 2d 75 20 2d 72 31 2e 35 38 20 6e 61  iff -u -r1.58 na
04a0: 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 2d 2d 2d  mespace.test.---
04b0: 20 74 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 65   tests/namespace
04c0: 2e 74 65 73 74 09 31 30 20 4f 63 74 20 32 30 30  .test.10 Oct 200
04d0: 36 20 31 38 3a 32 33 3a 30 33 20 2d 30 30 30 30  6 18:23:03 -0000
04e0: 09 31 2e 35 38 0a 2b 2b 2b 20 74 65 73 74 73 2f  .1.58.+++ tests/
04f0: 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 09 31  namespace.test.1
0500: 34 20 4f 63 74 20 32 30 30 36 20 31 38 3a 31 32  4 Oct 2006 18:12
0510: 3a 31 36 20 2d 30 30 30 30 0a 40 40 20 2d 31 38  :16 -0000.@@ -18
0520: 38 39 2c 36 20 2b 31 38 38 39 2c 34 35 20 40 40  89,6 +1889,45 @@
0530: 0a 20 20 20 20 20 77 68 69 6c 65 20 70 61 72 73  .     while pars
0540: 69 6e 67 20 72 65 73 75 6c 74 20 6f 66 20 65 6e  ing result of en
0550: 73 65 6d 62 6c 65 20 75 6e 6b 6e 6f 77 6e 20 73  semble unknown s
0560: 75 62 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65  ubcommand handle
0570: 72 0a 20 20 20 20 20 69 6e 76 6f 6b 65 64 20 66  r.     invoked f
0580: 72 6f 6d 20 77 69 74 68 69 6e 0a 20 22 66 6f 6f  rom within. "foo
0590: 20 62 61 72 22 7d 7d 0a 2b 74 65 73 74 20 6e 61   bar"}}.+test na
05a0: 6d 65 73 70 61 63 65 2d 34 37 2e 37 20 7b 65 6e  mespace-47.7 {en
05b0: 73 65 6d 62 6c 65 3a 20 75 6e 6b 6e 6f 77 6e 20  semble: unknown 
05c0: 68 61 6e 64 6c 65 72 20 69 6e 76 6f 6b 65 73 20  handler invokes 
05d0: 69 6e 20 65 6e 73 65 6d 62 6c 65 27 73 20 6e 73  in ensemble's ns
05e0: 7d 20 5c 0a 2b 2d 62 6f 64 79 20 7b 0a 2b 20 20  } \.+-body {.+  
05f0: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c    namespace eval
0600: 20 6e 73 30 20 7b 0a 2b 09 70 72 6f 63 20 4d 61   ns0 {.+.proc Ma
0610: 67 69 63 49 6d 70 6c 20 61 72 67 73 20 7b 0a 2b  gicImpl args {.+
0620: 09 20 20 20 20 72 65 74 75 72 6e 20 7b 4d 61 67  .    return {Mag
0630: 69 63 20 63 61 6c 6c 65 64 7d 0a 2b 09 7d 0a 2b  ic called}.+.}.+
0640: 20 20 20 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73      }.+    names
0650: 70 61 63 65 20 65 76 61 6c 20 6e 73 31 20 7b 0a  pace eval ns1 {.
0660: 2b 09 6e 61 6d 65 73 70 61 63 65 20 70 61 74 68  +.namespace path
0670: 20 3a 3a 6e 73 30 0a 2b 09 70 72 6f 63 20 4d 61   ::ns0.+.proc Ma
0680: 67 69 63 20 7b 65 6e 73 65 6d 62 6c 65 20 73 75  gic {ensemble su
0690: 62 63 6d 64 20 61 72 67 73 7d 20 7b 0a 2b 09 20  bcmd args} {.+. 
06a0: 20 20 20 72 65 74 75 72 6e 20 5b 6c 69 73 74 20     return [list 
06b0: 4d 61 67 69 63 49 6d 70 6c 5d 0a 2b 09 7d 0a 2b  MagicImpl].+.}.+
06c0: 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 6d  .namespace ensem
06d0: 62 6c 65 20 63 72 65 61 74 65 20 2d 75 6e 6b 6e  ble create -unkn
06e0: 6f 77 6e 20 3a 3a 6e 73 31 3a 3a 4d 61 67 69 63  own ::ns1::Magic
06f0: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 6e 73 31  .+    }.+    ns1
0700: 20 66 6f 6f 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70   foo.+} -cleanup
0710: 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63   {.+    namespac
0720: 65 20 64 65 6c 65 74 65 20 6e 73 30 0a 2b 20 20  e delete ns0.+  
0730: 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65    namespace dele
0740: 74 65 20 6e 73 31 0a 2b 7d 20 2d 72 65 73 75 6c  te ns1.+} -resul
0750: 74 20 7b 4d 61 67 69 63 20 63 61 6c 6c 65 64 7d  t {Magic called}
0760: 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65  .+test namespace
0770: 2d 34 37 2e 38 20 7b 65 6e 73 65 6d 62 6c 65 3a  -47.8 {ensemble:
0780: 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72   unknown handler
0790: 20 69 6e 76 6f 6b 65 73 20 69 6e 20 65 6e 73 65   invokes in ense
07a0: 6d 62 6c 65 27 73 20 6e 73 7d 20 5c 0a 2b 2d 62  mble's ns} \.+-b
07b0: 6f 64 79 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73  ody {.+    names
07c0: 70 61 63 65 20 65 76 61 6c 20 6e 73 30 20 7b 0a  pace eval ns0 {.
07d0: 2b 09 70 72 6f 63 20 4d 61 67 69 63 49 6d 70 6c  +.proc MagicImpl
07e0: 20 61 72 67 73 20 7b 0a 2b 09 20 20 20 20 72 65   args {.+.    re
07f0: 74 75 72 6e 20 7b 4d 61 67 69 63 20 63 61 6c 6c  turn {Magic call
0800: 65 64 7d 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2b  ed}.+.}.+    }.+
0810: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76      namespace ev
0820: 61 6c 20 6e 73 31 20 7b 0a 2b 09 6e 61 6d 65 73  al ns1 {.+.names
0830: 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 5b 6c 69  pace unknown [li
0840: 73 74 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61  st namespace eva
0850: 6c 20 3a 3a 6e 73 30 5d 0a 2b 09 70 72 6f 63 20  l ::ns0].+.proc 
0860: 4d 61 67 69 63 20 7b 65 6e 73 65 6d 62 6c 65 20  Magic {ensemble 
0870: 73 75 62 63 6d 64 20 61 72 67 73 7d 20 7b 0a 2b  subcmd args} {.+
0880: 09 20 20 20 20 72 65 74 75 72 6e 20 5b 6c 69 73  .    return [lis
0890: 74 20 4d 61 67 69 63 49 6d 70 6c 5d 0a 2b 09 7d  t MagicImpl].+.}
08a0: 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 6e 73  .+.namespace ens
08b0: 65 6d 62 6c 65 20 63 72 65 61 74 65 20 2d 75 6e  emble create -un
08c0: 6b 6e 6f 77 6e 20 3a 3a 6e 73 31 3a 3a 4d 61 67  known ::ns1::Mag
08d0: 69 63 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 6e  ic.+    }.+    n
08e0: 73 31 20 66 6f 6f 0a 2b 7d 20 2d 63 6c 65 61 6e  s1 foo.+} -clean
08f0: 75 70 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 70  up {.+    namesp
0900: 61 63 65 20 64 65 6c 65 74 65 20 6e 73 30 0a 2b  ace delete ns0.+
0910: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65      namespace de
0920: 6c 65 74 65 20 6e 73 31 0a 2b 7d 20 2d 72 65 73  lete ns1.+} -res
0930: 75 6c 74 20 7b 4d 61 67 69 63 20 63 61 6c 6c 65  ult {Magic calle
0940: 64 7d 0a 2b 0a 20 0a 20 74 65 73 74 20 6e 61 6d  d}.+. . test nam
0950: 65 73 70 61 63 65 2d 34 38 2e 31 20 7b 65 6e 73  espace-48.1 {ens
0960: 65 6d 62 6c 65 73 20 61 6e 64 20 6e 61 6d 65 73  embles and names
0970: 70 61 63 65 20 69 6d 70 6f 72 74 3a 20 75 6e 6b  pace import: unk
0980: 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 7d 20 7b 0a  nown handler} {.
0990: 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65       namespace e
09a0: 76 61 6c 20 66 6f 6f 20 7b 0a                    val foo {.