1
0
mirror of https://github.com/prometheus/docs.git synced 2026-02-07 03:44:55 +01:00
Files
docs/Rules
Matthias Rampke c9cc805d2e Fix governance design
Let the governance use the default layout (all markdown files default to
"docs").

Make the default layout use the right div classes so the CSS can take
hold.

Fix the `layout` declaration for Markdown documents that are not `kind:
article`. Declare the governance to use the "default" layout, not the
"docs" one. This is the minimal change to support the governance
document. The layout choice needs a refactoring, but how to do that
needs more thought.
2018-01-08 17:55:27 +00:00

111 lines
3.1 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env ruby
# A few helpful tips about the Rules file:
#
# * The string given to #compile and #route are matching patterns for
# identifiers--not for paths. Therefore, you cant match on extension.
#
# * The order of rules is important: for each item, only the first matching
# rule is applied.
#
# * Item identifiers start and end with a slash (e.g. “/about/” for the file
# “content/about.html”). To select all children, grandchildren, … of an
# item, use the pattern “/about/*/”; “/about/*” will also select the parent,
# because “*” matches zero or more characters.
compile '/_redirects/' do
end
route '/_redirects/' do
'/_redirects'
end
compile '/assets/*' do
end
route '/assets/*' do
# Cachebuster currently doesn't fingerprint all needed files (SVG and font
# extensions are missing), so we need to differentiate here.
if Nanoc::Cachebuster::FILETYPES_TO_FINGERPRINT.include?(item[:extension])
item.identifier[0..-(3 + item[:extension].length)] + fingerprint(item[:filename]) + '.' + item[:extension]
else
item.identifier[0..-2]
end
end
# TODO(ts): Remove these hacks once the nanoc4 upgrade is done.
compile '*/images/*' do
end
route '*/images/*' do
item.identifier.chop + '.' + item[:extension]
end
# RSS Feed
compile '/blog/feed/' do
filter :erb
end
route '/blog/feed/' do
'/blog/feed.xml'
end
compile '*' do
filter :erb
if item[:extension] == 'md'
filter :redcarpet, options: {filter_html: true, autolink: true, no_intraemphasis: true, fenced_code_blocks: true, gh_blockcode: true, tables: true}, renderer_options: {with_toc_data: true}
filter :normalize_links, item[:repo_docs] if item[:repo_docs]
filter :outdated_content, item[:repo_docs] if item[:repo_docs] && item[:repo_docs][:outdated]
filter :add_anchors
filter :bootstrappify
filter :admonition
filter :colorize_syntax, :default_colorizer => :pygmentsrb
filter :config_linker if item[:title] == 'Configuration'
filter :toc, style: item[:toc]
if item[:kind] == 'article'
layout 'blog'
else
# TODO(mr): separate layout selection from Markdown handling
layout item[:layout] || 'docs'
end
elsif item[:extension] == 'css'
# dont filter stylesheets
elsif item.binary?
# dont filter binary items
elsif item[:layout]
layout item[:layout]
else
layout 'default'
end
filter :cache_buster
end
route '/blog/' do
'/blog/index.html'
end
# Transform /blog/<YYYY>-<MM>-<DD>-<post title> to
# /blog/<YYYY>/<MM>/<DD>/<post title>.
route '/blog/*' do
y, m, d, slug = /([0-9]+)\-([0-9]+)\-([0-9]+)\-([^\/]+)/.match(item.identifier).captures
"/blog/#{y}/#{m}/#{d}/#{slug}/index.html"
end
route '*' do
if item[:extension] == 'css'
# Write item with identifier /foo/ to /foo.css
item.identifier.chop + fingerprint(item[:filename]) + '.css'
elsif item.binary?
# Write item with identifier /foo/ to /foo.ext
item.identifier.chop + '.' + item[:extension]
else
# Write item with identifier /foo/ to /foo/index.html
item.identifier + 'index.html'
end
end
layout '*', :erb