Sha256: 399c419292dd45a66619fba92e941bc50af6b53b96bfa45ff665e10a5426819b

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

# -*- encoding: utf-8 -*-

require 'fileutils'

module Genit

  # Web site "compiler".
  class Compiler
  
    # Public: Constructor.
    #
    # working_dir - The String working directory, where live the project.
    def initialize working_dir
      @working_dir = working_dir
    end
  
    # Public: Compile the web site.
    def compile
      if genit_project_folder?
        remove_content_of_www
        compile_site
      else
        puts 'Not a genit project folder'
      end
    end
    
    private
    
    def genit_project_folder?
      File.exist?(File.join(@working_dir, '.genit'))
    end
    
    def remove_content_of_www
      Dir.foreach(File.join(@working_dir, 'www')) do |file|
        next if (file == ".") or (file == "..")
        filename = File.join(@working_dir, 'www', file)
        FileUtils.remove_dir(filename) if File.directory?(filename)
        FileUtils.remove_file(filename) if File.file?(filename)
      end
    end
    
    def compile_site
      compile_pages
      FileUtils.cp_r File.join(@working_dir, 'styles'), File.join(@working_dir, 'www')
      FileUtils.cp_r File.join(@working_dir, 'public'), File.join(@working_dir, 'www')
      FileUtils.cp_r File.join(@working_dir, 'scripts'), File.join(@working_dir, 'www')
    end
    
    def compile_pages
      Dir.glob(File.join(@working_dir, 'pages', '**/*')) do |file|
        next if File.directory?(file)
        @filename = file.gsub(File.join(@working_dir, 'pages') + '/', '')
        compile_page
      end
    end
    
    def compile_page
      pc = PageCompiler.new @working_dir, @filename
      @page = pc.compile
      save_file_as_xhtml
    end
    
    def save_file_as_xhtml
      doc_writer = DocumentWriter.new @working_dir
      doc_writer.save_as_xhtml @page, @filename
    end
    
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
genit-0.9 lib/genit/project/compiler.rb