class Genit::Compiler

Web site “compiler”.

Public Class Methods

new(working_dir) click to toggle source

Public: Constructor.

working_dir - The String working directory, where live the project.

# File lib/genit/project/compiler.rb, line 10
def initialize working_dir
  @working_dir = working_dir
  check_missing_file '.genit', 'Not a genit project folder'
  check_missing_file 'config', 'Missing config file'
end

Public Instance Methods

compile() click to toggle source

Public: Compile the web site.

# File lib/genit/project/compiler.rb, line 17
def compile
  RootCleaner.new(@working_dir).clean
  compile_site
  Css.new(@working_dir).render
end

Private Instance Methods

check_missing_file(filename, message) click to toggle source
# File lib/genit/project/compiler.rb, line 25
def check_missing_file filename, message
  unless File.exist?(File.join(@working_dir, filename))
    error message
  end
end
compile_page() click to toggle source
# File lib/genit/project/compiler.rb, line 45
def compile_page
  pc = PageCompiler.new @working_dir, @filename
  @page = pc.compile
  save_file_as_xhtml
end
compile_pages() click to toggle source
# File lib/genit/project/compiler.rb, line 37
def compile_pages
  Dir.glob(File.join(@working_dir, PAGES_DIR, '**/*')) do |file|
    next if File.directory?(file)
    @filename = file.gsub(File.join(@working_dir, PAGES_DIR) + '/', '')
    compile_page
  end
end
compile_site() click to toggle source
# File lib/genit/project/compiler.rb, line 31
def compile_site
  compile_pages
  create_rss_feed
  create_sitemap_xml
end
create_rss_feed() click to toggle source
# File lib/genit/project/compiler.rb, line 56
def create_rss_feed
  all_news_files =
    Dir.glob(File.join(@working_dir, NEWS_DIR, '*')).sort.reverse
  begin
    config_file = YAML.load_file(File.join(@working_dir, 'config'))
  rescue Exception => msg
    error "In config file: #{msg}"
  end
  return unless config_file[:rss]
  RssFeed.new(@working_dir, all_news_files, config_file).generate_rss
end
create_sitemap_xml() click to toggle source
# File lib/genit/project/compiler.rb, line 68
def create_sitemap_xml
  pages = PagesFinder.new(@working_dir).find
  config_file = YAML.load_file(File.join(@working_dir, 'config'))
  urls = PagesFinder.pagenames2urls(pages, config_file[:address])
  sitemap = Sitemap.new(urls).get
  FileWriter.write sitemap, File.join(@working_dir, 'sitemap.xml')
end
save_file_as_xhtml() click to toggle source
# File lib/genit/project/compiler.rb, line 51
def save_file_as_xhtml
  doc_writer = DocumentWriter.new @working_dir
  doc_writer.save_as_xhtml @page, @filename
end