| // Copyright 2016 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 "peridot/examples/todo_cpp/generator.h" |
| |
| #include <iostream> |
| |
| #include <src/lib/fxl/strings/concatenate.h> |
| |
| namespace todo { |
| Generator::Generator(std::default_random_engine* rng) : rng_(rng) { |
| actions_ = { |
| "acquire", "cancel", "consider", |
| "draw", "evaluate", "celebrate", |
| "find", "identify", "meet with", |
| "plan", "solve", "study", |
| "talk to", "think about", "write an article about", |
| "check out", "order", "write a spec for", |
| "order", "track down", "memorize", |
| "git checkout", |
| }; |
| action_distribution_ = |
| std::uniform_int_distribution<>(0, actions_.size() - 1); |
| |
| objects_ = { |
| "Christopher Columbus", |
| "PHP", |
| "a better way forward", |
| "a glass of wine", |
| "a good book on C++", |
| "a huge simulation we are all part of", |
| "a nice dinner out", |
| "a sheep", |
| "an AZERTY keyboard", |
| "hipster bars south of Pigalle", |
| "kittens", |
| "manganese", |
| "more cheese", |
| "some bugs", |
| "staticly-typed programming languages", |
| "the cryptographic primitives", |
| "the espresso machine", |
| "the law of gravity", |
| "the neighbor", |
| "the pyramids", |
| "the society", |
| "velocity", |
| }; |
| object_distribution_ = |
| std::uniform_int_distribution<>(0, objects_.size() - 1); |
| |
| auto tag_distribution = std::uniform_int_distribution<>(10'000, 99'999); |
| tag_ = |
| fxl::Concatenate({"[ ", std::to_string(tag_distribution(*rng_)), " ] "}); |
| std::cout << "Items generated by this instace are tagged with: " << tag_ |
| << std::endl; |
| } |
| Generator::~Generator() {} |
| |
| std::string Generator::Generate() { |
| return fxl::Concatenate({tag_, actions_[action_distribution_(*rng_)], " ", |
| objects_[object_distribution_(*rng_)]}); |
| } |
| |
| } // namespace todo |