945 {
946 assert(node.Type() == NodeType::Map);
947
948 if (node["up"]) {
949 rhs.hint = hint_t::up;
950 rhs.entity = node["up"].as<std::string>();
951 }
952 else if (node["down"]) {
953 rhs.hint = hint_t::down;
954 rhs.entity = node["down"].as<std::string>();
955 }
956 else if (node["left"]) {
957 rhs.hint = hint_t::left;
958 rhs.entity = node["left"].as<std::string>();
959 }
960 else if (node["right"]) {
961 rhs.hint = hint_t::right;
962 rhs.entity = node["right"].as<std::string>();
963 }
964 else if (node["together"]) {
965 rhs.hint = hint_t::together;
966 rhs.entity = node["together"].as<std::vector<std::string>>();
967 }
968 else if (node["row"]) {
969 rhs.hint = hint_t::row;
970 rhs.entity = node["row"].as<std::vector<std::string>>();
971 }
972 else if (node["column"]) {
973 rhs.hint = hint_t::column;
974 rhs.entity = node["column"].as<std::vector<std::string>>();
975 }
976 else
977 return false;
978
979 return true;
980 }