40 #ifndef ANSLATORTRAY_HPP 41 #define ANSLATORTRAY_HPP 43 #define ANSLATORTRAY_VERSION 0.3.0 46 #if __cplusplus >= 201103L//supports C++11 and later 80 inline std::string
translate(
const std::string &englishText);
90 inline std::string
wordToPig(
const std::string &englishWord);
99 inline std::string
wordsToPig(
const std::string &englishWords);
109 inline std::string
attemptWordToEnglish(
const std::string &pig, std::uint64_t numBeginningConosoants = 1);
116 #if __cplusplus >= 201402L 120 #if __cplusplus >= 201703L 131 constexpr
char ALL[] {
"aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"};
138 constexpr
char Y[] {
"yY"};
151 inline std::string
changeWords(
const std::string &words, std::string wordChanger (
const std::string &word));
163 if (wordEndIndex == std::string::npos)
168 std::string actualWord = {englishWord.substr(wordStartIndex, wordEndIndex - wordStartIndex)};
173 if (std::all_of(std::begin(actualWord), std::end(actualWord), isupper))
174 std::transform(std::begin(pig), std::end(pig), std::begin(pig), toupper);
177 std::transform(std::begin(pig), std::end(pig), std::begin(pig), tolower);
179 if (std::isupper(actualWord[0]))
180 pig[0] = {
static_cast<char> (std::toupper(pig[0]))};
185 std::string result {englishWord.substr(0, wordStartIndex)};
187 result += {englishWord.substr(wordEndIndex)};
200 if (firstVowel != std::string::npos)
207 std::string result {englishWord.substr(firstVowel)};
208 result += englishWord.substr(0, firstVowel);
225 std::string noAy {pig.substr(0, pig.size() - 2)};
227 std::string withoutBeginningConosoants {noAy.substr(0, noAy.size() - numBeginningConosoants)};
228 std::string beginningConosoants {noAy.substr(noAy.size() - numBeginningConosoants)};
230 return beginningConosoants + withoutBeginningConosoants;
233 #if __cplusplus >= 201402L 271 std::string
changeWords(
const std::string &words, std::string wordChanger (
const std::string &word))
273 std::stringstream wordStream {words};
274 std::string pigWords {
""};
276 std::string word {
""};
278 while (wordStream >> word)
281 pigWords += {wordChanger(word)};
301 #error At the moment, Anslatortray only has support for C++11 and later. Please change your compiliation flags accordinaly 304 #endif //ANSLATORTRAY_HPP constexpr char ALL[]
Definition: anslatortray.hpp:131
std::string wordsToPig(const std::string &englishWords)
Uses wordToPig and changeWords to perform dumb translation from English to Pig Latin on every word it...
Definition: anslatortray.hpp:218
constexpr char VOWELS_WITH_Y[]
Definition: anslatortray.hpp:136
std::string wordToPig(const std::string &englishWord)
Translates a single English word to Pig Latin.
Definition: anslatortray.hpp:196
std::string changeWords(const std::string &words, std::string wordChanger(const std::string &word))
Helper function to perform an operation on all whitespace-seperated strings given to it...
Definition: anslatortray.hpp:271
constexpr char Y[]
Definition: anslatortray.hpp:138
std::string smartWordToPig(const std::string &englishWord)
Translates a single complex English word to Pig Latin. (more robust)
Definition: anslatortray.hpp:157
Namespace containing functions to translate from English to Pig Latin.
constexpr char VOWELS[]
Definition: anslatortray.hpp:134
constexpr char VOWEL_START_STYLE[]
Definition: anslatortray.hpp:112
constexpr char APOSTROPHE[]
Definition: anslatortray.hpp:142
std::string attemptWordToEnglish(const std::string &pig, std::uint64_t numBeginningConosoants=1)
Tries to translate a word in Pig Latin back to english.
Definition: anslatortray.hpp:223
std::string translate(const std::string &englishText)
Uses smartWordToPig and changeWords to perform translation from English to Pig Latin on every word it...
Definition: anslatortray.hpp:191