日本語Ruby?
見えないプログラムは、全角スペースが識別子に使えるというトリビアから生まれたわけですが、全角文字が識別子になるならRubyプログラムを日本語で書けないか?
というわけでRuby1.9 用 mp3tag.rb。RubyGems で ruby-mp3info をインストールしてください。(インストールコマンドは「gem install ruby-mp3info」)
「ruby -Ku mp3tag.rb *.mp3」などとすると、mp3ファイルのタグをずらっと表示します。
(mac以外での動作は確認していません(^^;)
# coding: utf-8 # mp3のタグを表示する require_relative "Ruby日本語化" ライブラリを使う 'mp3info' class String def がBOMつきなら self[0].の文字コード == 255 && self[1].の文字コード == 254 end def からBOMを取って self[2..-1].を配列に変換して("S*").文字列に変換して("U*") end end class Mp3Info class << self alias :開いて :open end alias :のタグ全部 :tag end def mp3情報 Mp3Info end アルバム = ファイル::ベース名をとって Dir.カレントフォルダ 行出力 アルバム コマンドライン.をひとつひとつ { |音楽ファイル| 行出力 音楽ファイル mp3情報::開いて(音楽ファイル) {|曲| 曲.のタグ全部.をひとつひとつ { |タグ名, 内容| データ出力 "#{タグ名} " if 内容.のクラスが 文字列 if 内容.がBOMつきなら 内容 = 内容.からBOMを取って else 内容 = 内容.のエンコーディングを変換して("UTF-8", "Windows-31J") end "「#{内容}」".を表示する else "(#{内容})".を表示する end } "".を表示する } }
if とか def、class なんかは日本語化できないのですが、その他はがんばってみました。
メソッド名が「〜して」風になっているのはメソッドチェーンを意識してますが、今度「の」とか「を」なんかで始めた部分が不自然になる。
今回は恣意的に助詞をつけたり省いたりしましたが、本気でやるなら助詞があってもなくてもメソッドとすべきでしょうね。
each を「ひとつひとつ」としたのはちょっと自信訳ですが(^^;、凝れば凝るほど英語のSVOの語順が気になる。ドットもいらない。
「内容のエンコーディングを"Windows-31J"から"UTF-8"に変換して」とか書きたいわけです。「内容を行出力」とか「カレントフォルダからベース名を取って」とか。
もうパーサ作るしかないか。(えー)
あと忘れちゃいけない、同じフォルダに Ruby日本語化.rb が必要です。
# coding: utf-8 def コマンドライン ARGV end class Object alias :のクラスが :is_a? alias :ライブラリを使う :require alias :行出力 :puts alias :データ出力 :printf end class Array alias :をひとつひとつ :each alias :文字列に変換して :pack alias :の頭 :first end class Hash alias :をひとつひとつ :each end class File class << self alias :ベース名をとって :basename end end class String def を表示する puts self end alias :を置換して :sub! alias :を整数にして :to_i alias :をあてはめて :scan alias :のエンコーディングを変換して :encode alias :のエンコーディングを決め打ちして :force_encoding alias :のエンコーディング :encoding alias :をひと文字ごとに :each_char alias :を配列に変換して :unpack alias :の文字コード :ord end class Dir class << self alias :カレントフォルダ :pwd end end class Integer alias :文字列にして :to_s end def 文字列 String end def ファイル File end||< 単なる力技(笑)でも class << self なんて書き方できるの初めて知りました。 method_missing とかをうまく使えば、「の」や「を」の問題は解決できるかも。 あと日本語化とは関係ないんですが、iTunes の日本語エンコードがなんか大変なことになってて参りました。 mp3ファイルによっては文字化けすると思います。 (10/17 ちょっと修正) String#を表示する を定義して、行表示のところ直しました。