void PrefsCommand::operator()(const std::string& arguments) { std::istringstream argumentStream(arguments); std::string action; argumentStream >> action; if (!action.size()) { ShowUsage(); return; } if (action == "show") { std::string pref; argumentStream >> pref; AdblockPlus::JsValuePtr value = filterEngine.GetPref(pref); if (value->IsUndefined()) std::cout << "No such preference" << std::endl; else { if (value->IsString()) std::cout << "(string) "; else if (value->IsNumber()) std::cout << "(number) "; else if (value->IsBool()) std::cout << "(bool) "; else std::cout << "(unknown type) "; std::cout << value->AsString() << std::endl; } }
CommandArguments( const std::string& singleStringOfArguments ) : argumentsAsSingleString( singleStringOfArguments ) { //Assume that arguments are white-space delimited, so we can use a stringstream to parse std::istringstream argumentStream( singleStringOfArguments ); //This wonderful piece of code courtesy of Zunino on Stack Overflow: //http://stackoverflow.com/questions/236129/how-to-split-a-string-in-c std::copy( std::istream_iterator< std::string >( argumentStream ), std::istream_iterator< std::string >(), std::back_inserter< std::vector< std::string > >( argumentsAsStringArray ) ); }
void SubscriptionsCommand::operator()(const std::string& arguments) { std::istringstream argumentStream(arguments); std::string action; argumentStream >> action; if (!action.size()) { ShowSubscriptions(); return; } if (action == "add") { std::string url; argumentStream >> url; std::string title; std::getline(argumentStream, title); if (url.size()) AddSubscription(url, title); else ShowUsage(); }