785 {
786 assert(node.Type() == NodeType::Map);
787
788 if (node["up"]) {
789 rhs.hint = hint_t::up;
790 rhs.entity = node["up"].as<std::string>();
791 }
792 else if (node["down"]) {
793 rhs.hint = hint_t::down;
794 rhs.entity = node["down"].as<std::string>();
795 }
796 else if (node["left"]) {
797 rhs.hint = hint_t::left;
798 rhs.entity = node["left"].as<std::string>();
799 }
800 else if (node["right"]) {
801 rhs.hint = hint_t::right;
802 rhs.entity = node["right"].as<std::string>();
803 }
804 else if (node["together"]) {
805 rhs.hint = hint_t::together;
806 rhs.entity = node["together"].as<std::vector<std::string>>();
807 }
808 else if (node["row"]) {
809 rhs.hint = hint_t::row;
810 rhs.entity = node["row"].as<std::vector<std::string>>();
811 }
812 else if (node["column"]) {
813 rhs.hint = hint_t::column;
814 rhs.entity = node["column"].as<std::vector<std::string>>();
815 }
816 else
817 return false;
818
819 return true;
820 }