summaryrefslogtreecommitdiff
path: root/ext/tk/lib/tk/validation.rb
diff options
context:
space:
mode:
authornagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-07-06 09:42:12 +0000
committernagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-07-06 09:42:12 +0000
commiteb6571a860ff8c37c3583145be57287e8af97533 (patch)
treecd0a8b46f0b92608ec8997ca542d99029f28b1c5 /ext/tk/lib/tk/validation.rb
parentd9034d23ce8dcb88f310a9e33b79379123c1f7fd (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.rb25
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