class LearnOpen::Opener

Attributes

clone_only[R]
editor[R]
get_next_lesson[R]
io[R]
logger[R]
options[R]
target_lesson[R]

Public Class Methods

new(target_lesson, editor, get_next_lesson, clone_only, options = {}) click to toggle source
# File lib/learn_open/opener.rb, line 15
def initialize(target_lesson, editor, get_next_lesson, clone_only, options = {})
  @target_lesson = target_lesson
  @editor = editor
  @get_next_lesson = get_next_lesson
  @clone_only = clone_only

  @io = options.fetch(:io, LearnOpen.default_io)
  @logger = options.fetch(:logger, LearnOpen.logger)

  @options = options
end
run(lesson:, editor_specified:, get_next_lesson:, clone_only:) click to toggle source
# File lib/learn_open/opener.rb, line 11
def self.run(lesson:, editor_specified:, get_next_lesson:, clone_only:)
  new(lesson, editor_specified, get_next_lesson, clone_only).run
end

Public Instance Methods

run() click to toggle source
# File lib/learn_open/opener.rb, line 27
def run
  logger.log('Getting lesson...')
  io.puts "Looking for lesson..."

  lesson_data = LearnOpen::Adapters::LearnWebAdapter
                    .new(options)
                    .fetch_lesson_data(
                        target_lesson: target_lesson,
                        fetch_next_lesson: get_next_lesson
                    )

  lesson = Lessons.classify(lesson_data, options)
  environment = LearnOpen::Environments.classify(options)
  lesson.open(environment, editor, clone_only)
end