diff options
| -rw-r--r-- | sentence.cpp | 36 | ||||
| -rw-r--r-- | support.cpp | 12 | ||||
| m--------- | vendor/verbly | 0 |
3 files changed, 18 insertions, 30 deletions
| diff --git a/sentence.cpp b/sentence.cpp index d06ba10..be24a46 100644 --- a/sentence.cpp +++ b/sentence.cpp | |||
| @@ -226,8 +226,7 @@ verbly::token sentence::generateStandardNounPhrase( | |||
| 226 | bool definite) const | 226 | bool definite) const |
| 227 | { | 227 | { |
| 228 | verbly::token utter; | 228 | verbly::token utter; |
| 229 | verbly::word sounder = noun; | 229 | bool indefiniteArticle = false; |
| 230 | verbly::word descript; | ||
| 231 | 230 | ||
| 232 | /*if (std::bernoulli_distribution(1.0/8.0)(rng_)) | 231 | /*if (std::bernoulli_distribution(1.0/8.0)(rng_)) |
| 233 | { | 232 | { |
| @@ -252,20 +251,10 @@ verbly::token sentence::generateStandardNounPhrase( | |||
| 252 | { | 251 | { |
| 253 | utter << "your"; | 252 | utter << "your"; |
| 254 | } else if (!plural) { | 253 | } else if (!plural) { |
| 255 | if (sounder.getBaseForm().startsWithVowelSound()) | 254 | indefiniteArticle = true; |
| 256 | { | ||
| 257 | utter << "an"; | ||
| 258 | } else { | ||
| 259 | utter << "a"; | ||
| 260 | } | ||
| 261 | } | 255 | } |
| 262 | } | 256 | } |
| 263 | 257 | ||
| 264 | if (descript.isValid()) | ||
| 265 | { | ||
| 266 | utter << descript; | ||
| 267 | } | ||
| 268 | |||
| 269 | if (plural && noun.hasInflection(verbly::inflection::plural)) | 258 | if (plural && noun.hasInflection(verbly::inflection::plural)) |
| 270 | { | 259 | { |
| 271 | utter << verbly::token(noun, verbly::inflection::plural); | 260 | utter << verbly::token(noun, verbly::inflection::plural); |
| @@ -273,7 +262,12 @@ verbly::token sentence::generateStandardNounPhrase( | |||
| 273 | utter << noun; | 262 | utter << noun; |
| 274 | } | 263 | } |
| 275 | 264 | ||
| 276 | return utter; | 265 | if (indefiniteArticle) |
| 266 | { | ||
| 267 | return verbly::token::indefiniteArticle(utter); | ||
| 268 | } else { | ||
| 269 | return utter; | ||
| 270 | } | ||
| 277 | } | 271 | } |
| 278 | 272 | ||
| 279 | verbly::token sentence::generateClause( | 273 | verbly::token sentence::generateClause( |
| @@ -446,20 +440,15 @@ verbly::token sentence::generateClause( | |||
| 446 | utter << generateClause(sentence); | 440 | utter << generateClause(sentence); |
| 447 | } else if (part.nounHasSynrestr("quotation")) | 441 | } else if (part.nounHasSynrestr("quotation")) |
| 448 | { | 442 | { |
| 449 | verbly::token sentence(std::set<std::string>({"participle_phrase"})); | 443 | utter << verbly::token::quote("\"", "\"", |
| 450 | while (!sentence.isComplete()) | 444 | verbly::token(std::set<std::string>({"participle_phrase"}))); |
| 451 | { | ||
| 452 | visit(sentence); | ||
| 453 | } | ||
| 454 | |||
| 455 | utter << ("\"" + sentence.compile() + "\""); | ||
| 456 | } else { | 445 | } else { |
| 457 | if (part.nounHasSynrestr("genitive")) | 446 | if (part.nounHasSynrestr("genitive")) |
| 458 | { | 447 | { |
| 459 | verbly::word noun = generateStandardNoun("Passive", {"animate"}); | 448 | verbly::word noun = generateStandardNoun("Passive", {"animate"}); |
| 460 | verbly::token owner = generateStandardNounPhrase(noun, "Passive", false, true); | 449 | verbly::token owner = generateStandardNounPhrase(noun, "Passive", false, true); |
| 461 | std::string ownerStr = owner.compile() + "'s"; | 450 | |
| 462 | utter << ownerStr; | 451 | utter << verbly::token::punctuation("'s", owner); |
| 463 | } | 452 | } |
| 464 | 453 | ||
| 465 | verbly::word noun = generateStandardNoun(part.getNounRole(), part.getNounSelrestrs()); | 454 | verbly::word noun = generateStandardNoun(part.getNounRole(), part.getNounSelrestrs()); |
| @@ -665,4 +654,3 @@ void sentence::visit(verbly::token& it) const | |||
| 665 | } | 654 | } |
| 666 | } | 655 | } |
| 667 | } | 656 | } |
| 668 | |||
| diff --git a/support.cpp b/support.cpp index 8dc6c4e..3594eb6 100644 --- a/support.cpp +++ b/support.cpp | |||
| @@ -18,6 +18,12 @@ int main(int argc, char** argv) | |||
| 18 | std::string configfile(argv[1]); | 18 | std::string configfile(argv[1]); |
| 19 | YAML::Node config = YAML::LoadFile(configfile); | 19 | YAML::Node config = YAML::LoadFile(configfile); |
| 20 | 20 | ||
| 21 | std::random_device randomDevice; | ||
| 22 | std::mt19937 rng{randomDevice()}; | ||
| 23 | |||
| 24 | verbly::database database(config["verbly_datafile"].as<std::string>()); | ||
| 25 | sentence generator(database, rng); | ||
| 26 | |||
| 21 | twitter::auth auth; | 27 | twitter::auth auth; |
| 22 | auth.setConsumerKey(config["consumer_key"].as<std::string>()); | 28 | auth.setConsumerKey(config["consumer_key"].as<std::string>()); |
| 23 | auth.setConsumerSecret(config["consumer_secret"].as<std::string>()); | 29 | auth.setConsumerSecret(config["consumer_secret"].as<std::string>()); |
| @@ -26,12 +32,6 @@ int main(int argc, char** argv) | |||
| 26 | 32 | ||
| 27 | twitter::client client(auth); | 33 | twitter::client client(auth); |
| 28 | 34 | ||
| 29 | std::random_device randomDevice; | ||
| 30 | std::mt19937 rng{randomDevice()}; | ||
| 31 | |||
| 32 | verbly::database database(config["verbly_datafile"].as<std::string>()); | ||
| 33 | sentence generator(database, rng); | ||
| 34 | |||
| 35 | for (;;) | 35 | for (;;) |
| 36 | { | 36 | { |
| 37 | verbly::word adjective = database.words( | 37 | verbly::word adjective = database.words( |
| diff --git a/vendor/verbly b/vendor/verbly | |||
| Subproject 59eab842de02b2b2ba8bf53e2214b558457e635 | Subproject 350bfdb5ea9b4f7e50746c50a46d8032cbc5a10 | ||
