diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-07-06 09:42:12 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-07-06 09:42:12 +0000 |
commit | eb6571a860ff8c37c3583145be57287e8af97533 (patch) | |
tree | cd0a8b46f0b92608ec8997ca542d99029f28b1c5 /ext/tk/lib/tk/validation.rb | |
parent | d9034d23ce8dcb88f310a9e33b79379123c1f7fd (diff) |
* ext/tk/lib : improve framework of developping Tcl/Tk extension wrappers
* BWidget extension support on Ruby/Tk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/lib/tk/validation.rb')
-rw-r--r-- | ext/tk/lib/tk/validation.rb | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/ext/tk/lib/tk/validation.rb b/ext/tk/lib/tk/validation.rb index 0524a43757..30111f20cc 100644 --- a/ext/tk/lib/tk/validation.rb +++ b/ext/tk/lib/tk/validation.rb @@ -158,6 +158,15 @@ module TkValidation ] _setup_subst_table(KEY_TBL, PROC_TBL); + + def self.ret_val(val) + (val)? '1': '0' + end + + #def self._get_extra_args_tbl + # # return an array of convert procs + # [] + #end end ############################## @@ -168,6 +177,8 @@ module TkValidation end def _initialize_for_cb_class(klass, cmd = Proc.new, *args) + extra_args_tbl = klass._get_extra_args_tbl + if args.compact.size > 0 args = args.join(' ') keys = klass._get_subst_key(args) @@ -177,7 +188,11 @@ module TkValidation @id = install_cmd(cmd) else @id = install_cmd(proc{|*arg| - (cmd.call(*klass.scan_args(keys, arg)))? '1':'0' + ex_args = [] + extra_args_tbl.reverse_each{|conv| ex_args << conv.call(args.pop)} + klass.ret_val(cmd.call( + *(ex_args.concat(klass.scan_args(keys, arg))) + )) }) + ' ' + args end else @@ -188,9 +203,11 @@ module TkValidation @id = install_cmd(cmd) else @id = install_cmd(proc{|*arg| - (cmd.call( - klass.new(*klass.scan_args(keys,arg))) - )? '1': '0' + ex_args = [] + extra_args_tbl.reverse_each{|conv| ex_args << conv.call(args.pop)} + klass.ret_val(cmd.call( + *(ex_args << klass.new(*klass.scan_args(keys,arg))) + )) }) + ' ' + args end end |