class AudioBookCreator::Cli
Attributes
set_defaults[RW]
true if we are setting the defaults
skip_defaults[RW]
web[W]
stub for testing
Public Instance Methods
book_def()
click to toggle source
# File lib/audio_book_creator/cli.rb, line 63 def book_def @book_def ||= BookDef.new end
conductor()
click to toggle source
# File lib/audio_book_creator/cli.rb, line 79 def conductor @conductor ||= Conductor.new(page_def, book_def, speaker_def, surfer_def) end
defaulter()
click to toggle source
# File lib/audio_book_creator/cli.rb, line 75 def defaulter @defaulter ||= Defaulter.new(page_def, book_def) end
page_def()
click to toggle source
parameter objects
# File lib/audio_book_creator/cli.rb, line 59 def page_def @page_def ||= PageDef.new end
parse(argv)
click to toggle source
# File lib/audio_book_creator/cli.rb, line 21 def parse(argv) options = OptionParser.new do |opts| opts.program_name = "audio_book_creator" opts.version = VERSION opts.banner = "Usage: audio_book_creator [options] [title] url [url] [...]" opt(opts, self) do |o| o.opt(:verbose, "-v", "--verbose", "--[no-]verbose", "Run verbosely") o.opt(:set_defaults, "--default", "Set these parameters as default for this url regular expression") o.opt(:skip_defaults, "--skip-defaults", "Skip using defaults") end opt(opts, page_def) do |o| o.opt(:title_path, "--title STRING", "Title css (e.g.: h1)") o.opt(:body_path, "--body STRING", "Content css (e.g.: p)") o.opt(:link_path, "--link STRING", "Next Page css (e.g.: a.Next)") o.opt(:chapter_path, "--chapter STRING", "Next Chapter css") end opt(opts, surfer_def) do |o| o.opt(:max, "--no-max", "Don't limit the number of pages to visit") o.opt(:max, "--max NUMBER", Integer, "Maximum number of pages to visit") o.opt(:regen_html, "--force-html", "Regerate the audio") end opt(opts, speaker_def) do |o| o.opt(:regen_audio, "--force-audio", "Regerate the audio") o.opt(:rate, "--rate NUMBER", Integer, "Set words per minute") o.opt(:voice, "--voice STRING", "Set speaker voice") end opt(opts, book_def) do |o| o.opt(:base_dir, "--base-dir STRING", "Directory to hold files") o.opt(:itunes, "--[no-]itunes", "-A", "Load book into itunes") end end options.parse!(argv) set_args(argv, options.to_s) self end
run()
click to toggle source
integration method
# File lib/audio_book_creator/cli.rb, line 84 def run if set_defaults if defaulter.store puts "stored for #{defaulter.host}" else puts "not stored" end else defaulter.load_unset_values unless skip_defaults conductor.run end end
speaker_def()
click to toggle source
# File lib/audio_book_creator/cli.rb, line 67 def speaker_def @speaker_def ||= SpeakerDef.new end
surfer_def()
click to toggle source
# File lib/audio_book_creator/cli.rb, line 71 def surfer_def @surfer_def ||= SurferDef.new end
verbose=(val)
click to toggle source
# File lib/audio_book_creator/cli.rb, line 17 def verbose=(val) logger.level = val ? Logger::INFO : Logger::WARN end
Private Instance Methods
opt(opts, model) { |opt_setter| ... }
click to toggle source
# File lib/audio_book_creator/cli.rb, line 99 def opt(opts, model) yield OptSetter.new(opts, model) end
set_args(argv, usage)
click to toggle source
# File lib/audio_book_creator/cli.rb, line 114 def set_args(argv, usage) if argv.empty? puts "please url", usage exit 2 elsif argv.first.include?("://") book_def.title = argv.first.split("/").last else book_def.title = argv.shift end book_def.urls = argv end