| // Copyright 2022 The Fuchsia Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "echo_component.h" | 
 | // [START greeting] | 
 | #include <numeric> | 
 |  | 
 | namespace echo { | 
 |  | 
 | static std::string join(std::vector<std::string> &input_list, | 
 |                         const std::string &separator) { | 
 |   return std::accumulate( | 
 |       std::begin(input_list), std::end(input_list), std::string(""), | 
 |       [&separator](std::string current, std::string &next) { | 
 |         return current.empty() ? next : (std::move(current) + separator + next); | 
 |       }); | 
 | } | 
 |  | 
 | // Return a proper greeting for the list | 
 | std::string greeting(std::vector<std::string> &names) { | 
 |   // Join the list of names based on length | 
 |   auto number_of_names = names.size(); | 
 |   switch (number_of_names) { | 
 |   case 0: | 
 |     return "Nobody!"; | 
 |   case 1: | 
 |     return join(names, ""); | 
 |   case 2: | 
 |     return join(names, " and "); | 
 |   default: | 
 |     return join(names, ", "); | 
 |   } | 
 | } | 
 |  | 
 | } // namespace echo | 
 | // [END greeting] |