28 Commits (4260aab85aa5e2d22058d5f91585072524172535)

Author SHA1 Message Date
Robin Krahl ecc05ddc7d
Update html2text dependency to v0.2.1
This patch updates the html2text dependency to v0.2.1.  This release
fixed the handling of preformatted blocks, allowing us to add syntax
highlighting for code blocks in the next patch.
4 years ago
Robin Krahl 9458b280d4
Use text-style crate to format text
This patch replaces the direct text formatting with ansi_term with the
text-style crate.  This also allows us to directly convert the syntect
annotations to styled strings.
4 years ago
Robin Krahl ecb3d40c59
Use ansi_term, atty, terminal_size
This patch replaces the crossterm dependency with ansi_term, atty and
terminal_size.  This allows us for an easier integration with the
text_style crate in an upcoming patch, and it reduces the total number
of dependencies from 166 to 160.

This means that we drop support for non-ANSI terminals, but as this only
affects old versions of cmd.exe/PowerShell, we don’t care about it.
4 years ago
Robin Krahl 225e19a024
Use merge to merge arguments and configuration
This patch adds the merge dependency to automatically merge the
command-line arguments and the settings from the configuration file.
This means that we no longer have to manually maintain the Args::merge
function.
4 years ago
Robin Krahl 642bec6687
Release v0.3.0
This minor release adds support for Rust 1.46.0 and significantly
improves the test suite.
4 years ago
Robin Krahl 628377c83b
Refactor test suite to check multiple versions
This patch refactors the test suite:
- Instead of always generating the documentation with the available
  rustdoc version, we now store generated documentation for all
  supported rustdoc versions in the test/html directory.
- Instead of using one snapshot per test case, we now use one snapshot
  per test case and rustdoc version.
4 years ago
Robin Krahl e74ef86ebe
Move ItemType u8 representations into index module
Previosuly, we used the u8 values for the ItemType variants used in the
search index as the discriminant.  But as the ID used in the search
index is an implementation detail of the index parser, this patch moves
the mapping to the index module.
4 years ago
Robin Krahl 76845785ee
Release v0.2.0
This minor release adds support for syntax highlighting of code snippets
and for configuration files.
4 years ago
Robin Krahl 1a518d7509
Add integration tests
This patch adds an integration test suite using the insta crate for
snapshot testing.  The test suite is tested for all supported Rust
versions and should always succeed for the MSRV (currently 1.40.0) and
the current stable Rust version.

However there are some minor changes in the configuration format between
Rust versions, so tests that don’t work on all supported Rust versions
are marked with the ignore attribute.  But even the ignored tests should
work on the stable Rust release.
4 years ago
Robin Krahl e5ee4df73b
Add support for configuration files
With this patch, we load defaults for the command-line arguments from
the configuration file located in the user configuration directory
according to the XDG Base Directory Specification.
4 years ago
Robin Krahl dc7b5b1eca
Add syntax highlighting for code snippets
This patch uses syntect to add syntax highlighting for code snippets in
the rich text output.  Currently, this only applies to the examples
printed with the -e/--examples option.
4 years ago
Robin Krahl 44028e228a
Release v0.1.3
This patch release adds support for documentation generated with Rust
1.45.0 and fixes some minor bugs in the documentation parser.  It also
adds the documentation downloaded using rustup to the default sources.
4 years ago
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 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 ae51e80d46
Update keywords and excludes in Cargo.toml 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 8bfb7393e5
List variants for enums
This patch updates parse_item_doc to look for variants.
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 61fdf31c0a
Read search index from search-index.js
With this patch, we read the search index generated by rustdoc.  It
allows us to suggest matching items if we don’t find an exact match.
4 years ago
Robin Krahl 646b36708b
Replace “interface” with “viewer” in description
Previously, we called rusty-man a command-line interface for rustdoc
documentation, but “viewer” is a more appropriate term.
4 years ago
Robin Krahl 02b3116ecd Adapt text output to terminal size
Previously, we wrapped all lines at 100 characters and just printed to
stdout.  With this patch, we use the pager crate to spawn a pager
(typically less) before printing the text.  Also, we try to use the
terminal size to determine the line length:  The default line length is
still 100 characters but can be reduced to fit the terminal.
4 years ago
Robin Krahl 96df0924ba Add rich viewer
This patch adds a new viewer with rich text output using html2text’s
from_read_rich function.  We then use termion to format the generated
rich text.
4 years ago
Robin Krahl 5ce0365c7f Add --viewer option and plain text viewer
This patch adds a new --viewer command line option that lets the user
select a viewer that displays the documentation.  It also adds a default
viewer implementation that uses html2text to generate plain text from
the HTML documentation.

html2text requires the ptr_cast feature and we use the Option::as_deref
method in the viewer implementation, so we have to update the minimum
supported Rust version to 1.40.
4 years ago
Robin Krahl 6993df9cb6 Extract documentation from HTML files
This patch adds the parser module that uses kuchiki and html5ever to
parse the HTML documentation.

As kuchiki requires std::mem::MaybeUninit, we have to bump the minimum
supported Rust version to 1.36.
4 years ago
Robin Krahl 11b6d27b8a Implement command-line interface using structopt
This patch adds the structopt dependency and implements a simple
command-line interface for rusty-man.
4 years ago
Robin Krahl 3967de8bd2 Initial project scaffolding
This patch contains the initial project scaffolding, based on the files
generated by cargo new.
4 years ago