|
186 | 186 | Парсер.Следующий();
|
187 | 187 |
|
188 | 188 | Попытка
|
189 |
| - ПрочитатьОсновную(Парсер); |
| 189 | + ПрочитатьЧислоДоРазделителя(Парсер, Основная, "Основная версия"); |
190 | 190 | ПрочитатьРазделитель(Парсер, ".");
|
191 |
| - ПрочитатьВторостепенную(Парсер); |
| 191 | + ПрочитатьЧислоДоРазделителя(Парсер, Второстепенная, "Второстепенная версия"); |
192 | 192 | ПрочитатьРазделитель(Парсер, ".");
|
193 |
| - ПрочитатьПатч(Парсер); |
| 193 | + ПрочитатьЧислоДоРазделителя(Парсер, Патч, "Версия патча"); |
194 | 194 | ПрочитатьХвостовыеМассивы(Парсер);
|
195 | 195 | Исключение
|
196 | 196 | ОшибкаЧтенияВерсии = ИнформацияОбОшибке().Описание;
|
197 | 197 | КонецПопытки;
|
198 | 198 |
|
199 | 199 | КонецПроцедуры
|
200 | 200 |
|
201 |
| -Процедура ПрочитатьОчереднойРазделитель(Знач Парсер, Знач Разделитель) |
202 |
| - |
203 |
| - ТекущийТокен = Парсер.Следующий(); |
204 |
| - Если ТекущийТокен.Тип = Парсер.ТипКонецТекста Тогда |
205 |
| - Возврат; |
206 |
| - КонецЕсли; |
207 |
| - |
208 |
| - Если ТекущийТокен.Тип = Парсер.ТипРазделитель Тогда |
209 |
| - Если Разделитель = ТекущийТокен.Значение Тогда |
210 |
| - СледующийТокен = Парсер.Следующий(); |
211 |
| - Если СледующийТокен.Тип = Парсер.ТипКонецТекста Тогда |
212 |
| - ВызватьИсключение СтрШаблон("Неожиданный конец строки версии, нет данных после разделителя <%1>", Разделитель); |
213 |
| - КонецЕсли; |
214 |
| - Возврат; |
215 |
| - КонецЕсли; |
216 |
| - КонецЕсли; |
217 |
| - |
218 |
| - ВызватьИсключение СтрШаблон("Ожидается разделитель <%1>, но получен <%2>", Разделитель, ТекущийТокен.Значение); |
219 |
| - |
220 |
| -КонецПроцедуры |
221 |
| - |
222 | 201 | Процедура ПрочитатьРазделитель(Знач Парсер, Знач Разделитель)
|
223 | 202 |
|
224 | 203 | ТекущийТокен = Парсер.Текущий();
|
|
240 | 219 |
|
241 | 220 | КонецПроцедуры
|
242 | 221 |
|
243 |
| -Процедура ПрочитатьОсновную(Знач Парсер) |
244 |
| - Токен = Парсер.Текущий(); |
245 |
| - Если Токен.Тип = Парсер.ТипКонецТекста Тогда |
246 |
| - Возврат; |
247 |
| - КонецЕсли; |
248 |
| - |
249 |
| - Если Токен.Тип = Парсер.ТипЧисло Тогда |
250 |
| - Основная = Число(Токен.Значение); |
251 |
| - ИначеЕсли Токен.Тип = Парсер.ТипОшибка Тогда |
252 |
| - ВызватьИсключение Токен.Значение; |
253 |
| - Иначе |
254 |
| - ВызватьИсключение СтрШаблон("Основная версия <%1> должна содержать только цифры", Токен.Значение); |
255 |
| - КонецЕсли; |
256 |
| - |
257 |
| - Парсер.Следующий(); |
258 |
| -КонецПроцедуры |
259 |
| - |
260 |
| -Процедура ПрочитатьВторостепенную(Знач Парсер) |
261 |
| - Токен = Парсер.Текущий(); |
262 |
| - Если Токен.Тип = Парсер.ТипКонецТекста Тогда |
263 |
| - Возврат; |
264 |
| - КонецЕсли; |
265 |
| - |
266 |
| - Если Токен.Тип = Парсер.ТипЧисло Тогда |
267 |
| - Второстепенная = Число(Токен.Значение); |
268 |
| - ИначеЕсли Токен.Тип = Парсер.ТипОшибка Тогда |
269 |
| - ВызватьИсключение Токен.Значение; |
270 |
| - Иначе |
271 |
| - ВызватьИсключение СтрШаблон("Второстепенная версия <%1> должна содержать только цифры", Токен.Значение); |
272 |
| - КонецЕсли; |
273 |
| - |
274 |
| - Парсер.Следующий(); |
275 |
| -КонецПроцедуры |
276 |
| - |
277 |
| -Процедура ПрочитатьПатч(Знач Парсер) |
| 222 | +Процедура ПрочитатьЧислоДоРазделителя(Знач Парсер, Результат, Знач УточнениеИсключения) |
278 | 223 | Токен = Парсер.Текущий();
|
279 | 224 | Если Токен.Тип = Парсер.ТипКонецТекста Тогда
|
280 | 225 | Возврат;
|
281 | 226 | КонецЕсли;
|
282 | 227 |
|
283 | 228 | Если Токен.Тип = Парсер.ТипЧисло Тогда
|
284 |
| - Патч = Число(Токен.Значение); |
| 229 | + Результат = Число(Токен.Значение); |
285 | 230 | ИначеЕсли Токен.Тип = Парсер.ТипОшибка Тогда
|
286 | 231 | ВызватьИсключение Токен.Значение;
|
287 | 232 | Иначе
|
288 |
| - ВызватьИсключение СтрШаблон("Версия патча <%1> должна содержать только цифры", Токен.Значение); |
| 233 | + ВызватьИсключение СтрШаблон("%1 <%2> должна содержать только цифры", УточнениеИсключения, Токен.Значение); |
289 | 234 | КонецЕсли;
|
290 | 235 |
|
291 | 236 | Парсер.Следующий();
|
|
0 commit comments