Properly extract and display title for all formats.

This commit is contained in:
Tom Preston-Werner
2010-07-23 16:45:16 -07:00
parent bd3721d4d3
commit 5ce149715f
5 changed files with 74 additions and 23 deletions
+42 -11
View File
@@ -222,10 +222,6 @@ html {overflow-y: scroll;}
margin-top: 1.5em !important;
}
.wikistyle h1:first-child {
display: none;
}
.wikistyle h2 {
font-size: 150% !important;
margin-top: 1.5em !important;
@@ -344,25 +340,60 @@ html {overflow-y: scroll;}
/* Special markup considerations */
.wikistyle.gollum > h1:first-child {
display: none;
}
/* asciidoc */
.wikistyle .ulist p,
.wikistyle .olist p {
.wikistyle.gollum.asciidoc > div#header > h1:first-child {
display: none;
}
.wikistyle.gollum.asciidoc .ulist p,
.wikistyle.gollum.asciidoc .olist p {
margin: 0 !important;
}
.wikistyle .loweralpha {
.wikistyle.gollum.asciidoc .loweralpha {
list-style-type: lower-alpha;
}
.wikistyle .lowerroman {
.wikistyle.gollum.asciidoc .lowerroman {
list-style-type: lower-roman;
}
.wikistyle .upperalpha {
.wikistyle.gollum.asciidoc .upperalpha {
list-style-type: upper-alpha;
}
.wikistyle .upperroman {
.wikistyle.gollum.asciidoc .upperroman {
list-style-type: upper-roman;
}
}
/* org */
.wikistyle.gollum.org > p.title:first-child {
display: none;
}
.wikistyle.gollum.org p:first-child + h1 {
border-top: none !important;
}
/* pod */
.wikistyle.gollum.pod > a.dummyTopAnchor:first-child + h1 {
display: none;
}
.wikistyle.gollum.pod h1 a {
text-decoration: none;
color: inherit;
}
/* rest */
.wikistyle.gollum.rest > div.document > div.section > h1:first-child {
display: none;
}
+1 -1
View File
@@ -4,7 +4,7 @@
<a href="/">Home</a> | <a href="/edit/{{name}}">Edit</a>
</div>
<h1>{{human_name}}</h1>
<div class="wikistyle">
<div class="wikistyle gollum {{format}}">
{{{content}}}
</div>
</div>
+4
View File
@@ -11,6 +11,10 @@ module Precious
"A Page"
end
def format
@page.format.to_s
end
def author
@page.version.author.name
end
+8 -1
View File
@@ -24,7 +24,14 @@ module Gollum
def render
data = extract_code(@data)
data = extract_tags(data)
data = GitHub::Markup.render(@name, data) rescue ''
begin
data = GitHub::Markup.render(@name, data)
if data.nil?
raise "There was an error converting #{@name} to HTML."
end
rescue Object => e
data = %{<p class="gollum-error">#{e.message}</p>}
end
data = process_tags(data)
data = process_code(data)
data = Sanitize.clean(data, SANITIZATION_OPTIONS)
+19 -10
View File
@@ -24,7 +24,7 @@ module Gollum
end
# Checks if a filename has a valid extension understood by GitHub::Markup.
# Also, checks if the filename has no "_" in the front (such as
# Also, checks if the filename has no "_" in the front (such as
# _Footer.md).
#
# filename - String filename, like "Home.md".
@@ -60,15 +60,24 @@ module Gollum
#
# Returns the fully sanitized String title.
def title
doc = Nokogiri::HTML(self.formatted_data)
if doc.first_element_child &&
doc.first_element_child.children &&
doc.first_element_child.children.first &&
doc.first_element_child.children.first.children &&
doc.first_element_child.children.first.children.first &&
doc.first_element_child.children.first.children.first.name &&
doc.first_element_child.children.first.children.first.name == 'h1'
Sanitize.clean(doc.first_element_child.children.first.children.first.to_html)
doc = Nokogiri::HTML(%{<div id="gollum-root">} + self.formatted_data + %{</div>})
header =
case self.format
when :asciidoc
doc.css("div#gollum-root > div#header > h1:first-child")
when :org
doc.css("div#gollum-root > p.title:first-child")
when :pod
doc.css("div#gollum-root > a.dummyTopAnchor:first-child + h1")
when :rest
doc.css("div#gollum-root > div > div > h1:first-child")
else
doc.css("div#gollum-root > h1:first-child")
end
if !header.empty?
Sanitize.clean(header.to_html)
else
Sanitize.clean(self.name.split('.')[0..-2].join('.').gsub('-', ' '))
end