rire

クラスメソッドの変更しようか、迷っている

データを取得するために、初期準備の処理を書くメソッドと 実際に取得したデータを加工していく処理を書くメソッドを用意したほうがいいのか、 迷っているところ。 現在は、特に前処理はなく、entry ごとに対して後処理を追加することが できるくらい。

RSS ファイルを読み込む

RSS ファイルを読み込むプロパティを作成してみた。 そんなことをしなくてもフツーに Ruby 標準の RSS Parser だけを 使えばいいんですが。 require 'lib/rire' require 'rss/maker' class RSSEntry < Rire::PropertyBase setup do |source| text = '' open(…

Rire とは?

このブログにちょくちょくでてくる Rire について、簡単に説明しておきます。 それに、今改良を重ねていて、何だか軸がぶれているような気がして、 自分の中にある完成イメージをもとに、README を書きます。 残しておけば、この先、役に立つはず。 Rire と…

アニメイト TV - Web ラジオ

アニメイト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 クラスを継承する仕様にしてみたいけれども、 そうなると、どういった実装になるのだろう?

Block でパラメータを設定する方法に変更

余計な記号がいらないし、インデントを気にしなくていいのは気が楽。 rire はもともとインデントは気にしなくていいものだけれど。 # vim: set ft=rire syntax=ruby: define_task do subscribe.rss do feed "rss2.xml" end publish.rss do title "A more bea…

エンコードプラグイン Filter::ffmpeg

ソースコードを公開していなかったので。 でも、登録するやつは少し変更するかも。もうちょい試して、実績がほしい。 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 を使ってテストを書いてみた

結局 Test::Unit を使った方法に。setup メソッドで少し準備が必要だけれども、これでプラグインのテストが できるようになった、と言えるかな。あとは、プラグインに記載するドキュメントのフォーマットかな。 #!/usr/bin/ruby $rire_home = File.expand_pa…

プラグインテストについて

Test::Unit を使えば、いつもどおりにテストするようにクラスを用意して 実施すればいいのだろうけれども、結局 Ruby のソースコードを書くことに 戻ってしまって、DSL にしている意味が半減しているような、ないような。。。でも、DSL の処理をテストするこ…

プラグインの仕様と追加したい機能

ざっと仕様を。 プラグイン用のディレクトリにファイルをおく Rire からコールするメソッドを、一ファイルにつき一つ定義する メソッド名とプラグインのファイル名は一致させるように DSL からは、アルファベット小文字で プラグインの引数は 3 つ。コンテキ…

これからの Rire

今やりたいと思っていることをまとめてみた。実際にやるかどうかは別として。 プラグインに関しては別項目であげる。 gem パッケージにしてみる? 設定のサンプル集 コマンドオプションの充実 ruby 1.9.X で動作確認 RIRE_HOME みたいな組み込み変数が DSL …

sort プラグインと grep プラグインを作ってみた

少しはツールらしくなってきたかな。だけれど、まだまだ足りないかもね。プラグインのことだけ考えて追加するよりは、ツールのサンプリング的な使われ方 を想定して、足りない部分を補っていったほうがいいかな。 define_task do |ctx| subscribe.config :fe…