Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/string+concat?V=11
QUERY_STRINGV=11
CONTENT_TYPE
DOCUMENT_URI/revision/string+concat
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.70.131.87
REMOTE_PORT59778
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR3.146.255.113
HTTP_CF_RAY8875c6b9ad022c24-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_CF_CONNECTING_IP3.146.255.113
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit {string concat} '''Note:'''\ This\ is\ a\ renaming\ of\ \[string\ append\].\n\nThis\ extends\ the\ command\ string\ to\ accept\ a\ new\ sub-command\ '''concat''':\n\n\ if\ \{\[catch\ \{string\ concat\}\]\}\ then\ \{\n\ \ \ \ rename\ string\ STRING_ORIGINAL\n\ \ \ \ proc\ string\ \{cmd\ args\}\ \{\n\ \ \ \ \ \ \ \ switch\ -regexp\ --\ \$cmd\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ ^con(c(a(t)?)?)?\$\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uplevel\ \[list\ join\ \$args\ \{\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ default\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\[catch\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ result\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \[uplevel\ \[list\ STRING_ORIGINAL\ \$cmd\]\ \$args\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ err\]\}\ then\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return\ -code\ error\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \[STRING_ORIGINAL\ map\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \[list\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ STRING_ORIGINAL\ string\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \",\ compare,\ equal,\"\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \",\ compare,\ concat,\ equal,\"\]\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$err\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ result\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \}\n\ \}\n\nTest\ if\ it\ does\ as\ expected:\n\n\ %\ string\ concat\ hully\ gully\n\ hullygully\n\ %\n\nYeah.\ Check\ an\ original\ sub-cmd:\n\n\ %\ string\ match\ -nocase\ hully\ gully\n\ 0\n\ %\ \n\nWorks.\ Great.\ Now\ some\ erraneous\ situation:\n\n\ %\ string\ match\ -nocase\ hully\ gully\ bully\n\ wrong\ #\ args:\ should\ be\ \"string\ match\ ?-nocase?\ pattern\ string\"\n\ %\ \n\nThe\ err\ msg\ hides\ the\ ''STRING_ORIGINAL''\ and\ shows\ up\ ''string''\ instead.\ Great\ again.\ Now\ another\ situation:\n\n\ %\ string\ what'dya'mean?\n\ bad\ option\ \"what'dya'mean?\":\ must\ be\ bytelength,\ compare,\ concat,\ equal,\ (...)\n\ %\ \n\nThe\ err\ msg\ shows\ up\ all\ sub-cmds\ inclusive\ concat.\ Yep.\ That's\ it.\ Errp.\n\n----\n\[AMG\]:\ Why\ is\ there\ no\ \[\[string\ concat\]\]\ in\ the\ core?\ \ It\ would\ be\ helpful\ for\ concatenating\ strings\ that\ are\ quoted\ in\ different\ ways.\ \ For\ example:\n\n======\nstring\ concat\ \"dict\ with\ Sproc-\[list\ \$name\]\"\ \{(\[list\ \[namespace\ tail\ \[lindex\ \[info\ level\ 0\]\ 0\]\]\])\}\ \\\{\$script\\\}\n======\n\nis\ quite\ a\ bit\ easier\ to\ read\ (in\ my\ opinion)\ than:\n\n======\n\"dict\ with\ Sproc-\[list\ \$name\](\\\[list\ \\\[namespace\ tail\ \\\[lindex\ \\\[info\ level\ 0\\\]\ 0\\\]\\\]\\\])\ \{\$script\}\"\n======\n\n\[Lars\ H\]:\ There\ probably\ isn't\ any\ particular\ reason.\ \[TclX\]\ provides\ this\ as\ the\ \[cconcat\]\ command.\ \[string\ concat\]\ is\ to\ some\ extent\ emulatable\ by\ combining\ \[join\]\ and\ \[list\],\ like\n\ join\ \[list\ \"dict\ with\ Sproc-\[list\ \$name\]\"\ \{(\[list\ \[namespace\ tail\ \[lindex\ \[info\ level\ 0\]\ 0\]\]\])\}\ \\\{\$script\\\}\]\ \"\"\nor\ more\ recently\ using\ \[apply\]\n\ apply\ \{args\ \{join\ \$args\ \"\"\}\ ::\}\ \"dict\ with\ Sproc-\[list\ \$name\]\"\ \{(\[list\ \[namespace\ tail\ \[lindex\ \[info\ level\ 0\]\ 0\]\]\])\}\ \\\{\$script\\\}\nso\ maybe\ that\ worked\ well\ enough\ for\ those\ with\ the\ power\ to\ add\ it.\ I\ know\ I\ have\ on\ occation\ missed\ it,\ though.\n\n----\n\[LV\]\ Does\ string\ concat\ have\ functionality\ different\ from\ just\ using\ the\ two\ strings\ together?\n\n======\nset\ str1\ hully\nset\ str2\ gully\nset\ str3\ \$str1\$str2\n======\n\nor\ even\ using\ \[append\]?\n\n======\nset\ str3\ hully\nappend\ str3\ gully\n======\n\n\[AMG\]:\ As\ far\ as\ I\ can\ tell,\ no.\ \ But\ it\ avoids\ creating\ temporary\ variables.\n\n\[LV\]\ I\ only\ used\ the\ variables\ for\ illustration.\ You\ can\ do\ the\ automatic\ concatenation\ in\ most\ contexts.\ The\ trickiest\ point\ would\ be\ when\ mixing\ a\ list\ and\ a\ string:\n======\nset\ a\ \"\[list\ 1\ \[list\ 2\ 3\ 4\]\ \[list\ 5\ 6\ \[list\ 7\ 8\ 9\]\]\]\ are\ the\ first\ nine\ digits\"\n1\ \{2\ 3\ 4\}\ \{5\ 6\ \{7\ 8\ 9\}\}\ are\ the\ first\ nine\ digits\n======\nIf\ one\ of\ the\ strings\ is\ going\ to\ be\ a\ list,\ then\ you\ have\ to\ make\ use\ of\ \[join\].\ However,\ otherwise,\ you\ can\ do\ things\ like\n======\nputs\ \"string1String2\"\nset\ b\ \"string1\[proc2\]\"\n======\nand\ so\ forth.\n\n======\n\n----\n\[Stu\]\ 2009-01-26\n\n======\nproc\ strJoin\ \{args\}\ \{\ return\ \[append\ \{\}\ \{*\}\$args\]\ \}\n\nset\ map\ \[namespace\ ensemble\ configure\ string\ -map\]\ndict\ append\ map\ join\ strJoin\nnamespace\ ensemble\ configure\ string\ -map\ \$map\n======\n\n\[AMG\]:\ Hmm,\ \[\[\[join\]\]\]\ could\ also\ be\ used.\ \ This\ way\ no\ dummy\ variable\ is\ created.\n\n======\nproc\ strJoin\ \{args\}\ \{join\ \$args\ \"\"\}\n======\n\n----\n!!!!!!\n%|\ \[Category\ String\ Processing\]\ |%\n!!!!!! regexp2} CALL {my render {string concat} '''Note:'''\ This\ is\ a\ renaming\ of\ \[string\ append\].\n\nThis\ extends\ the\ command\ string\ to\ accept\ a\ new\ sub-command\ '''concat''':\n\n\ if\ \{\[catch\ \{string\ concat\}\]\}\ then\ \{\n\ \ \ \ rename\ string\ STRING_ORIGINAL\n\ \ \ \ proc\ string\ \{cmd\ args\}\ \{\n\ \ \ \ \ \ \ \ switch\ -regexp\ --\ \$cmd\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ ^con(c(a(t)?)?)?\$\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uplevel\ \[list\ join\ \$args\ \{\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ default\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\[catch\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ result\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \[uplevel\ \[list\ STRING_ORIGINAL\ \$cmd\]\ \$args\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ err\]\}\ then\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return\ -code\ error\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \[STRING_ORIGINAL\ map\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \[list\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ STRING_ORIGINAL\ string\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \",\ compare,\ equal,\"\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \",\ compare,\ concat,\ equal,\"\]\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$err\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ result\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \}\n\ \}\n\nTest\ if\ it\ does\ as\ expected:\n\n\ %\ string\ concat\ hully\ gully\n\ hullygully\n\ %\n\nYeah.\ Check\ an\ original\ sub-cmd:\n\n\ %\ string\ match\ -nocase\ hully\ gully\n\ 0\n\ %\ \n\nWorks.\ Great.\ Now\ some\ erraneous\ situation:\n\n\ %\ string\ match\ -nocase\ hully\ gully\ bully\n\ wrong\ #\ args:\ should\ be\ \"string\ match\ ?-nocase?\ pattern\ string\"\n\ %\ \n\nThe\ err\ msg\ hides\ the\ ''STRING_ORIGINAL''\ and\ shows\ up\ ''string''\ instead.\ Great\ again.\ Now\ another\ situation:\n\n\ %\ string\ what'dya'mean?\n\ bad\ option\ \"what'dya'mean?\":\ must\ be\ bytelength,\ compare,\ concat,\ equal,\ (...)\n\ %\ \n\nThe\ err\ msg\ shows\ up\ all\ sub-cmds\ inclusive\ concat.\ Yep.\ That's\ it.\ Errp.\n\n----\n\[AMG\]:\ Why\ is\ there\ no\ \[\[string\ concat\]\]\ in\ the\ core?\ \ It\ would\ be\ helpful\ for\ concatenating\ strings\ that\ are\ quoted\ in\ different\ ways.\ \ For\ example:\n\n======\nstring\ concat\ \"dict\ with\ Sproc-\[list\ \$name\]\"\ \{(\[list\ \[namespace\ tail\ \[lindex\ \[info\ level\ 0\]\ 0\]\]\])\}\ \\\{\$script\\\}\n======\n\nis\ quite\ a\ bit\ easier\ to\ read\ (in\ my\ opinion)\ than:\n\n======\n\"dict\ with\ Sproc-\[list\ \$name\](\\\[list\ \\\[namespace\ tail\ \\\[lindex\ \\\[info\ level\ 0\\\]\ 0\\\]\\\]\\\])\ \{\$script\}\"\n======\n\n\[Lars\ H\]:\ There\ probably\ isn't\ any\ particular\ reason.\ \[TclX\]\ provides\ this\ as\ the\ \[cconcat\]\ command.\ \[string\ concat\]\ is\ to\ some\ extent\ emulatable\ by\ combining\ \[join\]\ and\ \[list\],\ like\n\ join\ \[list\ \"dict\ with\ Sproc-\[list\ \$name\]\"\ \{(\[list\ \[namespace\ tail\ \[lindex\ \[info\ level\ 0\]\ 0\]\]\])\}\ \\\{\$script\\\}\]\ \"\"\nor\ more\ recently\ using\ \[apply\]\n\ apply\ \{args\ \{join\ \$args\ \"\"\}\ ::\}\ \"dict\ with\ Sproc-\[list\ \$name\]\"\ \{(\[list\ \[namespace\ tail\ \[lindex\ \[info\ level\ 0\]\ 0\]\]\])\}\ \\\{\$script\\\}\nso\ maybe\ that\ worked\ well\ enough\ for\ those\ with\ the\ power\ to\ add\ it.\ I\ know\ I\ have\ on\ occation\ missed\ it,\ though.\n\n----\n\[LV\]\ Does\ string\ concat\ have\ functionality\ different\ from\ just\ using\ the\ two\ strings\ together?\n\n======\nset\ str1\ hully\nset\ str2\ gully\nset\ str3\ \$str1\$str2\n======\n\nor\ even\ using\ \[append\]?\n\n======\nset\ str3\ hully\nappend\ str3\ gully\n======\n\n\[AMG\]:\ As\ far\ as\ I\ can\ tell,\ no.\ \ But\ it\ avoids\ creating\ temporary\ variables.\n\n\[LV\]\ I\ only\ used\ the\ variables\ for\ illustration.\ You\ can\ do\ the\ automatic\ concatenation\ in\ most\ contexts.\ The\ trickiest\ point\ would\ be\ when\ mixing\ a\ list\ and\ a\ string:\n======\nset\ a\ \"\[list\ 1\ \[list\ 2\ 3\ 4\]\ \[list\ 5\ 6\ \[list\ 7\ 8\ 9\]\]\]\ are\ the\ first\ nine\ digits\"\n1\ \{2\ 3\ 4\}\ \{5\ 6\ \{7\ 8\ 9\}\}\ are\ the\ first\ nine\ digits\n======\nIf\ one\ of\ the\ strings\ is\ going\ to\ be\ a\ list,\ then\ you\ have\ to\ make\ use\ of\ \[join\].\ However,\ otherwise,\ you\ can\ do\ things\ like\n======\nputs\ \"string1String2\"\nset\ b\ \"string1\[proc2\]\"\n======\nand\ so\ forth.\n\n======\n\n----\n\[Stu\]\ 2009-01-26\n\n======\nproc\ strJoin\ \{args\}\ \{\ return\ \[append\ \{\}\ \{*\}\$args\]\ \}\n\nset\ map\ \[namespace\ ensemble\ configure\ string\ -map\]\ndict\ append\ map\ join\ strJoin\nnamespace\ ensemble\ configure\ string\ -map\ \$map\n======\n\n\[AMG\]:\ Hmm,\ \[\[\[join\]\]\]\ could\ also\ be\ used.\ \ This\ way\ no\ dummy\ variable\ is\ created.\n\n======\nproc\ strJoin\ \{args\}\ \{join\ \$args\ \"\"\}\n======\n\n----\n!!!!!!\n%|\ \[Category\ String\ Processing\]\ |%\n!!!!!!} CALL {my revision {string concat}} CALL {::oo::Obj923926 process revision/string+concat} CALL {::oo::Obj923924 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4