compass/doc-src/lib/default.rb

113 lines
2.6 KiB
Ruby
Raw Normal View History

2010-01-21 06:25:44 +00:00
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
include Nanoc3::Helpers::LinkTo
include Nanoc3::Helpers::Capturing
include Nanoc3::Helpers::Rendering
2010-01-25 00:06:34 +00:00
include Nanoc3::Helpers::Breadcrumbs
def body_class(item)
2010-04-24 17:43:32 +00:00
classes = ["docs"]
classes += item[:classnames] || []
classes << "demo" if item.identifier =~ /^\/examples/
classes.join(" ")
end
def body_id(item)
2010-01-31 18:01:04 +00:00
if item[:body_id]
item[:body_id]
elsif id = item.identifier.chop[1..-1]
2010-01-22 19:41:08 +00:00
id.gsub(/\/|_/, "-")
end
end
def body_attributes(item)
{
:id => body_id(item),
:class => body_class(item)
}
end
class Recycler
attr_accessor :values
attr_accessor :index
def initialize *values
self.values = values
self.index = 0
end
def next
values[index]
ensure
self.index += 1
self.index = 0 if self.index >= self.values.size
end
def reset!
self.index = 0
end
end
def cycle(*args)
yield Recycler.new *args
end
def default_path(item)
item.reps.find{|r| r.name == :default}.path
end
def find(identifier)
@items.find{|i| i.identifier == identifier}
end
2010-04-24 17:03:34 +00:00
def get_var(instance_var)
instance_variable_defined?("@#{instance_var}") ? instance_variable_get("@#{instance_var}") : yield
end
2010-04-21 05:43:25 +00:00
def item_tree(item, options = {})
crumb = item[:crumb] || item[:title]
2010-04-21 16:37:02 +00:00
options[:heading_level] ||= 1 if options.fetch(:headings, true)
child_html = ""
2010-04-21 05:43:25 +00:00
if options.fetch(:depth,1) > 0
child_opts = options.dup
child_opts[:depth] -= 1 if child_opts.has_key?(:depth)
child_opts[:heading_level] += 1 if child_opts[:heading_level]
child_opts.delete(:omit_self)
item.children.sort_by{|c| c[:crumb] || c[:title]}.each do |child|
next if child[:navigable] == false
child_html << item_tree(child, child_opts)
end
2010-04-21 05:43:25 +00:00
else
options.delete(:heading_level)
end
child_html = render("partials/sidebar/container", :contents => child_html) unless child_html.size == 0
css_class = nil
2010-04-21 05:43:25 +00:00
contents = unless options[:omit_self]
item_opts = {
:current_item => item,
:selected => item.identifier == @item.identifier,
:crumb => item[:crumb] || item[:title]
}
if options[:heading_level]
render("partials/sidebar/heading",
item_opts.merge(:heading => "h#{options[:heading_level]}")
)
2010-04-21 05:43:25 +00:00
else
render("partials/sidebar/item", item_opts)
2010-04-21 05:43:25 +00:00
end
end
%Q{#{contents}#{child_html}}
end
2010-04-24 17:03:34 +00:00
def tutorial_item(path)
path = "" if path == :root
@items.detect do |i|
i.identifier == "/tutorials/#{path}"
end
end
def compass_version
v = Compass.version
"#{v[:major]}.#{v[:minor]}.#{v[:teeny]}.#{v[:build]}"
end