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