diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-10 10:13:30 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-10 10:13:30 +0000 |
commit | d2a9e77748684e786af9525e258aee98c8ff2a8d (patch) | |
tree | c981003f0983f34978882802c6b8db378df5ab93 /ext/tk/lib/tk/text.rb | |
parent | 7935361d36fdfd372002c276baede34bb39f89a2 (diff) |
* ext/tk/tcltklib.c (lib_eventloop_ensure): mis-delete a timer handler
when exit from a recursive called eventloop
* ext/tk/lib/tk/timer.rb: new TkRTTimer class, which can works for a
realtime operation
* ext/tk/sample/tkrttimer.rb: sample of TkRTTimer class
* ext/tk/lib/tk/textmark.rb: move TkTextMark#+ and TkTextMark#- to
TkText::IndexModMethods
* ext/tk/lib/tk/text.rb: improve TkTextMark#+ and TkTextMark#-, and
add them to TkText::IndexModMethods module
* ext/tk/sample/tktextio.rb: add test part of "seek by text index
modifiers"
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/lib/tk/text.rb')
-rw-r--r-- | ext/tk/lib/tk/text.rb | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/ext/tk/lib/tk/text.rb b/ext/tk/lib/tk/text.rb index 355153ea07..d294de9fd9 100644 --- a/ext/tk/lib/tk/text.rb +++ b/ext/tk/lib/tk/text.rb @@ -69,12 +69,36 @@ class TkText<TkTextWin ####################################### module IndexModMethods + def +(mod) + return chars(mod) if mod.kind_of?(Numeric) + + mod = mod.to_s + if mod =~ /^\s*[+-]?\d/ + TkText::IndexString.new(String.new(id) << ' + ' << mod) + else + TkText::IndexString.new(String.new(id) << ' ' << mod) + end + end + + def -(mod) + return chars(-mod) if mod.kind_of?(Numeric) + + mod = mod.to_s + if mod =~ /^\s*[+-]?\d/ + TkText::IndexString.new(String.new(id) << ' - ' << mod) + elsif mod =~ /^\s*[-]\s+(\d.*)$/ + TkText::IndexString.new(String.new(id) << ' - -' << $1) + else + TkText::IndexString.new(String.new(id) << ' ' << mod) + end + end + def chars(mod) fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer) if mod < 0 - TkText::IndexString.new(id + ' ' << mod.to_s << ' chars') + TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' chars') else - TkText::IndexString.new(id + ' + ' << mod.to_s << ' chars') + TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' chars') end end alias char chars @@ -82,25 +106,25 @@ class TkText<TkTextWin def lines(mod) fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer) if mod < 0 - TkText::IndexString.new(id + ' ' << mod.to_s << ' lines') + TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' lines') else - TkText::IndexString.new(id + ' + ' << mod.to_s << ' lines') + TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' lines') end end alias line lines def linestart - TkText::IndexString.new(id + ' linestart') + TkText::IndexString.new(String.new(id) << ' linestart') end def lineend - TkText::IndexString.new(id + ' lineend') + TkText::IndexString.new(String.new(id) << ' lineend') end def wordstart - TkText::IndexString.new(id + ' wordstart') + TkText::IndexString.new(String.new(id) << ' wordstart') end def wordend - TkText::IndexString.new(id + ' wordend') + TkText::IndexString.new(String.new(id) << ' wordend') end end @@ -159,9 +183,9 @@ class TkText<TkTextWin end private :create_self - def index(index) + def index(idx) TkText::IndexString.new(tk_send_without_enc('index', - _get_eval_enc_str(index))) + _get_eval_enc_str(idx))) end def get_displaychars(*index) |