Commit Graph

25 Commits

Author SHA1 Message Date
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
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
Adrien Tétar
5f0a426f65 rustdoc: escape shown input to prevent injection 2014-05-02 20:41:09 +02: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
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
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
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
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
Daniel Fagnan
c08cfa1872 Fixed invalid JavaScript
Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>
2014-02-22 18:16:53 -07:00
Corey Richardson
c9713ffe81 rustdoc: web: don't reset the search bar 2014-02-21 02:15:08 -05:00
Daniel MacDougall
b869f36e78 Make docs search results URL-addressable
This change adds two improvements to docs searching functionality.

First, search results will immediately be displayed when a ?search=searchterm
query string parameter is provided to any docs url.

Second, search results are now inserted into the browser history, allowing for
easier navigation between search results and docs pages.
2014-01-23 14:04:50 -08:00
b1nd
431e2bb923 Removed redundant code, improve performance
closes #10535
2014-01-15 12:09:50 +11:00
b1nd
9a45c9d7c6 Completed patch searching for rust docs
Made temporary changes to include multiple keywords in rustdoc search

Implemented search based on multiple keywords

Added some commenting and house cleaning

Added path searching to rustdoc
2014-01-14 19:26:43 +11:00
Jordi Boggiano
1501d65112 Highlight line numbers of the lines referred to in the url hash 2013-10-02 12:32:16 -07:00
Alex Crichton
cc1791584f rustdoc: Detect repeated keys and fix width
When a key is pressed and held, this now does the OS-style repeating after a bit
of a pause. Also fixes the width of search results to be correct (was changed
beforehand and didn't catch this).
2013-09-30 20:31:19 -07:00
Alex Crichton
b93678eca5 rustdoc: Fix search for something on the same page 2013-09-27 11:06:07 -07:00
Alex Crichton
c5e03bec4d rustdoc: Don't emit redirect pages for variants/fields
It's just a waste of disk space and it can be done just as well in JS.
2013-09-27 10:40:41 -07:00
Alex Crichton
7b24efd6f3 rustdoc: Out with the old, in with the new
Removes old rustdoc, moves rustdoc_ng into its place instead (plus drops the _ng
suffix). Also shreds all reference to rustdoc_ng from the Makefile rules.
2013-09-22 09:51:15 -07:00