108 std::cerr << "YAML_ALIAS_EVENT" << std::endl; |
109 std::cerr << "YAML_ALIAS_EVENT" << std::endl; |
109 // TODO: alias? |
110 // TODO: alias? |
110 } else if (event.type == YAML_SCALAR_EVENT) { |
111 } else if (event.type == YAML_SCALAR_EVENT) { |
111 if (mode.back() == Mode::SEQUENCE) { |
112 if (mode.back() == Mode::SEQUENCE) { |
112 std::cerr << "YAML_SCALAR_EVENT: Mode::SEQUENCE: " << event.data.scalar.value << std::endl; |
113 std::cerr << "YAML_SCALAR_EVENT: Mode::SEQUENCE: " << event.data.scalar.value << std::endl; |
113 current->add_child("item")->add_child_text(y2x(event.data.scalar.value)); |
114 current->add_child(itemName)->add_child_text(y2x(event.data.scalar.value)); |
114 } else if (mode.back() == Mode::MAPPING) { |
115 } else if (mode.back() == Mode::MAPPING) { |
115 std::cerr << "YAML_SCALAR_EVENT: Mode::MAPPING: " << event.data.scalar.value << std::endl; |
116 std::cerr << "YAML_SCALAR_EVENT: Mode::MAPPING: " << event.data.scalar.value << std::endl; |
116 current = current->add_child(y2xname(event.data.scalar.value)); |
117 current = current->add_child(y2xname(event.data.scalar.value)); |
117 mode.push_back(Mode::MAP_KEY); |
118 mode.push_back(Mode::MAP_KEY); |
118 } else if (mode.back() == Mode::MAP_KEY) { |
119 } else if (mode.back() == Mode::MAP_KEY) { |
124 std::cerr << "YAML_SCALAR_EVENT: ???" << std::endl; |
125 std::cerr << "YAML_SCALAR_EVENT: ???" << std::endl; |
125 } |
126 } |
126 |
127 |
127 } else if (event.type == YAML_SEQUENCE_START_EVENT) { |
128 } else if (event.type == YAML_SEQUENCE_START_EVENT) { |
128 std::cerr << "YAML_SEQUENCE_START_EVENT" << std::endl; |
129 std::cerr << "YAML_SEQUENCE_START_EVENT" << std::endl; |
|
130 xmlpp::Element* parent = current->get_parent(); |
|
131 if (parent) { |
|
132 itemName = current->get_name(); |
|
133 parent->remove_child(current); |
|
134 current = parent; |
|
135 } else { |
|
136 itemName = "item"; |
|
137 } |
129 if (mode.back() == Mode::MAP_KEY) mode.pop_back(); |
138 if (mode.back() == Mode::MAP_KEY) mode.pop_back(); |
130 mode.push_back(Mode::SEQUENCE); |
139 mode.push_back(Mode::SEQUENCE); |
131 } else if (event.type == YAML_SEQUENCE_END_EVENT) { |
140 } else if (event.type == YAML_SEQUENCE_END_EVENT) { |
132 std::cerr << "YAML_SEQUENCE_END_EVENT" << std::endl; |
141 std::cerr << "YAML_SEQUENCE_END_EVENT" << std::endl; |
133 current = parentOrSelf(current); |
|
134 mode.pop_back(); // TODO: assert sequence? |
142 mode.pop_back(); // TODO: assert sequence? |
135 } else if (event.type == YAML_MAPPING_START_EVENT) { |
143 } else if (event.type == YAML_MAPPING_START_EVENT) { |
136 |
144 |
137 if (mode.back() == Mode::SEQUENCE) { |
145 if (mode.back() == Mode::ROOT) { |
|
146 std::cerr << "YAML_MAPPING_START_EVENT: Mode:ROOT" << std::endl; |
|
147 } else if (mode.back() == Mode::SEQUENCE) { |
138 std::cerr << "YAML_MAPPING_START_EVENT: Mode::SEQUENCE" << std::endl; |
148 std::cerr << "YAML_MAPPING_START_EVENT: Mode::SEQUENCE" << std::endl; |
139 current = current->add_child("item"); |
149 current = current->add_child(itemName); |
140 } else if (mode.back() == Mode::MAP_KEY) { |
150 } else if (mode.back() == Mode::MAP_KEY) { |
141 std::cerr << "YAML_MAPPING_START_EVENT: Mode::MAP_KEY" << std::endl; |
151 std::cerr << "YAML_MAPPING_START_EVENT: Mode::MAP_KEY" << std::endl; |
142 mode.pop_back(); |
152 mode.pop_back(); |
143 } else { |
153 } else { |
144 std::cerr << "YAML_MAPPING_START_EVENT: Mode::?" << std::endl; |
154 std::cerr << "YAML_MAPPING_START_EVENT: Mode::?" << std::endl; |