[
[ ?c, ?n, :item_num ],
[ ?d, ?s, :detail ],
[ ?D, ?l, :items ],
[ ?e, ?e, :event ],
[ ?I, ?n, :id ],
[ ?l, ?n, :lower_bound ],
[ ?p, ?n, :active_id ],
[ ?P, ?e, :pattern ],
[ ?S, ?l, :sel_items ],
[ ?T, ?w, :widget ],
[ ?u, ?n, :upper_bound ],
[ ?W, ?o, :object ],
[ ??, ?x, :parm_info ],
nil
]
[
[ ?n, TkComm.method(:num_or_str) ],
[ ?s, TkComm.method(:string) ],
[ ?l, TkComm.method(:list) ],
[ ?w, TkComm.method(:window) ],
[ ?e, proc{|val|
case val
when /^<<[^<>]+>>$/
TkVirtualEvent.getobj(val[1..-2])
when /^<[^<>]+>$/
val[1..-2]
else
val
end
}
],
[ ?o, proc{|val| TkComm.tk_tcl2ruby(val)} ],
[ ?x, proc{|val|
begin
inf = {}
Hash[*(TkComm.list(val))].each{|k, v|
if keyinfo = KEY_TBL.assoc(k[0])
if cmd = PROC_TBL.assoc(keyinfo[1])
begin
new_v = cmd.call(v)
v = new_v
rescue
end
end
end
inf[k] = v
}
inf
rescue
val
end
} ],
nil
]