From d4f78be6f231b5289eb1c658d1f67006b7d884dd Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Mon, 13 Apr 2026 04:50:49 +0800 Subject: feat: move URL formatting to Browser class and update documentation --- src/core/browser.cc | 50 +++++++++++++++++++++++++------------------------- src/main.cc | 17 +++++++---------- 2 files changed, 32 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/core/browser.cc b/src/core/browser.cc index 571783a..c4dbb08 100644 --- a/src/core/browser.cc +++ b/src/core/browser.cc @@ -412,30 +412,6 @@ void draw_view( const tui::Terminal& terminal, std::cout.flush(); } -std::string format_url( std::string input ) -{ - if ( input.empty() ) { - return input; - } - - if ( input.starts_with( "http://" ) || input.starts_with( "https://" ) ) { - return input; - } - - const bool is_domain = input.contains( '.' ) && !input.contains( ' ' ); - if ( is_domain ) { - input.insert( 0, "https://" ); - return input; - } - - for ( char& ch : input ) { - if ( ch == ' ' ) { - ch = '+'; - } - } - return "https://lite.duckduckgo.com/lite/?q=" + input; -} - std::string get_url_input( const tui::Terminal& terminal ) { auto [width, height] = terminal.get_size(); @@ -468,7 +444,7 @@ std::string get_url_input( const tui::Terminal& terminal ) } terminal.show_cursor( false ); - return format_url( std::move( input ) ); + return Browser::format_url( std::move( input ) ); } // std::string get_link_input( const tui::Terminal& terminal ) @@ -1003,6 +979,30 @@ std::vector wrap_lines( const std::vector& original_li } // namespace +std::string Browser::format_url( std::string input ) +{ + if ( input.empty() ) { + return input; + } + + if ( input.starts_with( "http://" ) || input.starts_with( "https://" ) ) { + return input; + } + + const bool is_domain = input.contains( '.' ) && !input.contains( ' ' ); + if ( is_domain ) { + input.insert( 0, "https://" ); + return input; + } + + for ( char& ch : input ) { + if ( ch == ' ' ) { + ch = '+'; + } + } + return "https://lite.duckduckgo.com/lite/?q=" + input; +} + std::string Browser::get_configured_homepage() { std::ifstream file( get_config_path( "config.txt" ) ); diff --git a/src/main.cc b/src/main.cc index 562861a..d27ab55 100644 --- a/src/main.cc +++ b/src/main.cc @@ -16,7 +16,6 @@ * along with this program. If not, see . */ -#include #include #include #include @@ -42,13 +41,6 @@ int main( int argc, char* argv[] ) ricochet::core::print_license_notice(); - std::string start_url; - if ( args.size() < 2 ) { - start_url = ricochet::core::Browser::get_configured_homepage(); - } else { - start_url = std::string( args[1] ); - } - if ( args.size() >= 2 && args[1] == "show" ) { if ( args.size() >= 3 && args[2] == "w" ) { ricochet::core::show_warranty(); @@ -63,10 +55,15 @@ int main( int argc, char* argv[] ) return 1; } - if ( !start_url.starts_with( "http://" ) && !start_url.starts_with( "https://" ) ) { - start_url.insert( 0, "https://" ); + std::string start_url; + if ( args.size() < 2 ) { + start_url = ricochet::core::Browser::get_configured_homepage(); + } else { + start_url = std::string( args[1] ); } + start_url = ricochet::core::Browser::format_url( std::move( start_url ) ); + try { return ricochet::core::Browser::run( start_url ); } catch ( const std::exception& e ) { -- cgit v1.2.3