rire
データを取得するために、初期準備の処理を書くメソッドと 実際に取得したデータを加工していく処理を書くメソッドを用意したほうがいいのか、 迷っているところ。 現在は、特に前処理はなく、entry ごとに対して後処理を追加することが できるくらい。
RSS ファイルを読み込むプロパティを作成してみた。 そんなことをしなくてもフツーに Ruby 標準の RSS Parser だけを 使えばいいんですが。 require 'lib/rire' require 'rss/maker' class RSSEntry < Rire::PropertyBase setup do |source| text = '' open(…
このブログにちょくちょくでてくる Rire について、簡単に説明しておきます。 それに、今改良を重ねていて、何だか軸がぶれているような気がして、 自分の中にある完成イメージをもとに、README を書きます。 残しておけば、この先、役に立つはず。 Rire と…
アニメイトTV Web - 動画・音声アニメイト TV の Web ラジオ配信サイトから、配信中のタイトル・日付・ラジオリンク・ 説明を取得する。 class AnimateRadio < Rire::PropertyBase record :xpath => '//td[@bgcolor=#656363]' do has_property :title, :xpat…
インターネットラジオステーション<音泉>音泉ページから、番組ごとのタイトル・パーソナリティ・ラジオコンテンツのリンク などを取得する。 class Onsen < Rire::PropertyBase record :xpath => '//td[@bgcolor=#000000]' do has_property :title, :regex…
record で繰り返しになっている部分を抽出し、 has_property でプロパティになる部分を一つずつ抽出する定義をする。 以下のような感じにもしようかと思ったけれども、あまりきれいじゃない。 record :xpath => '//td[@bgcolor=#000000]' do |has_property| …
あるディレクトリのファイルオブジェクトとして受け取る。 $: << 'lib' require 'lib/rire' class Foo < Rire::PropertyBase foreach do |f| has_property :name, f.to_s has_property :size, File.stat(f).size has_property :mtime, File.stat(f).mtime en…
ruby なんだから、ただメソッドを定義するだけでなく、 Plugin クラスを継承する仕様にしてみたいけれども、 そうなると、どういった実装になるのだろう?
余計な記号がいらないし、インデントを気にしなくていいのは気が楽。 rire はもともとインデントは気にしなくていいものだけれど。 # vim: set ft=rire syntax=ruby: define_task do subscribe.rss do feed "rss2.xml" end publish.rss do title "A more bea…
ソースコードを公開していなかったので。 でも、登録するやつは少し変更するかも。もうちょい試して、実績がほしい。 Pragger を使っているなら、Pragger 用のプラグインに書き直してもいいかも。 require 'kconv' module FFmpeg class Helper def initializ…
作成しておきながら、読み込みのテストはしていませんけれど。 まぁ、ローカルにファイルがダウンロードされて、ffmpeg でエンコードできた ことは確認したから、十分かな。 そこで、ふと思ったことがあって、enclosure の url に指定する文字列はやっぱり U…
少しばかしプラグインを作ってみた。基礎的なものばかりだけれど。 もっと追加していけたらいいな。 大方そろったというわけで、バージョンを 0.0.1 とするかな。 subscribe.const 引数に渡した値を feed とする。 subscribe.rss RSS ファイルを読み込む fil…
例えばテストケースなら、以下のような部分。 テストケースが実行されるパスから、lib/rire.rb を読み込んでいる。 何となくきれいじゃないんだよね。 #!/usr/bin/ruby $rire_home = File.expand_path(File.dirname($0) + '/..') $LOAD_PATH.push $rire_home…
Rire::DSL#new でプラグインの読み込みと DSL の実行処理をしていたけれども、 処理をわけることにした。プラグインの読み込みはそのまま残すことにして、 DSL の処理は load メソッドに移動した。この変更はプラグインの単体テストを実装するためにってのも…
結局 Test::Unit を使った方法に。setup メソッドで少し準備が必要だけれども、これでプラグインのテストが できるようになった、と言えるかな。あとは、プラグインに記載するドキュメントのフォーマットかな。 #!/usr/bin/ruby $rire_home = File.expand_pa…
Test::Unit を使えば、いつもどおりにテストするようにクラスを用意して 実施すればいいのだろうけれども、結局 Ruby のソースコードを書くことに 戻ってしまって、DSL にしている意味が半減しているような、ないような。。。でも、DSL の処理をテストするこ…
ざっと仕様を。 プラグイン用のディレクトリにファイルをおく Rire からコールするメソッドを、一ファイルにつき一つ定義する メソッド名とプラグインのファイル名は一致させるように DSL からは、アルファベット小文字で プラグインの引数は 3 つ。コンテキ…
今やりたいと思っていることをまとめてみた。実際にやるかどうかは別として。 プラグインに関しては別項目であげる。 gem パッケージにしてみる? 設定のサンプル集 コマンドオプションの充実 ruby 1.9.X で動作確認 RIRE_HOME みたいな組み込み変数が DSL …
少しはツールらしくなってきたかな。だけれど、まだまだ足りないかもね。プラグインのことだけ考えて追加するよりは、ツールのサンプリング的な使われ方 を想定して、足りない部分を補っていったほうがいいかな。 define_task do |ctx| subscribe.config :fe…