あおきです。
報告と提案、ありがとうございます。
In Mail "[ruby-list:12083] [Q] POPclient"
Shugo Maeda <shugo / netlab.co.jp> wrote:
> 前田です。
(略)
> のように@dele(@deletedではなく)がfalseの時、つまりPOPmailitem#deleteを
> 呼んでいない時にもdeleするようになっているみたいです。
> # 実際に試してないので勘違いかも。
> これはまずいのではないでしょうか?
すみません、バグです。
消さないことがないもので気づきませんでした。
> あと、すぐにdeleteしたい時のために、
>
> def delete(exec = false)
> @dele = true
> self.exec if exec
> end
>
> のようになっているとうれしいです。
delete!ですぐ消すようにしました。ついでに、消したあとのundelで
例外を発生するようにしました(undel!では例外発生なし)。
ドキュメントはパッチが大きかったので次のバージョンにいれます。
-------------------------------------------------------------------
あおきみねろう@一橋大学
[74,117,115,116,32,97,110,111,116,104,101,114,32,82,117,98,121,32,
104,97,99,107,101,114,44,10].each do |i| print i.chr end
--- popclient.rb.org Sat Jan 30 14:12:01 1999
+++ popclient.rb Tue Feb 16 02:20:56 1999
@@ -16,6 +16,7 @@
class POP3Error < INETclientError ; end
class NoAccount < POP3Error ; end
class NoPassword < POP3Error ; end
+class DeletedError < POP3Error ; end
class APOPerror < POP3Error ; end
class APOPtimeStampNotExist < APOPerror ; end
@@ -157,15 +158,26 @@
end
def delete ; @dele = true ; end
- def undel ; @dele = false ; end
- def delete? ; @dele ; end
- def exec
- unless @deleted then @socket.dele( @num ) end
- @deleted = true
+ def delete! ; delete ; self.do_proc ; end
+
+ def undel
+ if @deleted then
+ raise DeletedError, "can't undel deleted mail"
+ end
+ undel!
end
+ def undel! ; @dele = false ; end
+
+ def delete? ; @deleted or @dele ; end
+
def deleted? ; @deleted ; end
+
+ def exec
+ if @dele and not @deleted then @socket.dele( @num ) end
+ @deleted = true
+ end
# private method -----------------