Sha256: 201e99c926e8c42b6d61ec501bd1ebc1f70d2023c70003f171fd26cef54390db

Contents?: true

Size: 1.92 KB

Versions: 4

Compression:

Stored size: 1.92 KB

Contents

require "plist"
require "renderer/page_processor"

module Playgroundbook
  class PageWriter
    def initialize(page_processor = PageProcessor.new, ui = Cork::Board.new)
      @page_processor = page_processor
      @ui = ui
    end

    def write_page(page_name, page_dir_name, imports, page_contents, page_sources, page_resources, chapter_info={})
      Dir.mkdir(page_dir_name) unless Dir.exist?(page_dir_name)
      contents_with_import = "//#-hidden-code\n"
      contents_with_import += imports.map { |i| "import #{i}" }.join("\n") + "\n"
      contents_with_import += "//#-end-hidden-code\n"
      contents_with_import += @page_processor.strip_extraneous_newlines(page_contents)

      Dir.chdir(page_dir_name) do
        File.open(ContentsSwiftFileName, "w") do |file|
          file.write(contents_with_import)
        end

        File.open(MANIFEST_FILE_NAME, "w") do |file|
          file.write({
            "Name" => page_name,
            "LiveViewMode" => chapter_info.has_key?("live_view_mode") ? chapter_info["live_view_mode"] : "HiddenByDefault",
            "LiveViewEdgeToEdge" => chapter_info.has_key?("edge_to_edge_live_view") ? chapter_info["edge_to_edge_live_view"] : true,
            "Version" => "1.0",
            "ContentVersion" => "1.0"
          }.to_plist)
        end

        copy_page_sources(page_sources)
        copy_page_resources(page_resources)
      end
    end

    def copy_page_sources(source_names)
      Dir.mkdir(SharedSourcesDirectoryName) unless Dir.exist?(SharedSourcesDirectoryName)

      source_names.each do |source|
        FileUtils.cp("../../../../../../#{source}", SharedSourcesDirectoryName)
      end
    end

    def copy_page_resources(resource_names)
      Dir.mkdir(SharedResourcesDirectoryName) unless Dir.exist?(SharedResourcesDirectoryName)

      resource_names.each do |resource|
        FileUtils.cp("../../../../../../#{resource}", SharedResourcesDirectoryName)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
playgroundbook-1.2.0 lib/renderer/page_writer.rb
playgroundbook-1.1.1 lib/renderer/page_writer.rb
playgroundbook-1.1.0 lib/renderer/page_writer.rb
playgroundbook-1.0.0 lib/renderer/page_writer.rb