これは プリキュア Advent Calendar 2013の16日目です。
はじめに
12/16はキュアピースの中の人の金元寿子さんの誕生日です。おめでとうございます!!!
![]()
ピカピカぴかりんじゃんけんぽん!キュアピース!
![]()
#いい夫婦の日なので嫁を晒す
![]()
#いい夫婦の日なので嫁を晒す 会社の方
![]()
トリプルピース
15日目
id:tdakakさんの ハートキャッチプリキュア!の好きなところでした
Rubicure*1というプリキュアのgemを作りました。
プリキュアハッカソンで id:drillbitsさんが作っていた pycureにインスパイヤされてRuby版を作りました。(Ruby 2.0以上必須)
使い方
gem install rubicure
してください irb
で
require"rubicure"
すれば使えるようになります。
実際に使ってみます。
Rubicure::Seriesを取得
Precure.〜
でそれっぽいタイトルを入れればRubicure::Seriesを取得できます。
Precure.max_heart.title
Precure.splash_star.title
Precure.yes.title
Precure.yes_gogo.title
Precure.fresh.title
Precure.heart_catch.title
Precure.smile.title
Precure.dokidoki.title
ここで勃発する初代(無印)問題。
無印は下記のようにunmarkedを使うか、Precure
から Rubicure::Series
のメソッド呼んだ場合無印になります。*2
Precure.unmarked.title
Precure.title
余談ですがここの method_missing
は地味に面倒くさかったです
defmethod_missing(name, *args)
unmarked_precure = Rubicure::Series::find(:unmarked)
ifRubicure::Series::valid?(name)
Rubicure::Series::find(name)
elsif unmarked_precure.respond_to?(name)
unmarked_precure.send(name, *args)
elsesuperendend
タイトルのaliasも一通り用意しているのでまず困ることはないかと思います。
https://github.com/sue445/rubicure/blob/master/config/series.yml
Precure.now
か Precure.current
で取れます。
Precure.now
Precure.current
プリキュアの放送がされてない期間(下のサンプルだとスマイルとドキドキの空白期間)ではエラーになります
require"delorean"Delorean.time_travel_to "2013-02-01"Precure.now
現在時刻系のテストには delorean使うと超便利
日付を渡して放映期間中かどうか調べる
Rubicure::Series#on_air?
メソッドに Date
か Time
か日付っぽい文字列*3を渡します
Precure.dokidoki.on_air?("2013-12-16")
Precure.smile.on_air?("2013-12-16")
番組に出てくるプリキュアの一覧を取得する
Rubicure::Series#girls
で Rubicure::Girl
の配列が返ってきます
Precure.smile.girls
Precure.smile.girls.map(&:human_name)
Precure.smile.girls.map(&:precure_name)
Precure.smile.girls.count
Cure.~
Rubicure::Girl
は Rubicure::Series#girls
経由じゃなくても取得できます
Cure.lemonade
Cure.pine
Cure.muse
Cure.peace
Cure.rosetta
シャイニールミナスとミルキィローズは下記の方法で取得してください
Shiny.luminous
Milky.rose
その他alias
https://github.com/sue445/rubicure/blob/master/config/girls.yml
Rubicure::Girl
nameで現在の名前が取れます
yayoi = Precure.smile.girls[2]
yayoi.name
transform!
で掛け声とともに変身し、nameも変わります
yayoi.transform!
(レディ?)
プリキュア・スマイルチャージ!
(ゴー!ゴー!レッツ・ゴー!ピース!!)
ピカピカピカリンジャンケンポン! キュアピース!
5つの光が導く未来!
輝け!スマイルプリキュア!
yayoi.name
第2形態以降もあれば繰り返し変身します(が、掛け声はありません)
yayoi.transform!
yayoi.name
yayoi.transform!
yayoi.name
最後までいくと人間に戻ります
yayoi.transform!
yayoi.name
humanize
だと途中でも変身を解除して人間に戻ります
yayoi.transform!.transform!
yayoi.name
yayoi.humanize
yayoi.name
Precure.all_stars
でプリキュアオールスターズ全員取得できます
Precure.all_stars.count
Precure.all_stars.map(&:precure_name)
未実装
- transform_with
- 初代だとパートナーがいないと変身できないという設定なので
- ただ、厳密にやろうとするとパートナー妖精も考慮しないといけなくなるのでYAMLだけでなんとかするのは限界があった
- (みなと)みらいのともだち
- S☆S
参考になったもの
まとめ
おまけ
せっかくなのでcodeclimate登録してみたらGPA 4.0でした (・ω<)
![f:id:sue445:20131215233131p:plain f:id:sue445:20131215233131p:plain]()
ブコメレス
いや無印はunmarkedじゃないでしょう……firstとかが妥当
Enumerable以外でfirst使うのはそれはそれで違和感が。yamlで別名をつけているので
Precure.futari_wa_pretty_cure
でも取得はできます。
19日目
このままだと連投予定