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();
  }