class Playgroundbook::ChapterManifestLinter

A linter for verifying the contents of a chapter's Manifest.plist

Attributes

cutscene_page_linter[RW]
page_linter[RW]

Public Class Methods

new(page_linter = PageLinter.new, cutscene_page_linter = CutscenePageLinter.new) click to toggle source
# File lib/linter/chapter_manifest_linter.rb, line 10
def initialize(page_linter = PageLinter.new, cutscene_page_linter = CutscenePageLinter.new)
  @page_linter = page_linter
  @cutscene_page_linter = cutscene_page_linter
end

Public Instance Methods

chapter_has_manifest_pages?() click to toggle source
# File lib/linter/chapter_manifest_linter.rb, line 39
def chapter_has_manifest_pages?
  value_defined_in_manifest?("Pages")
end
lint() click to toggle source
Calls superclass method
# File lib/linter/chapter_manifest_linter.rb, line 15
def lint
  super()

  fail_lint "Chapter has no pages in #{Dir.pwd}" unless chapter_has_manifest_pages?

  manifest_plist_contents["Pages"].each do |page_directory_name|
    # All pages exist inside the /Pages subdirectory, we need to chdir to there first.
    Dir.chdir PAGES_DIRECTORY_NAME do
      fail_lint "Chapter page directory #{page_directory_name} missing in #{Dir.pwd}" unless Dir.exist?(page_directory_name)
      lint_page page_directory_name
    end
  end
end
lint_page(page_directory_name) click to toggle source
# File lib/linter/chapter_manifest_linter.rb, line 29
def lint_page(page_directory_name)
  Dir.chdir page_directory_name do
    if page_directory_name =~ /.+\.playgroundpage$/
      page_linter.lint
    elsif page_directory_name =~ /.+\.cutscenepage$/
      cutscene_page_linter.lint
    end
  end
end