class Acme::Smileage::Discography

Public Class Methods

new() click to toggle source
# File lib/acme/smileage/discography.rb, line 9
def initialize
  album Acme::Smileage::Discography::Albums::Amanojaku
  album Acme::Smileage::Discography::Albums::AsuhaDateNanoniImasuguKoeGaKikitai
  album Acme::Smileage::Discography::Albums::Sukichan
  album Acme::Smileage::Discography::Albums::OtonaNiNarutteMuzukashii
  album Acme::Smileage::Discography::Albums::Yumemiru15sai
  album Acme::Smileage::Discography::Albums::Yumemiru15saiPaxJaponicaGrooveRemix
  album Acme::Smileage::Discography::Albums::GambaranakutemoEenende
  album Acme::Smileage::Discography::Albums::GambaranakutemoEenendeTopnudeRemixVersion01
  album Acme::Smileage::Discography::Albums::OnajiJikyuuDeHatarakuTomodachiNoBijinMama
  album Acme::Smileage::Discography::Albums::OnajiJikyuuDeHatarakuTomodachiNoBijinMamaRemixType1
  album Acme::Smileage::Discography::Albums::WaruGaki1
  album Acme::Smileage::Discography::Albums::Shortcut
  album Acme::Smileage::Discography::Albums::KoiNiBooingBoo
  album Acme::Smileage::Discography::Albums::UchoutenLove
  album Acme::Smileage::Discography::Albums::ShortcutRemixver
  album Acme::Smileage::Discography::Albums::UchoutenLoverocketmanMix
  album Acme::Smileage::Discography::Albums::Tachiagirl
  album Acme::Smileage::Discography::Albums::PleaseMinisukaPostWoman
  album Acme::Smileage::Discography::Albums::ChotoMateKudasai
  album Acme::Smileage::Discography::Albums::Dotbikini
  album Acme::Smileage::Discography::Albums::SmleageBestAlbumComplete1
  album Acme::Smileage::Discography::Albums::SukiyoJunjouHankouki
  album Acme::Smileage::Discography::Albums::Samuine
  album Acme::Smileage::Discography::Albums::TabidachiNoHaruGaKita
  album Acme::Smileage::Discography::Albums::SmileSensation
  album Acme::Smileage::Discography::Albums::AtarashiiWatashiniNare_Yattaruchan
  album Acme::Smileage::Discography::Albums::Eeka_Iiyatsu
  album Acme::Smileage::Discography::Albums::MysteryNight_EighteenEmotion

  initialize_tracks
end

Public Instance Methods

discography(&block) click to toggle source
# File lib/acme/smileage/discography.rb, line 42
def discography(&block)
  if block
    @albums.select(&block)
  else
    @albums.dup
  end
end
find_discography(name) click to toggle source
# File lib/acme/smileage/discography.rb, line 58
def find_discography(name)
  find("Discography", name, @albums)
end
find_track(name) click to toggle source
# File lib/acme/smileage/discography.rb, line 62
def find_track(name)
  find("Track", name, @tracks)
end
oricon_total_sales(&block) click to toggle source
# File lib/acme/smileage/discography.rb, line 66
def oricon_total_sales(&block)
  albums = block ? @albums.select(&block) : @albums
  albums.inject(0) {|sum,e|
    if e.oricon
      sum + e.oricon.total_sales
    else
      sum
    end
  }
end
tracks(&block) click to toggle source
# File lib/acme/smileage/discography.rb, line 50
def tracks(&block)
  if block
    @tracks.select(&block)
  else
    @tracks.dup
  end
end

Private Instance Methods

album(album_class) click to toggle source
# File lib/acme/smileage/discography.rb, line 94
def album(album_class)
  @albums ||= []
  @albums << album_class.instance
end
find(label, name, targets) click to toggle source
# File lib/acme/smileage/discography.rb, line 79
def find(label, name, targets)
  matcher = Acme::Smileage::Utils::Matcher.new(name.encode("UTF-8"))
  canon_name = matcher.match(targets.map {|e| names(e) }.flatten)
  raise ArgumentError, "#{label} not found: #{name}" unless canon_name
  targets.find {|e| names(e).include?(canon_name) }
end
initialize_tracks() click to toggle source
# File lib/acme/smileage/discography.rb, line 90
def initialize_tracks
  @tracks = @albums.sort_by {|e| e.release_date }.map{|e| e.tracks }.flatten.uniq
end
names(obj) click to toggle source
# File lib/acme/smileage/discography.rb, line 86
def names(obj)
  [obj.name, obj.name_romaji] | obj.nicknames
end