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)