#include "beer_song.h" #include #include namespace beer { using namespace std; namespace { string count_bottles(int count) { if (0 == count) return "no more bottles"; if (1 == count) return "1 bottle"; return to_string(count) + " bottles"; }; void capitalize_first(string &str) { assert(!str.empty()); str.front() = toupper(str.front()); }; } string verse(int index) { string result = count_bottles(index) + " of beer on the wall, " + count_bottles(index) + " of beer.\n" + (index ? string("Take ") + (index == 1 ? "it" : "one") + " down and pass it around, " : string("Go to the store and buy some more, ")) + count_bottles(index ? index - 1 : 99) + " of beer on the wall.\n"; capitalize_first(result); return result; } string sing(int from_index, int to_index) { string result; assert(from_index >= to_index); for (int i = from_index; i >= to_index; --i) { result += (i == from_index ? "" : "\n"); result += verse(i); } return result; } }