diff --git a/external/pips b/external/pips index b2db868..dd0d2ed 160000 --- a/external/pips +++ b/external/pips @@ -1 +1 @@ -Subproject commit b2db8688baee3f3465e679a83496ca577d192282 +Subproject commit dd0d2edee97411141b05f435f7fe386ac3d0ced8 diff --git a/rummy/deck.cpp b/rummy/deck.cpp index e067581..442c8c5 100644 --- a/rummy/deck.cpp +++ b/rummy/deck.cpp @@ -287,13 +287,25 @@ void Deck::CompileStream(std::istream &ss, std::map &meta local_name = local_name.substr(dot_pos + 1, std::string::npos); std::replace(suit_name.begin(), suit_name.end(), '.', '/'); curr_suit = suit_name; + name_prefix = suit_name + "."; } } else { - std::string suit_card_name = curr_suit; - std::replace(suit_card_name.begin(), suit_card_name.end(), '/', '.'); - // use suit name as prefix - name_prefix = suit_card_name + "."; - global_name = name_prefix + local_name; + // standalone variable needs to reset curr_suit + if (local_name.find('.') != std::string::npos) { + auto dot_pos = local_name.find_last_of('.'); + std::string suit_name = local_name.substr(0, dot_pos); + local_name = local_name.substr(dot_pos + 1, std::string::npos); + std::replace(suit_name.begin(), suit_name.end(), '.', '/'); + name_prefix = suit_name + "."; + global_name = name_prefix + local_name; + curr_suit = suit_name; + } else { + std::string suit_card_name = curr_suit; + std::replace(suit_card_name.begin(), suit_card_name.end(), '/', '.'); + // use suit name as prefix + name_prefix = suit_card_name + "."; + global_name = name_prefix + local_name; + } } // Variable updates