Class: MyManga::CLI::Commands::Mark

Inherits:
MyManga::CLI::Command show all
Defined in:
lib/my_manga/mark.rb

Overview

See desc

Instance Method Summary collapse

Methods inherited from MyManga::CLI::Command

#manga_names, #pad

Instance Method Details

#call(flag:, names: nil, **options) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/my_manga/mark.rb', line 22

def call(flag:, names: nil, **options)
  names = manga_names(names)
  if options[:list]
    numbers = options[:list].to_s.split(',').map(&:strip)
    output ||= numbers.join(', ')
  elsif options[:to]
    numbers = (options.fetch(:from)..options.fetch(:to)).to_a
    output = [numbers.first, numbers.last].join('-')
  end
  output ||= '(all)'

  names.each do |name|
    manga = MyManga[name]
    chapters = numbers || manga.chapters_numbers
    count = chapters.length

    next unless count.positive?

    mark(manga, flag, chapters)
    print %(Chapters #{output} from "#{name}" )
    puts %(Marked as #{flag.capitalize})
  end
end

#mark(manga, flag, chapters) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/my_manga/mark.rb', line 46

def mark(manga, flag, chapters)
  if flag == 'read'
    MyManga.read!(manga, chapters)
  else
    MyManga.unread!(manga, chapters)
  end
end