これはひどい

同僚がネットカフェの会員証をもらってきたそうです。
続きを読む>>
日記 | comments (14) | trackbacks (0)

独自タグを定義する

MTとかで使ってる、ビューの独自タグについて。
例えば
<!-- do_something -->
こんなコメントを自動解釈して、実行してくれる感じ。
これをRuby的に書くなら、どうするか。


def set_view
template = get_template #これで、ビューのテンプレートを取得する(ものとして下さい)
my_tags = ['<!-- do_something -->',
'<!-- show_something -->',
'<!-- play_something -->']

my_tags.each {|tag|
template.gsub(tag, convert(tag))
}
end

private
def convert(tag) #タグを変換、実行
case tag #実際の処理はタグによって異なる
when '<!-- do_something -->'
do_something
when '<!-- show_something -->'
show_something
when '<!-- play_something -->'
play_something
end
end


何となく、冗長な気がしないでもない…
my_tagsはハッシュにして、タグをキー、実行されるメソッドを値とし、evalとかで値を評価して実行してしまえばいいのかも。
独自タグを配列orハッシュでまとめるのはありだと思うんですが。
まあ、今回はテンプレートはRHTML直にするので、何かの時用メモ。
プログラム | comments (12) | trackbacks (0)

List the Listin' List

上に行くほど直近で欲しいもの。

---今必要なもの---
ティッシュ
カレールー
野菜ジュース
---この辺はそのうち買うもの
秋物衣類
粉寒天&カロリーレス甘味料
---この辺から貧乏との戦い---
デジカメ
Linuxマシン
---この辺からボーナス待ち---
DAW
シンセサイザー

上のほうが貧乏臭くてたまらない。
Linuxあたりまでは、一ヶ月頑張れば何とかなりそうな…
そして、4月にボーナスが出てくれれば…間に合った!全部できた!
まあ、ボーナスが出るという前提がまず問題。
もちろん0だったら悟史のバットが火を噴いて、惨劇が起こりますが。

それはともかく、デジカメあたりまでは普通に欲しいですね。
デジカメはどこを見て選べばいいのかさっぱり。
どうせ記録用途だし、適当に見た目で買えばいいかしら。

プログラミングの話題ばかりだと気持ち悪がられるので、適度に馬鹿な記事を。
日記 | comments (17) | trackbacks (0)

子カテゴリの子カテゴリの子カテゴリの

ウェブログ実装にあたり、カテゴリがサブカテゴリを何階層でも持てるようにしようと思いました。
それの実装メモ。

Railsには、acts_as_treeとかいう、簡単に樹構造を作ってくれるプラグインもあるらしいですが…
今回、簡単に実装できそうだったので、自分で作る事に。
プラグインは便利ですが、頼りすぎるとばかになるので、頭を使います。

パターン1
-あるカテゴリへのパンくずリストを作る。

パンくずリストというのは、こんなのです。
オタク | アニメ | らき☆すた | みなみ
例が気持ち悪いですが、イメージは分かりますか?
こんな形で、上位カテゴリからのリストを作ればいいわけです。
以下、親カテゴリのidはcategory.parent_idで取得可能として、実装。


def get_topic_path(ary = []) #Categoryクラスに定義
ary.unshift(self)
if self.parent_id.nil?
return ary
else
Category.find(self.parent_id).get_topic_path(ary)
end
end


selfとかreturnは省略可能、最近は書かない事が多くなりました。
以前はJavaやらCの影響で、略すると気持ち悪かったのですが、住めば都?

パターン2
-上位カテゴリから、全カテゴリのリストを作る。

さっきとは逆に、子をたどっていくパターン。
では、いってみましょう。


def get_tree_list #木構造でリスト作成
children = Category.find_by_parent_id(self.id)
unless children.blank?
self.categories = children
children.each {|child|
child.get_tree_list
}
end
end


以上。
まだテストはしていませんが、考え方はこんなもんのはず。
同じようなものをCで作った時は、めちゃくちゃ面倒だった思い出があります。
Rails、確かに楽なんですが、ときどき難しい問題も解かないと、どんどんばかになる気がします。
プログラム | comments (172) | trackbacks (0)