lib/hs/models/chapter.rb in hs-cli-0.2.2 vs lib/hs/models/chapter.rb in hs-cli-0.3.0
- old
+ new
@@ -1,38 +1,45 @@
# frozen_string_literal: true
require 'hs/loaders/chapter_loader'
-require 'hs/preview/chapter_preview'
+require 'hs/preview/content_preview'
+require 'hs/models/review_status'
module HS
class Chapter
extend HS::ChapterLoader
- include HS::ChapterPreview
+ include HS::ContentPreview
+ include HS::ReviewStatus
- REVIEW_STATUSES = %w[none translated first second final].freeze
-
+ # Loads chapter from file.
def self.load(course, file)
- load_chapter(course, File.read(file))
+ dir = File.dirname(file)
+
+ load_chapter(course, File.read(file)) do |chapter, module_file|
+ path = "#{dir}/#{module_file}"
+ chapter.modules << HS::Module.load(chapter, path)
+ end
end
- attr_reader :course, :content
+ attr_reader :course, :content, :modules
attr_accessor :slug, :title, :intro
- attr_writer :review_status
def initialize(course, args)
@course = course
@content = []
+ @modules = []
args.each do |key, val|
instance_variable_set("@#{key}", val)
end
end
- def review_status
- return 'none' unless REVIEW_STATUSES.include?(@review_status)
- @review_status
+ # Tries to find module in this chapter by module slug.
+ def find_module(slug)
+ modules.find { |m| m.slug.to_s == slug.to_s }
end
+ # URL of this chapter when published.
def hs_url
"#{course.hs_url}/#{slug}"
end
end
end