diff --git a/CMakeLists.txt b/CMakeLists.txt index c9994cfde..5f2f7683e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,7 @@ set(FAKER_SOURCES src/modules/location/Location.cpp src/modules/location/LocationData.cpp src/modules/lorem/Lorem.cpp + src/modules/lorem/LoremData.cpp src/modules/medicine/Medicine.cpp src/modules/medicine/MedicineData.cpp src/modules/movie/Movie.cpp diff --git a/include/faker-cxx/Lorem.h b/include/faker-cxx/Lorem.h index 220c82c28..d7cd5d440 100644 --- a/include/faker-cxx/Lorem.h +++ b/include/faker-cxx/Lorem.h @@ -16,7 +16,7 @@ class Lorem * Lorem::word() // "temporibus" * @endcode */ - static std::string word(); + static std::string_view word(); /** * @brief Returns a random lorem words. diff --git a/src/modules/lorem/Lorem.cpp b/src/modules/lorem/Lorem.cpp index 183284c39..9daa2e809 100644 --- a/src/modules/lorem/Lorem.cpp +++ b/src/modules/lorem/Lorem.cpp @@ -2,23 +2,24 @@ #include "../../common/FormatHelper.h" #include "../../common/StringHelper.h" -#include "data/LoremWords.h" +#include "LoremData.h" #include "faker-cxx/Helper.h" namespace faker { -std::string Lorem::word() +std::string_view Lorem::word() { - return Helper::arrayElement(loremWords); + return Helper::arrayElement(loremWords); } std::string Lorem::words(unsigned numberOfWords) { std::vector words; + words.reserve(numberOfWords); for (unsigned i = 0; i < numberOfWords; i++) { - words.push_back(word()); + words.push_back(std::string(word())); } return StringHelper::join(words, " "); @@ -38,6 +39,7 @@ std::string Lorem::sentences(unsigned minNumberOfSentences, unsigned maxNumberOf const std::integral auto numberOfSentences = Number::integer(minNumberOfSentences, maxNumberOfSentences); std::vector sentences; + sentences.reserve(numberOfSentences); for (unsigned i = 0; i < numberOfSentences; i++) { @@ -50,10 +52,11 @@ std::string Lorem::sentences(unsigned minNumberOfSentences, unsigned maxNumberOf std::string Lorem::slug(unsigned int numberOfWords) { std::vector words; + words.reserve(numberOfWords); for (unsigned i = 0; i < numberOfWords; i++) { - words.push_back(word()); + words.push_back(std::string(word())); } return StringHelper::join(words, "-"); @@ -69,6 +72,7 @@ std::string Lorem::paragraphs(unsigned int minNumberOfParagraphs, unsigned int m const std::integral auto numberOfParagraphs = Number::integer(minNumberOfParagraphs, maxNumberOfParagraphs); std::vector paragraphs; + paragraphs.reserve(numberOfParagraphs); for (unsigned i = 0; i < numberOfParagraphs; i++) { diff --git a/src/modules/lorem/LoremData.cpp b/src/modules/lorem/LoremData.cpp new file mode 100644 index 000000000..3e8ac33a2 --- /dev/null +++ b/src/modules/lorem/LoremData.cpp @@ -0,0 +1,190 @@ +#include "LoremData.h" + +namespace faker +{ + + const std::array loremWords = { + "alias", + "consequatur", + "aut", + "perferendis", + "sit", + "voluptatem", + "accusantium", + "doloremque", + "aperiam", + "eaque", + "ipsa", + "quae", + "ab", + "illo", + "inventore", + "veritatis", + "et", + "quasi", + "architecto", + "beatae", + "vitae", + "dicta", + "sunt", + "explicabo", + "aspernatur", + "odit", + "fugit", + "sed", + "quia", + "consequuntur", + "magni", + "dolores", + "eos", + "qui", + "ratione", + "sequi", + "nesciunt", + "neque", + "dolorem", + "ipsum", + "dolor", + "amet", + "consectetur", + "adipisci", + "velit", + "non", + "numquam", + "eius", + "modi", + "tempora", + "incidunt", + "ut", + "labore", + "dolore", + "magnam", + "aliquam", + "quaerat", + "enim", + "ad", + "minima", + "veniam", + "quis", + "nostrum", + "exercitationem", + "ullam", + "corporis", + "nemo", + "ipsam", + "voluptas", + "suscipit", + "laboriosam", + "nisi", + "aliquid", + "ex", + "ea", + "commodi", + "autem", + "vel", + "eum", + "iure", + "reprehenderit", + "in", + "voluptate", + "esse", + "quam", + "nihil", + "molestiae", + "iusto", + "odio", + "dignissimos", + "ducimus", + "blanditiis", + "praesentium", + "laudantium", + "totam", + "rem", + "voluptatum", + "deleniti", + "atque", + "corrupti", + "quos", + "quas", + "molestias", + "excepturi", + "sint", + "occaecati", + "cupiditate", + "provident", + "perspiciatis", + "unde", + "omnis", + "iste", + "natus", + "error", + "similique", + "culpa", + "officia", + "deserunt", + "mollitia", + "animi", + "id", + "est", + "laborum", + "dolorum", + "fuga", + "harum", + "quidem", + "rerum", + "facilis", + "expedita", + "distinctio", + "nam", + "libero", + "tempore", + "cum", + "soluta", + "nobis", + "eligendi", + "optio", + "cumque", + "impedit", + "quo", + "porro", + "quisquam", + "minus", + "quod", + "maxime", + "placeat", + "facere", + "possimus", + "assumenda", + "repellendus", + "temporibus", + "quibusdam", + "illum", + "fugiat", + "nulla", + "pariatur", + "at", + "vero", + "accusamus", + "officiis", + "debitis", + "necessitatibus", + "saepe", + "eveniet", + "voluptates", + "repudiandae", + "recusandae", + "itaque", + "earum", + "hic", + "tenetur", + "a", + "sapiente", + "delectus", + "reiciendis", + "voluptatibus", + "maiores", + "doloribus", + "asperiores", + "repellat", + }; +} \ No newline at end of file diff --git a/src/modules/lorem/LoremData.h b/src/modules/lorem/LoremData.h new file mode 100644 index 000000000..db8cb8899 --- /dev/null +++ b/src/modules/lorem/LoremData.h @@ -0,0 +1,9 @@ +#pragma once +#include +#include + +namespace faker +{ + extern const std::array loremWords; +} + diff --git a/src/modules/lorem/data/LoremWords.h b/src/modules/lorem/data/LoremWords.h deleted file mode 100644 index 27f73bb41..000000000 --- a/src/modules/lorem/data/LoremWords.h +++ /dev/null @@ -1,192 +0,0 @@ -#pragma once - -#include -#include - -namespace faker -{ -const std::vector loremWords = { - "alias", - "consequatur", - "aut", - "perferendis", - "sit", - "voluptatem", - "accusantium", - "doloremque", - "aperiam", - "eaque", - "ipsa", - "quae", - "ab", - "illo", - "inventore", - "veritatis", - "et", - "quasi", - "architecto", - "beatae", - "vitae", - "dicta", - "sunt", - "explicabo", - "aspernatur", - "odit", - "fugit", - "sed", - "quia", - "consequuntur", - "magni", - "dolores", - "eos", - "qui", - "ratione", - "sequi", - "nesciunt", - "neque", - "dolorem", - "ipsum", - "dolor", - "amet", - "consectetur", - "adipisci", - "velit", - "non", - "numquam", - "eius", - "modi", - "tempora", - "incidunt", - "ut", - "labore", - "dolore", - "magnam", - "aliquam", - "quaerat", - "enim", - "ad", - "minima", - "veniam", - "quis", - "nostrum", - "exercitationem", - "ullam", - "corporis", - "nemo", - "ipsam", - "voluptas", - "suscipit", - "laboriosam", - "nisi", - "aliquid", - "ex", - "ea", - "commodi", - "autem", - "vel", - "eum", - "iure", - "reprehenderit", - "in", - "voluptate", - "esse", - "quam", - "nihil", - "molestiae", - "iusto", - "odio", - "dignissimos", - "ducimus", - "blanditiis", - "praesentium", - "laudantium", - "totam", - "rem", - "voluptatum", - "deleniti", - "atque", - "corrupti", - "quos", - "quas", - "molestias", - "excepturi", - "sint", - "occaecati", - "cupiditate", - "provident", - "perspiciatis", - "unde", - "omnis", - "iste", - "natus", - "error", - "similique", - "culpa", - "officia", - "deserunt", - "mollitia", - "animi", - "id", - "est", - "laborum", - "dolorum", - "fuga", - "harum", - "quidem", - "rerum", - "facilis", - "expedita", - "distinctio", - "nam", - "libero", - "tempore", - "cum", - "soluta", - "nobis", - "eligendi", - "optio", - "cumque", - "impedit", - "quo", - "porro", - "quisquam", - "minus", - "quod", - "maxime", - "placeat", - "facere", - "possimus", - "assumenda", - "repellendus", - "temporibus", - "quibusdam", - "illum", - "fugiat", - "nulla", - "pariatur", - "at", - "vero", - "accusamus", - "officiis", - "debitis", - "necessitatibus", - "saepe", - "eveniet", - "voluptates", - "repudiandae", - "recusandae", - "itaque", - "earum", - "hic", - "tenetur", - "a", - "sapiente", - "delectus", - "reiciendis", - "voluptatibus", - "maiores", - "doloribus", - "asperiores", - "repellat", -}; -} diff --git a/tests/modules/lorem/LoremTest.cpp b/tests/modules/lorem/LoremTest.cpp index 054a4d44e..67fec4264 100644 --- a/tests/modules/lorem/LoremTest.cpp +++ b/tests/modules/lorem/LoremTest.cpp @@ -20,7 +20,7 @@ TEST_F(LoremTest, shouldGenerateWord) const auto generatedWord = Lorem::word(); ASSERT_TRUE( - std::ranges::any_of(loremWords, [generatedWord](const std::string& word) { return word == generatedWord; })); + std::ranges::any_of(loremWords, [generatedWord](const std::string_view& word) { return word == generatedWord; })); } TEST_F(LoremTest, shouldGenerateWords)