diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2017-11-08 11:37:25 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2017-11-08 11:37:25 -0500 |
commit | b92db337bf7cbe2ea0564be6c63c336d2bcd4567 (patch) | |
tree | 9553dbb7f75984798848a1988934cb40057babdc /lib/token.cpp | |
parent | c29f3645c9298dcb203f7414986604b89843e9ef (diff) | |
download | verbly-b92db337bf7cbe2ea0564be6c63c336d2bcd4567.tar.gz verbly-b92db337bf7cbe2ea0564be6c63c336d2bcd4567.tar.bz2 verbly-b92db337bf7cbe2ea0564be6c63c336d2bcd4567.zip |
Added quote token
This token wraps the inner token in two provided delimiters.
Diffstat (limited to 'lib/token.cpp')
-rw-r--r-- | lib/token.cpp | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/lib/token.cpp b/lib/token.cpp index 88cc4da..945be5e 100644 --- a/lib/token.cpp +++ b/lib/token.cpp | |||
@@ -51,6 +51,7 @@ namespace verbly { | |||
51 | { | 51 | { |
52 | transform_.type_ = other.transform_.type_; | 52 | transform_.type_ = other.transform_.type_; |
53 | new(&transform_.strParam_) std::string(other.transform_.strParam_); | 53 | new(&transform_.strParam_) std::string(other.transform_.strParam_); |
54 | new(&transform_.strParam2_) std::string(other.transform_.strParam2_); | ||
54 | transform_.casingParam_ = other.transform_.casingParam_; | 55 | transform_.casingParam_ = other.transform_.casingParam_; |
55 | new(&transform_.inner_) std::unique_ptr<token>(new token(*other.transform_.inner_)); | 56 | new(&transform_.inner_) std::unique_ptr<token>(new token(*other.transform_.inner_)); |
56 | 57 | ||
@@ -86,6 +87,7 @@ namespace verbly { | |||
86 | std::list<token> tempUtterance; | 87 | std::list<token> tempUtterance; |
87 | transform_type tempTransformType; | 88 | transform_type tempTransformType; |
88 | std::string tempTransformStrParam; | 89 | std::string tempTransformStrParam; |
90 | std::string tempTransformStrParam2; | ||
89 | casing tempTransformCasingParam; | 91 | casing tempTransformCasingParam; |
90 | std::unique_ptr<token> tempTransformInner; | 92 | std::unique_ptr<token> tempTransformInner; |
91 | 93 | ||
@@ -131,6 +133,7 @@ namespace verbly { | |||
131 | { | 133 | { |
132 | tempTransformType = first.transform_.type_; | 134 | tempTransformType = first.transform_.type_; |
133 | tempTransformStrParam = std::move(first.transform_.strParam_); | 135 | tempTransformStrParam = std::move(first.transform_.strParam_); |
136 | tempTransformStrParam2 = std::move(first.transform_.strParam2_); | ||
134 | tempTransformCasingParam = first.transform_.casingParam_; | 137 | tempTransformCasingParam = first.transform_.casingParam_; |
135 | tempTransformInner = std::move(first.transform_.inner_); | 138 | tempTransformInner = std::move(first.transform_.inner_); |
136 | 139 | ||
@@ -184,6 +187,7 @@ namespace verbly { | |||
184 | { | 187 | { |
185 | first.transform_.type_ = second.transform_.type_; | 188 | first.transform_.type_ = second.transform_.type_; |
186 | new(&first.transform_.strParam_) std::string(std::move(second.transform_.strParam_)); | 189 | new(&first.transform_.strParam_) std::string(std::move(second.transform_.strParam_)); |
190 | new(&first.transform_.strParam2_) std::string(std::move(second.transform_.strParam2_)); | ||
187 | first.transform_.casingParam_ = second.transform_.casingParam_; | 191 | first.transform_.casingParam_ = second.transform_.casingParam_; |
188 | new(&first.transform_.inner_) std::unique_ptr<token>(std::move(second.transform_.inner_)); | 192 | new(&first.transform_.inner_) std::unique_ptr<token>(std::move(second.transform_.inner_)); |
189 | 193 | ||
@@ -237,6 +241,7 @@ namespace verbly { | |||
237 | { | 241 | { |
238 | second.transform_.type_ = tempTransformType; | 242 | second.transform_.type_ = tempTransformType; |
239 | new(&second.transform_.strParam_) std::string(std::move(tempTransformStrParam)); | 243 | new(&second.transform_.strParam_) std::string(std::move(tempTransformStrParam)); |
244 | new(&second.transform_.strParam2_) std::string(std::move(tempTransformStrParam2)); | ||
240 | second.transform_.casingParam_ = tempTransformCasingParam; | 245 | second.transform_.casingParam_ = tempTransformCasingParam; |
241 | new(&second.transform_.inner_) std::unique_ptr<token>(std::move(tempTransformInner)); | 246 | new(&second.transform_.inner_) std::unique_ptr<token>(std::move(tempTransformInner)); |
242 | 247 | ||
@@ -293,6 +298,7 @@ namespace verbly { | |||
293 | using ptr_type = std::unique_ptr<token>; | 298 | using ptr_type = std::unique_ptr<token>; |
294 | 299 | ||
295 | transform_.strParam_.~string_type(); | 300 | transform_.strParam_.~string_type(); |
301 | transform_.strParam2_.~string_type(); | ||
296 | transform_.inner_.~ptr_type(); | 302 | transform_.inner_.~ptr_type(); |
297 | 303 | ||
298 | break; | 304 | break; |
@@ -485,6 +491,16 @@ namespace verbly { | |||
485 | indefiniteArticle, | 491 | indefiniteArticle, |
486 | transform_.casingParam_); | 492 | transform_.casingParam_); |
487 | } | 493 | } |
494 | |||
495 | case transform_type::quote: | ||
496 | { | ||
497 | return transform_.strParam_ + | ||
498 | transform_.inner_->compileHelper( | ||
499 | separator, | ||
500 | indefiniteArticle, | ||
501 | capitalization) + | ||
502 | transform_.strParam2_; | ||
503 | } | ||
488 | } | 504 | } |
489 | } | 505 | } |
490 | } | 506 | } |
@@ -654,17 +670,17 @@ namespace verbly { | |||
654 | 670 | ||
655 | token token::separator(std::string param, token inner) | 671 | token token::separator(std::string param, token inner) |
656 | { | 672 | { |
657 | return token(transform_type::separator, std::move(param), std::move(inner)); | 673 | return token(transform_type::separator, std::move(param), "", std::move(inner)); |
658 | } | 674 | } |
659 | 675 | ||
660 | token token::punctuation(std::string param, token inner) | 676 | token token::punctuation(std::string param, token inner) |
661 | { | 677 | { |
662 | return token(transform_type::punctuation, std::move(param), std::move(inner)); | 678 | return token(transform_type::punctuation, std::move(param), "", std::move(inner)); |
663 | } | 679 | } |
664 | 680 | ||
665 | token token::indefiniteArticle(token inner) | 681 | token token::indefiniteArticle(token inner) |
666 | { | 682 | { |
667 | return token(transform_type::indefinite_article, "", std::move(inner)); | 683 | return token(transform_type::indefinite_article, "", "", std::move(inner)); |
668 | } | 684 | } |
669 | 685 | ||
670 | token token::capitalize(casing param, token inner) | 686 | token token::capitalize(casing param, token inner) |
@@ -672,6 +688,15 @@ namespace verbly { | |||
672 | return token(transform_type::capitalize, param, std::move(inner)); | 688 | return token(transform_type::capitalize, param, std::move(inner)); |
673 | } | 689 | } |
674 | 690 | ||
691 | token token::quote(std::string opening, std::string closing, token inner) | ||
692 | { | ||
693 | return token( | ||
694 | transform_type::quote, | ||
695 | std::move(opening), | ||
696 | std::move(closing), | ||
697 | std::move(inner)); | ||
698 | } | ||
699 | |||
675 | token& token::getInnerToken() | 700 | token& token::getInnerToken() |
676 | { | 701 | { |
677 | if (type_ != type::transform) | 702 | if (type_ != type::transform) |
@@ -694,12 +719,14 @@ namespace verbly { | |||
694 | 719 | ||
695 | token::token( | 720 | token::token( |
696 | transform_type type, | 721 | transform_type type, |
697 | std::string param, | 722 | std::string param1, |
723 | std::string param2, | ||
698 | token inner) : | 724 | token inner) : |
699 | type_(type::transform) | 725 | type_(type::transform) |
700 | { | 726 | { |
701 | transform_.type_ = type; | 727 | transform_.type_ = type; |
702 | new(&transform_.strParam_) std::string(std::move(param)); | 728 | new(&transform_.strParam_) std::string(std::move(param1)); |
729 | new(&transform_.strParam2_) std::string(std::move(param2)); | ||
703 | new(&transform_.inner_) std::unique_ptr<token>(new token(std::move(inner))); | 730 | new(&transform_.inner_) std::unique_ptr<token>(new token(std::move(inner))); |
704 | } | 731 | } |
705 | 732 | ||
@@ -711,6 +738,7 @@ namespace verbly { | |||
711 | { | 738 | { |
712 | transform_.type_ = type; | 739 | transform_.type_ = type; |
713 | new(&transform_.strParam_) std::string(); | 740 | new(&transform_.strParam_) std::string(); |
741 | new(&transform_.strParam2_) std::string(); | ||
714 | transform_.casingParam_ = param; | 742 | transform_.casingParam_ = param; |
715 | new(&transform_.inner_) std::unique_ptr<token>(new token(std::move(inner))); | 743 | new(&transform_.inner_) std::unique_ptr<token>(new token(std::move(inner))); |
716 | } | 744 | } |