Class: Kitsu::Anime

Inherits:
Object
  • Object
show all
Defined in:
lib/kitsu/anime.rb

Constant Summary collapse

SEASON_PATTERNS =
[
  '(\d+)\w{2}\sSeason$',
  'Season (\d+)',
  '(\w+)\sSeason$',
  '(\w+\-\w+)\sSeason$'
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parsed) ⇒ Anime

Returns a new instance of Anime.



12
13
14
15
# File 'lib/kitsu/anime.rb', line 12

def initialize(parsed)
  @parsed = parsed
  @data = @parsed['data']
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



3
4
5
# File 'lib/kitsu/anime.rb', line 3

def data
  @data
end

Instance Method Details

#ordinalized_words_to_numbersObject



17
18
19
20
21
22
23
# File 'lib/kitsu/anime.rb', line 17

def ordinalized_words_to_numbers
  @ordinalized_words_to_numbers_map ||= Hash[(1..100).to_a.map do |number|
    word = number.localize.to_rbnf_s('SpelloutRules', 'spellout-ordinal')
    number = number.to_s
    [word, number]
  end]
end

#seasonObject



30
31
32
33
34
35
36
37
# File 'lib/kitsu/anime.rb', line 30

def season
  pattern = /#{SEASON_PATTERNS.join('|')}/
  matches = @data['attributes']['titles']['en_jp'].match(pattern)
  return '1' if matches.nil?
  season = matches.captures.compact.first
  return ordinalized_words_to_numbers[season] if season.to_i.zero?
  season
end

#titleObject



25
26
27
28
# File 'lib/kitsu/anime.rb', line 25

def title
  en_jp_title = data['attributes']['titles']['en_jp']
  en_jp_title.match(/(^.+?)($|\s\d+\w{2}\sSeason)/).captures[0]
end