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