lib/gollum-site/site.rb in gollum-site-0.1.9 vs lib/gollum-site/site.rb in gollum-site-0.1.10

- old
+ new

@@ -11,33 +11,34 @@ def initialize(path, options = {}) @wiki = Gollum::Wiki.new(path, { :markup_class => Gollum::SiteMarkup, :page_class => Gollum::SitePage, :base_path => options[:base_path], - :sanitization => Gollum::SiteSanitization.new, - :history_sanitization => Gollum::SiteSanitization.new + :sanitization => sanitization(options), + :history_sanitization => sanitization(options) }) @wiki.site = self @output_path = options[:output_path] || "_site" - set_version(options[:version] || "master") + @version = options[:version] || "master" end # Prepare site for specified version - def set_version(version) - @version = version + def prepare() @pages = {} @files = {} @layouts = {} - @commit = version == :working ? @wiki.repo.commit("HEAD") : @wiki.repo.commit(version) - items = self.ls(version) + @commit = @version == :working ? @wiki.repo.head.commit : @wiki.repo.commit(@version) + items = self.ls(@version) items.each do |item| filename = ::File.basename(item.path) dirname = ::File.dirname(item.path) if filename =~ /^_Footer./ # ignore + elsif filename =~ /^_Sidebar./ + # ignore elsif filename =~ /^_Layout.html/ # layout @layouts[item.path] = ::Liquid::Template.parse(item.data) elsif @wiki.page_class.valid_page_name?(filename) # page @@ -89,40 +90,20 @@ OpenStruct.new(:path => entry.path, :data => entry.blob(@wiki.repo).data) end end end - # path must be relative to top level of wiki repo - def update_working_item(path) - filename = ::File.basename(path) - dirname = ::File.dirname(path) - if filename =~ /^_Footer./ - # ignore - elsif filename =~ /^_Layout.html/ - # layout - elsif @wiki.page_class.valid_page_name?(filename) - # page - abspath = ::File.join(@wiki.repo.git.work_tree, path) - page = @wiki.page_class.new(@wiki) - blob = OpenStruct.new(:name => filename, :data => IO.read(abspath)) - page.populate(blob, dirname) - page.version = @commit - @pages[page.name.downcase] = page - page.generate(@output_path, @version) - else - # file - data = IO.read(abspath) - @files[path] = data - path = ::File.join(@output_path, path) - ::FileUtils.mkdir_p(::File.dirname(path)) - ::File.open(path, "w") do |f| - f.write(data) - end - end + def sanitization(options) + site_sanitization = Gollum::SiteSanitization.new + site_sanitization.elements.concat options[:allow_elements] || [] + site_sanitization.attributes[:all].concat options[:allow_attributes] || [] + site_sanitization.protocols['a']['href'].concat options[:allow_protocols] || [] + site_sanitization end # Public: generate the static site def generate() + prepare ::Dir.mkdir(@output_path) unless ::File.exists? @output_path @pages.each do |name, page| SiteLog.debug("Starting page generation - #{name}") page.generate(@output_path, @version)