|
|
|
@ -1,4 +1,36 @@
|
|
|
|
|
//! phetch is a terminal Gopher client designed to help you quickly
|
|
|
|
|
//! navigate the Gophersphere securely. It includes support for
|
|
|
|
|
//! browsing via TLS or Tor proxy, but can also be used the old
|
|
|
|
|
//! fashioned way. The menu-based interface is driven entirely by your
|
|
|
|
|
//! keyboard, and emphasis has been put on swiftness of navigation.
|
|
|
|
|
//! Both "jump to link" and incremental search options are available.
|
|
|
|
|
//!
|
|
|
|
|
//! We don't use any ncurses-style library for drawing but instead do
|
|
|
|
|
//! it manually, mainly in `UI`. This is the application class that
|
|
|
|
|
//! prints to the screen and manages the loaded Gopher "views".
|
|
|
|
|
//! Meanwhile, the bulk of the menu system, responding to user
|
|
|
|
|
//! input, and rendering of the colored interface itself takes place
|
|
|
|
|
//! in the `Menu` view. The two work hand-in-hand.
|
|
|
|
|
//!
|
|
|
|
|
//! This crate includes its own Gopher parsing and fetching library,
|
|
|
|
|
//! which may eventually get extracted. It seems that most existing
|
|
|
|
|
//! Gopher libraries in Rust allow you to parse menu lines
|
|
|
|
|
//! individually into items, but phetch needs to know about the links'
|
|
|
|
|
//! relationships to each other for its navigation/numbering/cursor
|
|
|
|
|
//! system to work. So phetch parses all the lines in a Menu as a
|
|
|
|
|
//! whole and knows which link is which.
|
|
|
|
|
//!
|
|
|
|
|
//! Finally, a note on the code itself: this is not my first Rust
|
|
|
|
|
//! program, but you probably wouldn't know that by looking at it!
|
|
|
|
|
//! Suggestions and improvements are more than welcome.
|
|
|
|
|
//!
|
|
|
|
|
|
|
|
|
|
#![allow(unused_must_use)]
|
|
|
|
|
#![warn(absolute_paths_not_starting_with_crate)]
|
|
|
|
|
#![warn(explicit_outlives_requirements)]
|
|
|
|
|
#![warn(unreachable_pub)]
|
|
|
|
|
#![warn(deprecated_in_future)]
|
|
|
|
|
#![warn(missing_docs)]
|
|
|
|
|
#![allow(clippy::while_let_on_iterator)]
|
|
|
|
|
|
|
|
|
|
#[macro_use]
|
|
|
|
|