[ruby-list:49992] Re: TkDND での日本語名の扱い
From:
Hidetoshi NAGAI <nagai@...>
Date:
2014-10-24 15:43:47 UTC
List:
ruby-list #49992
永井@知能.九工大です.
かなり古い話ですが,下記メールの件です.
考えた挙句,「余計な解釈はしない」というのが正解かなと結論付けました.
タイプごとに変換を変えるとかも考えたのですが,
* タイプは勝手に定義することも可能である (未知のタイプには対応できない) こと
* encoding を勝手に憶測すると間違いを生じやすいこと
* データをどう解釈したいか or すべきかを知っているのはプログラマであること
というようなことから,受け取ったままに引き渡すのがいいだろうという判断です.
通常は encoding も設定されていない (ASCII-8BIT になっている) ので,
force_encoding をかけたり,TkComm.simplelist でリストとして分解したりは,
プログラマが必要に応じて行うというのが一番確実だと思います.
というわけで,以下のパッチのような変更ではいかがでしょうか.
======================================================================
--- tkdnd.rb.orig 2013-11-27 06:19:58.369532997 +0900
+++ tkdnd.rb 2014-10-25 00:19:07.151774217 +0900
@@ -11,7 +11,7 @@
# call setup script
require 'tkextlib/tkDND/setup.rb'
-TkPackage.require('tkdnd')
+TkPackage.require('tkdnd', '1.0')
module Tk
module TkDND
@@ -35,7 +35,7 @@
[ ?b, ?L, :codes ],
[ ?c, ?s, :code ],
[ ?d, ?l, :descriptions ],
- [ ?D, ?l, :data ],
+ [ ?D, ?s, :data ],
[ ?L, ?l, :source_types ],
[ ?m, ?l, :modifiers ],
[ ?t, ?l, :types ],
@@ -158,7 +158,7 @@
cmd = Proc.new
end
- args = [None] if args.empty
+ args = [TkComm::None] if args.empty?
tk_call('dnd', 'bindsource', @path, type, cmd, *args)
self
======================================================================
From: Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Subject: [ruby-list:49776] Re: TkDND での日本語名の扱い
Date: Fri, 07 Mar 2014 10:20:50 +0900 (JST)
Message-ID: <20140307.102050.1568838937885765606.nagai@ai.kyutech.ac.jp>
> 永井@知能.九工大です.
>
> From: Umino <jam280400@yahoo.co.jp>
> Subject: [ruby-list:49775] Re: TkDND での日本語名の扱い
> Date: Thu, 6 Mar 2014 23:56:47 +0900 (JST)
> Message-ID: <399948.25407.qm@web101302.mail.kks.yahoo.co.jp>
>
>> 文字コードに関して上手く整理出来ておらず、もっぱらNKFだよりでしたので
>> 複数回の変換がされているなど想像も出来ませんでした。
>> #何故、2回変換が行われるのかは分かりませんが・・・・
>
> ごめんなさい.Ruby/Tk のバグでしょうね.
>
> # 可能であれば,OKWave とかではなく,ruby-list ML や ruby-dev ML とかで
> # 問い合わせや報告をしていただけますと助かります.
>
> Ruby 1.9 以降は Ruby 上の encoding と Tcl/Tk 上の encoding との
> 2つの encoding を扱わねばならなくなったため,
> 判断や処理を誤るとこうした過剰変換などが生じてしまいます.
> 大筋では問題が出ないようにしているつもりですが,
> (特に I/O 絡みの部分では) 処理誤りがまだ残っていたようです.
> バグ修正はきちんとするつもりですが,
> 目前は応急処置で対応しておいていただけますと幸いです.
>
> よろしくお願い致します.
--
永井 秀利 (nagai@ai.kyutech.ac.jp)
九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教