lib/belajar/course.rb in belajar-0.1.1 vs lib/belajar/course.rb in belajar-1.0.0

- old
+ new

@@ -1,28 +1,27 @@ require 'fileutils' module Belajar class Course - attr_reader :title, :path, :author, :link def initialize(path) - @path = path - @title = File.basename(path).gsub(/\_+/, ' ') + @path = path + @title = File.basename(path).gsub(/\_+/, ' ') @author = QuickStore.store.get(key(:author)) end def chapters @chapters ||= Loading::Chapters.load(@path) end def started? - chapters.reduce(false) { |started, chapter| started ||= chapter.started? } + chapters.any?(&:started?) end def mastered? - chapters.reduce(true) { |mastered, chapter| mastered &&= chapter.mastered? } + chapters.all?(&:mastered?) end def key(key_name) Storeable.key(title, prefix: 'courses', suffix: key_name) end @@ -42,11 +41,10 @@ target_dir = File.dirname(file_path) course_dir = nil Zip::File.open(file_path) do |zip_file| zip_file.each do |entry| - if options[:github_repo] first, *others = entry.to_s.split('/') directory = File.join(first.split('-')[0..-2].join('-'), others) else directory = entry.to_s @@ -64,13 +62,16 @@ zip_file.extract(entry, "#{target_dir}/#{directory}") { true } end end FileUtils.rm(file_path) - rescue Exception => e + rescue StandardError => e puts e old_dir = "#{course_dir}_old/" - FileUtils.copy_entry(old_dir, "#{course_dir}/", true) if Dir.exist?(old_dir) + + if Dir.exist?(old_dir) + FileUtils.copy_entry(old_dir, "#{course_dir}/", true) + end ensure old_dir = "#{course_dir}_old/" FileUtils.rm_r(old_dir) if Dir.exist?(old_dir) return Course.new(course_dir) if course_dir end