このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

itemstolist

発言者:猫の手
( Date Monday, April 06, 1998 09:02:20 )


 以前のコメントにチェーンしようかと思ったのですが、古くなったので、新たに起こします。

v1.25のitemsToList の linedelimiterのパラメータとしては、
1バイトしか使えないのでしょうか。
例えば、"<rtrn>"のような文字列を使う仕様にはなってないのでしょうか。

田中求之 さんからのコメント
( Monday, April 06, 1998 13:21:08 )

何文字でも指定できますよ。改行コードなどに限らず、文字列ならなんでもOKです。
(lineDelimiter, itemDelimiter のどちらも)

できませんでしたか?

田中求之 さんからのコメント
( Monday, April 06, 1998 14:37:07 )

ただし、case sensitive (大文字と小文字を区別する)で処理するようになって
ますので、この点は注意してください。

without case sensitive のオプションは 2.0 移行時に追加する予定です。
(コマンド名も MT Parse に変更します)

田中求之 さんからのコメント
( Monday, April 06, 1998 15:58:36 )

あちゃぁ、今、試してみたらうまくいきませんね (^_^;;

今夜にでも修正します。


山本 武 さんからのコメント
( Monday, April 06, 1998 17:17:50 )

Linedelimiterとは違うのですが、数字の書かれた文字列を
AppleScriptの数字の配列に変換できないかと考えています。
残念ながら、というか、当然ながら、文字列を文字列の
配列に変換するのはitemstolistで一発なのですが、
その先、文字をnumberに変換するのに時間がかかっていて
困っています。
 XCMD-OSAXのTextToListは出力するデータのタイプを
指定できるのですが、itemstolistではそのオプションがありません。
次回もし手を入れる機会があれば御検討しては頂けないでしょうか。
宜しくお願いします。

田中求之 さんからのコメント
( Monday, April 06, 1998 18:02:47 )

>次回もし手を入れる機会があれば御検討しては頂けないでしょうか。

今夜のバグ取りの際に検討してみます。数字に変換可能なものは変換する
というオプションの追加ということでよろしいですね?

猫の手 さんからのコメント
( Monday, April 06, 1998 18:49:13 )

 なんだか、またお手数をおかけしてしまいます。

田中求之 さんからのコメント
( Tuesday, April 07, 1998 02:30:12 )

itemsToList のバグ修正&改良を行った 1.27 を登録しておきます。

バグ修正
・lineDelimiter に3文字以上の文字列が指定できなかったバグを修正

改良点
・itemDelimiter, lineDelimiter に空文字を指定可能
 → itemDelimiter = "" の時には、1行ごとの切り分けを行う
 → lineDelimiter = "" の時には、アイテムの切り分けだけを行う

・senseCase オプションを追加
 → デリミタの検索の場合に、大文字と小文字の区別を行うか?(デフォルトは区別しない
   になりってます)

・as number オプションを追加
 → これを true にしておくと、アイテムをリストに登録する際に、数字(real) に
   変換しようとします。変換できなかったものは、テキストとして登録します。

    Sample:

    itemsToList "3.369    -56    this is a test" with as number

    ---> {3.369, -56.0, "this is a test"}


→  Tanaka_osax_1.27.hqx

山本 武 さんからのコメント
( Tuesday, April 07, 1998 09:31:14 )

 なんとお礼を申し上げてよいやら。ありがとうございます。
 これで、表形式のテキストデータの処理が非常に簡略化できます。
 本当にありがとうございます。

 山本 武

田中求之 さんからのコメント
( Wednesday, April 08, 1998 02:02:39 )

昨日の今日でなんですが (^_^;;  1.28 です。

まず itemsToList の as number を as に変更し、変換する型を自分で指定する
ようにしました。ですから

itemsToList "32  0.2356E+2  1234567890  This is a test"
 --> {"32", "0.2356E+2", "1234567890", "This is a test"}

itemsToList "32  0.2356E+2  12345678900  This is a test" as integer
 --> {32, 24, "12345678900", "This is a test"}

itemsToList "32  0.2356E+2  12345678900  This is a test" as real
 --> {32.0, 23.56, 1.23456789E+10, "This is a test"}

のようになります(1.27 の 'as number' に相当するのは as real または as "doub"
です)


また、listToLines の方は、リストの入れ子に対応しました。これにより

ListToLines {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}

は

"1  2  3
4  5  6
7  8  9"

という、いわゆるタブ区切りのテキストを吐き出します。 itemsToList とペアで
テキスト形式のデータをうまく扱えるようにしました。

→  Tanaka_osax_1.28.hqx

猫の手 さんからのコメント
( Wednesday, April 08, 1998 08:01:04 )

 ありがとうございます。
 早速使ってみます。

山本 武 さんからのコメント
( Wednesday, April 08, 1998 09:02:57 )

 実はListToLinesのことを後で思い出して
”しまった、一緒にお願いするんだった!”
と思っていた矢先にListToLinesの変更のお知らせ。

 有り難く使わせて頂きます。

田中求之 さんからのコメント
( Wednesday, April 08, 1998 18:17:15 )

バグを見つけたら報告よろしくぅ (^_^;;

山本 武 さんからのコメント
( Saturday, April 11, 1998 16:14:30 )

ようやく自宅に帰り試してみました。
itemstolistに関してですが
itemsToList "1.5 -6.8 9.2" itemDelimiter space as real
の結果が{1.5, -6.8, "9.2"}となります。

itemsToList "1.5 -6.8 9.2" & return itemDelimiter space as real
とお尻にreuturnを入れると
結果が{{1.5, -6.8, 9.2}, {""}}
となり最後の要素がちょっと邪魔になります。

どうも最後の要素だけが文字列だと判断されているようです。
もし、仕様と違うのであれば修正をお願いしたいと思います。
お忙しいとは存じますがよろしくお願いします。

田中求之 さんからのコメント
( Saturday, April 11, 1998 16:54:07 )

あちゃぁ、またバグですね。今夜にでも修正します。

…このままいくと、2.0 よりさきに 1.3 がでちゃうな (^_^;;

田中求之 さんからのコメント
( Saturday, April 11, 1998 22:13:16 )

ということで、itemsToList の上記のバグを修正した 1.29 です。

→  Tanaka_osax_1.29.hqx

猫の手 さんからのコメント
( Friday, May 01, 1998 09:04:10 )

 ItemsToListなんですが、次のような処理を行った場合、期待した結果が得
られません。どうもlinedelimiterの方で、"<"を含む文字列があると、うまく
認識されていないようなんですが。


set a to itemsToList "abc<a>efg<a>hij<b><a>klm" itemDelimiter "<a>" lineDelimiter "<b>"

{"abc", "efg", "hij<b>", "klm"}

田中求之 さんからのコメント
( Friday, May 01, 1998 12:35:25 )

あ、これバグですね。

"<" を含むのが問題なのではなく、item delimiter と line delimiter の先頭の
文字が同じことが問題を引き起こしています。

検索ルーティンの手抜きが原因です。

この週末に修正しておきます。

もし急ぎの処理なのでしたら、<b> を return に変換してから処理させるなどの
応急策で切り抜けてください (^_^;

猫の手 さんからのコメント
( Friday, May 01, 1998 14:14:41 )

 急ぎません。お時間のあるときに、よろしくお願いします。

 世間はメーデーだそうですが、我ら未組織労働者は普通に仕事をしています。

田中求之 さんからのコメント
( Friday, May 01, 1998 15:20:25 )

ソースの修正は終わりましたので、あとは自宅に帰ってコンパイルすればバグ取り完了
です。

ただし、勝手ながら、修正は Tanaka' osax 2.0b に対して行います。つまり、
MT Parse に対するバグ修正の形でリリースします。


猫の手 さんからのコメント
( Thursday, May 07, 1998 10:58:54 )

 Tanaka's osaxは、2と1とで互換性がないと考えていいのでしょうか。
 そうすると、私の所では、サーバには当分2は使えないなぁ。
 今動作しているスクリプトを、いい機会だから、2を使って書き換えるかな。

 そうそう、遅くなりましたが、バグ修正ありがとうございました。

田中求之 さんからのコメント
( Thursday, May 07, 1998 16:18:42 )

>Tanaka's osaxは、2と1とで互換性がないと考えていいのでしょうか。

いえ、むしろ、ほとんどのコマンドは互換性があります(単なる名前の変更だけ)。
2.0 ベータのページに、1.0 との違いを一覧表(私にしては珍しくテーブルを
使ったページになってます)にしたものをリンクしてありますが、あれを見て
もらえば、多くのコマンドが just renamed (単に名称変更)になっている
のに気がつかれると思います。

ただ、itemsToLis -> MT Parse のように、仕様が変更になったものもあり
ますし、コード変換などは一まとめにしましたので、CGI のスクリプトなどでは
修正を加える必要があるのです。

で、あれこれと言うのが面倒なので、互換性はない(保証しない)ということで
通します (^_^;;