notes/gollum/config.rb

73 lines
2.6 KiB
Ruby
Executable File

=begin
This file can be used to (e.g.):
- alter certain inner parts of Gollum,
- extend it with your stuff.
It is especially useful for customizing supported formats/markups. For more information and examples:
- https://github.com/gollum/gollum#config-file
=end
module Gollum
class Macro
class ImmediatePages < Gollum::Macro
def render(toc_root_path = nil, max_depth = 1, min_depth = 0)
if toc_root_path == nil
if @page.path == "Home.md"
toc_root_path = ""
else
toc_root_path = @page.path.sub(/\.[a-z]+$/,'/')
end
end
if toc_root_path.start_with?("/")
toc_root_path[0] = ''
end
if toc_root_path != "" and not toc_root_path.end_with?("/")
toc_root_path << '/'
end
if @wiki.pages.size > 0
list_items = @wiki.pages.map do |page|
if @page.url_path != page.url_path and page.url_path.start_with?(toc_root_path)
path_display = page.url_path_display.sub(toc_root_path.gsub("-", " "), "").sub(/^\//,'')
depth = path_display.count("/")
if depth.to_i < max_depth.to_i and depth.to_i >= min_depth.to_i
" <li><a href=\"/#{page.url_path}\">#{path_display}</a></li>"
end
end
end
result = "<ul>#{list_items.join}</ul>"
end
title = toc_root_path
"<div class=\"toc\"><div class=\"toc-title\">#{title}</div>#{result}</div>"
end
end
class PathSegments < Gollum::Macro
def render(append = "")
segments = @page.path.split('/')
segments = segments.first(segments.size - 1)
if append != ""
segments << append
end
full = ""
list_items = segments.map do |segment|
full = "#{full}/#{segment}"
" / <a href=\"#{full}\">#{segment}</a>"
end
list_items.insert(0, " / <a href=\"/Home\">Home</a>")
list_items << " / <a id='last_segment' onload='load_segment();' href='#'></a>"
"<div>#{list_items.join}</div>"
end
end
class DropDown < Gollum::Macro
def render(summary, detail)
"<details><summary>#{summary}</summary><div class=\"toc\">#{detail}</div></details"
end
end
class ImgDropDown < Gollum::Macro
def render(img_link, title = "Image")
"<details><summary>#{title}</summary><div class=\"img-drop-down\"><img src=\"#{img_link}\"/></div></details"
end
end
end
end