Commit graph

75 commits

Author SHA1 Message Date
Aaron Turon
f26011d5a0 rustdoc: improvements to stability dashboard
* Makes dashboard width dynamic.
* Colors unmarked items.
* Gives overall crate percentages.
2014-07-28 08:41:53 -07:00
Alex Crichton
80efb220e0 rustdoc: Bind keydown instead of keypress for nav
Apparently keypress doesn't quite work in all browsers due to some not invoking
the handler and jquery not setting the right `which` field in all circumstances.
According to http://stackoverflow.com/questions/2166771 switching over to
`keydown` works and it appears to do the trick. Tested in Safari, Firefox, and
Chrome.

Closes #15011
2014-07-25 08:56:00 -07:00
Aaron Turon
4d16de01d0 rustdoc: Add stability dashboard
This commit adds a crate-level dashboard summarizing the stability
levels of all items for all submodules of the crate.

The information is also written as a json file, intended for consumption
by pages like http://huonw.github.io/isrustfastyet/

Closes #13541
2014-07-10 20:51:35 -07:00
Adrien Tétar
b7ef0cf742 webfonts: check-in licenses 2014-07-08 21:55:37 +02:00
Adrien Tétar
3b0b7b6b91 webfonts: serve Source Code Pro locally
So that we have freestanding docs.
2014-07-08 20:31:26 +02:00
Adrien Tétar
4d5f4ff5e9 webfonts: proper fix 2014-07-08 20:29:36 +02:00
Aaron Turon
256df5e3df rustdoc: incorporate stability index throughout
This commit hooks rustdoc into the stability index infrastructure in two
ways:

1. It looks up stability levels via the index, rather than by manual
attributes.

2. It adds stability level information throughout rustdoc output, rather
than just at the top header. In particular, a stability color (with
mouseover text) appears next to essentially every item that appears
in rustdoc's HTML output.

Along the way, the stability index code has been lightly refactored.
2014-06-30 22:36:24 -07:00
Zach Pomerantz
677e6ed603 (doc) Properly doc hotkeys in generated docs.
Updated search bar to match help text.
Used correct, normalized hotkeys in search.
Updated shortcut menu with working shortcuts (tabs).
Changed height of search help.
2014-06-19 09:56:59 -07:00
Valentin Tsatskin
0188bebbb7 rustdoc: Larger click areas for sidebar items
* Change links to display:block for click larger targets
* Remove linebreaks due to extra space
* Adjust margins so that element spacing stays the same
* Sidebar item hover background colour chosen from <pre> styling
2014-06-13 15:15:37 -07:00
Alex Crichton
3688c1d0ca rustdoc: More selectively remove execute links
Closes #14723
2014-06-07 10:53:22 -07:00
Alex Crichton
e5bbbca33e rustdoc: Submit examples to play.rust-lang.org
This grows a new option inside of rustdoc to add the ability to submit examples
to an external website. If the `--markdown-playground-url` command line option
or crate doc attribute `html_playground_url` is present, then examples will have
a button on hover to submit the code to the playground specified.

This commit enables submission of example code to play.rust-lang.org. The code
submitted is that which is tested by rustdoc, not necessarily the exact code
shown in the example.

Closes #14654
2014-06-06 20:00:16 -07:00
Alex Crichton
0dbfa5f611 rustdoc: Fix some more broken links 2014-06-01 21:53:43 -07:00
Alex Crichton
c2e3aa37da rustdoc: Create anchor pages for primitive types
This commit adds support in rustdoc to recognize the `#[doc(primitive = "foo")]`
attribute. This attribute indicates that the current module is the "owner" of
the primitive type `foo`. For rustdoc, this means that the doc-comment for the
module is the doc-comment for the primitive type, plus a signal to all
downstream crates that hyperlinks for primitive types will be directed at the
crate containing the `#[doc]` directive.

Additionally, rustdoc will favor crates closest to the one being documented
which "implements the primitive type". For example, documentation of libcore
links to libcore for primitive types, but documentation for libstd and beyond
all links to libstd for primitive types.

This change involves no compiler modifications, it is purely a rustdoc change.
The landing pages for the primitive types primarily serve to show a list of
implemented traits for the primitive type itself.

The primitive types documented includes both strings and slices in a semi-ad-hoc
way, but in a way that should provide at least somewhat meaningful
documentation.

Closes #14474
2014-05-31 21:59:50 -07:00
Alex Crichton
658924068e rustdoc: Show all implementors of traits
When inlining documentation across crates, primitive implementors of traits were
not shown. This commit tweaks the infrastructure to treat primitive and
Path-like impls the same way, displaying all implementors everywhere.

cc #14462
2014-05-31 21:59:50 -07:00
Alex Crichton
3100bc5b82 rustdoc: Move inlining to its own module 2014-05-25 13:26:46 -07:00
Alex Crichton
8dad7f579e rustdoc: Get [src] links working for inlined dox
These links work by hyperlinking back to the actual documentation page with a
query parameter which will be recognized and then auto-click the appropriate
[src] link.
2014-05-25 01:18:37 -07:00
Richo Healey
553074506e core: rename strbuf::StrBuf to string::String
[breaking-change]
2014-05-24 21:48:10 -07:00
Alex Crichton
06eb9765fe rustdoc: Show types for traits across crates
Right now, when you look in the "Implementors" section for traits, you only see
implementors within that crate. This commit modifies that section to include
implementors from neighboring crates as well.

For example, the Container trait currently says that it is only implemented by
strings and slices, but it is in fact implemented by nearly all containers.

Implementation-wise, this change generates an "implementors cache" similarly to
the search index where each crate will append implementors to the files. When
the page for a trait is loaded, it will load its specific cache file, rendering
links for all upstream types which implement the trait.
2014-05-21 16:41:58 -07:00
Alex Crichton
30927f15b7 rustdoc: Fix search links to enums/typedefs
When the values in html::item_type were updated, the JS definitions were
accidentally not updated as well.

Closes #14095
2014-05-10 17:00:39 -07:00
bors
4a5d39001b auto merge of #13914 : alexcrichton/rust/pile-o-rustdoc-fixes, r=brson
Lots of assorted things here and there, all the details are in the commits.

Closes #11712
2014-05-07 03:21:47 -07:00
Alex Crichton
1547caf748 rustdoc: Fix inclusion of the new fonts
These fonts were moved into place by rust's makefiles, but rustdoc is widely
used outside of rustc itself. This moves the fonts into the rustdoc binary,
similarly to the other static assets, and writes them to the output location
whenever rustdoc generates documentation.

Closes #13593
Closes #13787
2014-05-03 02:09:29 -07:00
Adrien Tétar
5f0a426f65 rustdoc: escape shown input to prevent injection 2014-05-02 20:41:09 +02:00
Adrien Tétar
dbea4853a9 rustdoc: fix overly broad selectors 2014-04-30 17:35:54 +02:00
bors
cbf113182c auto merge of #13776 : adrientetar/rust/rustdoc-fix, r=brson
- Closes #13591. Relevant example: http://adrientetar.legtux.org/cached/rust-docs/struct.CChars.htm
(Had to use `!important` to override CSS selector precedence, namely matching over parent class.)
- Implement changes from #13780 feedback, namely:
  * Changed font-size from 18px to 15px
  * Reintroduced gray background for code samples
  * Tightened up the margins
- Fix point 1 and point 4 of #13804.

Samples:

- [enum.FileType](http://adrientetar.legtux.org/cached/rust-docs/enum.FileType.htm)
- [struct.CChars](http://adrientetar.legtux.org/cached/rust-docs/struct.CChars.htm)
- [std](http://adrientetar.legtux.org/cached/rust-docs/std.htm)
- [std::io](http://adrientetar.legtux.org/cached/rust-docs/io.htm).

r? @brson
2014-04-29 18:26:44 -07:00
Ivan Petkov
3a0d8fd980 rustdoc: #13771: Make html links inside paragraphs more readable
All links inside docblocks will have their color set to `#4e8bca` (a
light blue color to contrast against the black text). This color also
offers a visible contrast from the surrounding text if viewed as
grayscale, making it suitable for accessability.

Docblock links will also be underlined when hovered over.
2014-04-28 20:55:10 -07:00
Noam Yorav-Raphael
5b2e477629 rustdoc: Make going back in browser history work after typing a search term 2014-04-29 01:29:14 +03:00
Adrien Tétar
2bf25a7fff rustdoc: fix a few inconsistencies 2014-04-28 19:29:43 +02:00
Adrien Tétar
076bbb38c7 rustdoc: style tweaks 2014-04-27 09:25:56 +03:00
Adrien Tétar
5371146107 rustdoc: refactor and unstyle inline section headers 2014-04-26 21:27:42 +09:00
Adrien Tétar
b3577a10f3 rustdoc: bring it inline 2014-04-25 18:04:59 +09:00
Adrien Tétar
c9d995d384 doc,rustdoc: store webfonts locally
- Avoids cross-domain requests restrictions
- Better availability of content
- No HTML queries needed for an offline build
2014-04-25 17:05:56 +09:00
Adrien Tétar
22160014a4 rustdoc: fixes 2014-04-25 16:56:39 +09:00
Adrien Tétar
c494a06064 doc: unifying with rustdoc
Conflicts:
	src/doc/rust.md
2014-04-20 21:11:44 +09:00
bors
88805e1e00 auto merge of #13485 : adrientetar/rust/newrustdoc, r=brson
- Cherry-pick from #12996
- Use Fira Sans for headlines and sidebar (Light), Heuristica for the body (Adobe Utopia derivative). Both are licensed under the SIL OFL license.
- A few tweaks

Two examples: [modified `std`](http://adrientetar.legtux.org/cached/rust-docs/std.htm) and [modified `std::io`](http://adrientetar.legtux.org/cached/rust-docs/io.htm).

cc #13484
**Blocked on graydon/rust-www#25 (for hosting of the fonts), that's showcased [here](http://adrientetar.github.io/rust-www/).**

cc @brson, @TheHydroImpulse
2014-04-16 17:51:28 -07:00
Kang Seonghoon
326f938730 rustdoc: Better sorting criteria for searching.
This essentially rewrites the sorting algorithm, which relied on
the implementation-defined handling of non-consistent sorting function
(cf. ECMA-262 5th edition, section 15.4.4.11)
and was also a bit inefficient.

The new criteria expands the prior criteria while adding these ones:

- The current crate is always preferred over other crates.
  (Closes #13178)
- An item with a description is preferred over one without it,
  if item names match. This is a heuristic assuming that
  the documented item is more likely to be relevant.
- An item with no literal occurrence of search query is handled correctly.
2014-04-15 19:45:00 -07:00
Adrien Tétar
84bf922b69 rustdoc: add webfonts and tweak the styles accordingly 2014-04-15 20:15:19 +09:00
Kang Seonghoon
8f5d71cf71 rustdoc: Omit repeated paths in the search index.
Since the items roughly follow the lexical order, there are
many consecutive items with the same path value which can be
easily compressed.

For the library and compiler docs, this commit decreases
the index size by 26% and 6% before and after gzip, respectively.
2014-04-14 10:00:50 +09:00
Kang Seonghoon
9eb336a020 rustdoc: Get rid of allPaths global variable by merging it into searchIndex. 2014-04-14 10:00:49 +09:00
Kang Seonghoon
f6854ab46c rustdoc: Use an array instead of an object for the search index.
`buildIndex` JS function recovers them into the original object form.
This greatly reduces the size of the uncompressed search index (27%),
while this effect is less visible after gzipped (~5%).
2014-04-14 10:00:49 +09:00
Kang Seonghoon
f1de04c760 rustdoc: Represent item types as a small number in the search index.
Has negligible improvements with gzip, but saves about 7% without it.
This also has an effect of changing the tie-breaking order of item types.
2014-04-14 10:00:48 +09:00
Adrien Tétar
ea344fd18f doc: design changes cleanups
Conflicts:
	src/librustdoc/html/layout.rs
2014-04-12 21:10:26 +02:00
Daniel Fagnan
2d0962ad62 fixed issues
Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>
2014-04-12 21:07:25 +02:00
Daniel Fagnan
fbdde0e7ba Tweaked the design to be a lot cleaner.
Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>
2014-04-12 21:07:16 +02:00
Kang Seonghoon
34ece7ad71 rustdoc: Clean the initSearch routine up. 2014-04-10 15:21:59 -07:00
Alex Crichton
848f7b734e rustdoc: Implement cross-crate searching
A major discoverability issue with rustdoc is that all crates have their
documentation built in isolation, so it's difficult when looking at the
documentation for libstd to learn that there's a libcollections crate with a
HashMap in it.

This commit moves rustdoc a little closer to improving the multiple crate
experience. This unifies all search indexes for all crates into one file so all
pages share the same search index. This allows searching to work across crates
in the same documentation directory (as the standard distribution is currently
built).

This strategy involves updating a shared file amongst many rustdoc processes, so
I implemented a simple file locking API for handling synchronization for updates
to the shared files.

cc #12554
2014-03-18 13:51:29 -07:00
Huon Wilson
e1e4816e16 rustdoc: whitelist the headers that get a § on hover.
Previously the :hover rules were making the links to the traits/types in
something like

    impl<K: Hash + Eq, V> ... { ... }

be displayed with a trailing `§` when hovered over. This commit
restricts that behaviour to specific headers, i.e. those that are known
to be section headers (like those rendered in markdown doc-comments, and
the "Modules", "Functions" etc. headings).
2014-03-12 15:01:25 -07:00
Adrien Tétar
7979ae5367 doc: CSS fixes
- fixup and refactor highlighting code
- have a proper print stylesheet
2014-03-09 18:45:11 +01:00
Huon Wilson
7a70ec1ba6 rustdoc: hardcode each header as a link.
This avoids having to include JS in the guide/tutorial/manual pages just
to get the headers being links. The on-hover behaviour showing the
little section marker § is preserved, because that gives a useful hint
that the heading is a link.
2014-03-09 19:29:49 +11:00
Alex Crichton
31e7e676e1 rustdoc: Add anchors to section headers
This commit adds a appear-on-over link to all section headers to generated
documentation. Each header also receives an id now, even those generated through
markdown. The purpose of this is to provide easy to link to sections.

This modifies the default header markdown generation because the default id
added looks like "toc_NN" which is difficult to reconcile among all sections (by
default each section gets a "toc_0" id), and it's also not very descriptive of
where you're going.

This chooses to adopt the github-style anchors by taking the contents of the
title and hyphen-separating them (after lower casing).

Closes #12681
2014-03-05 22:51:56 -08:00
Adrien Tétar
fd09e91e00 rustdoc: tweak highlighting 2014-03-04 18:37:09 +01:00