2007年12月 7日

[ruby-list:44326] Re: mork.rb

なかだです。

At Fri, 7 Dec 2007 11:54:34 +0900,
S_Konno(今野 滋) wrote in [ruby-list:44324]:
> 試してみたところ、日本語の処理に課題がありそうです。
> (ソースをもう少し深く読み込めば解決方法があるのかも知れませんが)
> 例えば、
> http://www.ruby-lang.org/ja/のページタイトル

> オブジェクト指向スクリプト言語 Ruby
>
> が、Firefoxの履歴ファイルの中に、
> $AA0$D60$B80$A70$AF0$C80$07c$11T$B90$AF0$EA0$D70$C80$00$8A$9E$8A $00R$00u$00b$00y$00
>
> と、書かれてあります。これを、mork.rb は、
> A0D0B0A0A0C00c1TB0A0E0D0C0898 Ruby
>
> というフレーズで返してきます。

UTF-16LEを$+hex二桁でエスケープしたもののようですね。常にLEなの
か、プラットフォームによるのかはわかりませんが。


--- mork.rb@xxxxx=2786 2007-12-07 17:00:52.000000000 +0900
+++ mork.rb 2007-12-07 17:12:28.487000000 +0900
@@ -12,4 +12,13 @@ require "strscan"

class Mork
+ ProfileDir = case RUBY_PLATFORM
+ when /darwin/
+ "~/Library/Application Support/Firefox/Profiles"
+ when /win/
+ "~/Application Data/Mozilla/Firefox/Profiles"
+ when
+ "~/.mozilla/firefox"
+ end
+
RE = {
:comment => %r|//.*\n|,
@@ -72,9 +81,6 @@ class Mork
end

- if val.include?("$")
- val.gsub!(/\$00/, "")
- val.gsub!(/\$([\dA-F]{2})/) do |m|
- m[1].chr
- end
+ if val.gsub!(/\$([\dA-F]{2})/) {$1.hex.chr}
+ val = val.unpack("S*").pack("U*")
end

@@ -179,5 +185,5 @@ if $0 == __FILE__
require "pp"
require "pathname"
- histfiles = Pathname.glob("#{ENV["HOME"]}/Library/Application Support/Firefox/Profiles/*/history.dat")
+ histfiles = Pathname.glob(File.expand_path("*/history.dat", Mork::ProfileDir))
puts histfiles

--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦

投稿者 xml-rpc : 2007年12月 7日 17:16
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/67364
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。