73 Commits (4d7c7d4eab803d8e0cfacc83ffba5ca359f2c002)
 

Author SHA1 Message Date
Robin Krahl 4d7c7d4eab
Release v0.1.2
This patch release adds basic logging output and a new `-e`/`--examples`
option to extract only the examples from the documentation.  It also
fixes a bug when displaying the documentation for a function.
4 years ago
Robin Krahl 45a1a3d1f5
Add top-level heading to changelog 4 years ago
Robin Krahl e9aafd4650
Add more log messages
As I noticed when trying to debug an issue with a very large HTML file,
we still need more log messages that indicate what is currently going on
in rusty-man.  This patch adds some more log messages.
4 years ago
Robin Krahl 34857816e1
Add -e/--example option to only show examples
As requested here [0], this patch adds a new -e/--example option that
extracts the examples from the documentation string instead of printing
the full documentation for an item.  Syntax highlighting will be added
in the future.

[0] https://old.reddit.com/r/rust/comments/hx16j0/rustyman_a_commandline_viewer_for_rustdoc/fz3utjf/
4 years ago
Robin Krahl 1a242e5474
Fix definition selector for functions
Previosuly, we always used the selector ".docblock.type-decl" to select
the definition for an item.  But this did not work for functions.
Therefore we change the selector to "pre.fn" for functions.
4 years ago
Robin Krahl 221c345e1c
Add changelog entry for logging functionality
We introduced basic logging in commit e69e4af but didn’t update the
changelog.  This patch adds the missing changelog entry.
4 years ago
Robin Krahl c00a04b179
Fix v0.1.1 release date in changelog 4 years ago
Robin Krahl 1adeafe909
Add vim integration to readme
This patch adds information about calling rusty-man from vim to the
readme.
4 years ago
Robin Krahl e69e4af31c
Add basic logging with env_logger
This patch adds some basic info log messages to make it easier to debug
incompatible rustdoc output.  To show the messages, run rusty-man with
the environment variable RUST_LOG=info.
4 years ago
Robin Krahl af1b81dd57
Release v0.1.1
This patch release fixes some minor issues with the documentation
displayed on crates.io.
4 years ago
Robin Krahl 54dd0d9ee9
Add homepage and repository links to Cargo.toml 4 years ago
Robin Krahl 411b1834b1
Use absolute links in readme
This fixes missing links on crates.io.
4 years ago
Robin Krahl 0c22a6d393
Release v0.1.0 4 years ago
Robin Krahl ae51e80d46
Update keywords and excludes in Cargo.toml 4 years ago
Robin Krahl 0a1dd0838e
Update installation instructions
This patch adds information about installing from crates.io and suggests
checking out the latest release when installing from source.
4 years ago
Robin Krahl afe3b02a34
Update main and CLI doc comments
This patch updates the main module doc comment and the documentation
printed with rusty-man --help.
4 years ago
Robin Krahl 41dd007390
Use crossterm instead of termion
With this patch, we replace the termion dependency with crossterm.  This
should make it possible to compile and run rusty-man on other platforms
than Unix.
4 years ago
Robin Krahl 0d75176f59
Update readme
This patch updates the readme with better usage examples and with the
documentation for rusty-man itself.

Signed-off-by: Robin Krahl <robin.krahl@ireas.org>
4 years ago
Robin Krahl 0efe00e05e
Mention default sources in doc comment 4 years ago
Robin Krahl ec6be9fbb1
Replace - with _ in crate lookup
rustdoc normalizes the name of a crate by replacing hyphens with
underscores.  With this patch, we also perform this normalization when
looking up a crate.
4 years ago
Robin Krahl fc7d2c7ee9
Format text output look like man
With this patch, we change our rich and plain viewer implementations to
format their output similar to the output of man.  This means:
- Adding a title with the current crate, documentation item and
  “rusty-man”
- Printing headings at indent levels 0, 3, 6 and printing content with
  indent 6, 12
- Printing headings bold and uppercase (level 1) or bold (levels 2, 3)
4 years ago
Robin Krahl 162cae5bee
Change name for ItemType::Impl to Implementation(s) 4 years ago
Robin Krahl f709a0d46d
Only print headings with level <= 3 bold
Previously, all headings were printed with a bold font.  With this
change, we limit this to headings of level 1 to 3 to make the output
more readable.
4 years ago
Robin Krahl f4b0cba641
List implementations for all elements
With this patch, we list trait implementations, auto trait
implementations and blanket implementations, where applicable.
4 years ago
Robin Krahl 05cfb47a47
Refactor Doc creation in parser into MemberDocs
This patch introduces the helper struct MemberDocs that wraps a Vec<Doc>
that allows us to simplify the parser code.  The MemberDocs struct takes
care of creating Doc instances using the names, definitions and
descriptions of member items.
4 years ago
Robin Krahl 8df4df57a5
Use html5ever::local_name in parser.rs 4 years ago
Robin Krahl 87e4066579
List definitions for enum variants 4 years ago
Robin Krahl eb0f85d174
List fields for structs 4 years ago
Robin Krahl adb6cc6ed9
List associated types and methods for traits
With this patch, we list the associated types and the provided and
required methods in the trait documentation.
4 years ago
Robin Krahl 853f5a8120
List methods and deref methods
This patch adds support for methods and deref methods.
4 years ago
Robin Krahl 8bfb7393e5
List variants for enums
This patch updates parse_item_doc to look for variants.
4 years ago
Robin Krahl 958019449d
Add MemberGroup struct for groups of members items
Previosuly, we stored the members as a vector of vectors, group by a
string -- their title.  This was very hard to read and also too simple:
For example, there can be multiple blocks of methods in the
documentation for a struct.  Therefore we introduce a new type,
MemberGroup, that represents a group of member items with an optional
title.
4 years ago
Robin Krahl f08490eeff
Display member type in viewer::text::TextViewer
Previously, we only displayed the member name when viewing the
documentation of a member.  With this patch, we use the ItemType enum to
also print the type of the member.

For consistency, we remove the title field from doc::Doc that was
previously used for the titles of modules and items and use the same
title as for members.  While we lose the links to the parent items,
these were not particularly helpful anyway.  If we want to, we could
also generate them from the item name.
4 years ago
Robin Krahl 627830dcbe
Store ItemType in doc::Doc
This allows us to display more information for a member and change the
documentation format depending on the type.
4 years ago
Robin Krahl e410e2e19f
Store group ID and name in item type
Previously, we maintained a list of headings and HTML element IDs for
item types in parser.rs.  As we now have a complete ItemType enum, we
can use ItemType methods to provide this data.
4 years ago
Robin Krahl 9f0497932f
Use only direct childs of #main for description
Some elements, for example std::io::ErrorKind, have nested docblocks in
their type-decl docblock.  This would lead to a wrong description
because we pick the first non-type-decl docblock for the description.

With this patch, we require that the description docblock is a direct
child of #main to fix this issue.
4 years ago
Robin Krahl f799d860ca
Import item types from librustdoc
Previously, our ItemType enum only had three values: Module, Item and
Member.  With this patch we import the ItemType variants from librustdoc
(see html/item_type.rs) for better compatibility and easier parsing.
4 years ago
Robin Krahl bb3b361d02
Improve rendering of module members
This patch improves the rendering of module members:  Instead of the
full name of the member, we now display only the last part.  This also
fixes a bug where we would use the HTML instead of the text content for
the member name.

And we also display the description next to the member name.  As we
cannot extract the content of the description element (kuchiki nodes do
not have an inner_html method), we use the text representation instead.
Otherwise we would get formatting problems when rendering the
documentation.
4 years ago
Robin Krahl a97c9e5a0f
Refactor viewer module
This patch refactors the viewer module:
- The `text` option is renamed to `plain`.
- The TextViewer and RichViewer structs are replaced by a new TextViewer
  struct that handles the basic documentation structure and uses a
  Printer implementation for formatting.
- The new structs PlainTextRenderer and RichTextRenderer implement the
  Printer trait.
- The Printer trait and the TextViewer struct are placed in the
  viewer::text module.  The Printer implementations are placed in the
  plain and rich submodules.

This reduces code duplication and makes it easier to render more complex
documentation items.
4 years ago
Robin Krahl 06851357a2
Extract parse_module_doc from parse_item_doc
Previously, we assumed that we can parse the documentation for a module
and an item (struct, trrait, …) with the same procedure.  This approach
was too simple.  For example, functions in a module are listed in a
table while the methods of a struct are listed in divs grouped by
subheadings.

Therefore, we extract the parsing of module documentation into a new
function parse_module_doc.
4 years ago
Robin Krahl 60cb034c5a
Store item type for items
Previously, we assumed that we only have to differentiate between items
(= elements with their own documentation file) and members (= elements
described in the documentation file of their parent).  But this model
was too simple.  For example, there are big differences in the structure
of a module and a struct documentation file.

Therefore we introduce a new enum, ItemType, that stores the type of an
item.  This allows us to drop the member field of the Item struct and to
add the name of the member to the full name of the item.
4 years ago
Robin Krahl 9613235ccc
Store full name in doc::Doc
This patch adds a new field, name, to the doc::Doc struct for
documentation items.  It stores the fully qualified name of the
documented element.  Since we no longer require a title to identify an
item, we make the title optional.  If it is not set, we print the item
name instead.
4 years ago
Robin Krahl 94dff39c8a Introduce Name and Fqn types for names
Previosuly, we used strings to store item names.  Sometimes, these
strings would refer to full paths (e. g. kuchiki::NodeDataRef::as_node),
sometimes to local paths (e. g. NodeDataRef::as_node) and sometimes only
to the last item (e. g. as_node).

With this patch, we add two new types:  doc::Name is a name without a
semantic meaning, so it could be any of the cases mentioned above.
doc::Fqn is a wrapper around doc::Name that stores fully-qualifier
names, i. e. names where the first element is the crate.
4 years ago
Robin Krahl 58929bc98b
Use pattern search-index*.js for index files
Previously, we always tried to load the search index from the
search-index.js file.  But rustdoc may add a suffix to the file name, so
with withs patch, we use the first file that matches the pattern
search-index*.json.  This makes it possible to use rusty-man with the
documentation installed by rustup.
4 years ago
Robin Krahl d0c73d2523
List members in module documentation
This patch adds support for listing the module members on its
documentation page.  This is quite easy as the items are displayed in a
single table per item type.
4 years ago
Robin Krahl 3d4fac0d5c Skip associated types in search index
When searching for a keyword, we typically don’t want to match an
associated type.  With this patch, we skip associated types when
searching items in the search index.
4 years ago
Robin Krahl 1b8a2c23f6 Fix wrong command in example usage 4 years ago
Robin Krahl baef1a06b0
Extend contributing guide
This patch extends the CONTRIBUTING.md file with more information on
possible tasks, the test suite and the code checks.
4 years ago
Robin Krahl a6048238b1
Add doc comment for main.rs
This patch adds a doc comment to the main.rs file that describes the
structure of rusty-man.
4 years ago
Robin Krahl 1128919f1f
Add installation and contributing information
This patch extends the README.md file and adds the INSTALL.md and
CONTRIBUTING.md files with more detailed information.
4 years ago