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