librustdoc/html: recognize slices not to nest A tags.
1. A slice of parametrized type, say BorrowedRef { ... Vector(Generic(T)) }, is rendered as "<a href='primitive.slice.html'>&[T]</a>" 2. A slice of other types, say BorrowedRef { ... Vector(int) }, is rendered as "<a href='primitive.slice.html'>&[</a> <a href='primitive.int.html'>int</a> <a href='primitive.slice.html'>]</a>" 3. Other cases, say BorrowedRef { ... int }, are rendered as same as before: "&<a href='primitive.int.html'>int</a>" Relevant W3C specs: - http://www.w3.org/TR/html401/struct/links.html#h-12.2.2 12.2.2 Nested links are illegal - http://www.w3.org/TR/html5/text-level-semantics.html#the-a-element states A tag must not enclose any "interactive contents" which include A tags themselves.
This commit is contained in:
parent
bc649ba8f8
commit
f40b60b0e4
@ -478,7 +478,25 @@ impl fmt::Show for clean::Type {
|
||||
Some(ref l) => format!("{} ", *l),
|
||||
_ => "".to_string(),
|
||||
};
|
||||
write!(f, "&{}{}{}", lt, MutableSpace(mutability), **ty)
|
||||
let m = MutableSpace(mutability);
|
||||
match **ty {
|
||||
clean::Vector(ref bt) => { // BorrowedRef{ ... Vector(T) } is &[T]
|
||||
match **bt {
|
||||
clean::Generic(_) =>
|
||||
primitive_link(f, clean::Slice,
|
||||
format!("&{}{}[{}]", lt, m, **bt).as_slice()),
|
||||
_ => {
|
||||
try!(primitive_link(f, clean::Slice,
|
||||
format!("&{}{}[", lt, m).as_slice()));
|
||||
try!(write!(f, "{}", **bt));
|
||||
primitive_link(f, clean::Slice, "]")
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
write!(f, "&{}{}{}", lt, m, **ty)
|
||||
}
|
||||
}
|
||||
}
|
||||
clean::Unique(..) => {
|
||||
fail!("should have been cleaned")
|
||||
|
Loading…
x
Reference in New Issue
Block a user