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