-
Notifications
You must be signed in to change notification settings - Fork 2
WIP: Поддержка semver в части пререлизов и метаданных билда #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
src/core/Классы/Версия.os
Outdated
ОшибкаЧтенияВерсии = СтрШаблон("Второстепенная версия <%1> должна содержать только цифры",СтрокаОсновнаяВерсия); | ||
Возврат; | ||
|
||
Процедура ПрочитатьОсновную(Знач Парсер) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
эти три функции только текстом эксепшена отличаются? может во внутреннюю общую функцию вынести?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Меня заломало передавать текст эксепшена параметром, кажется что теорема Эскобара. Можно, конечно. Думаешь, так лучше будет?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Чтобы править в одном месте
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Поддержу, определённо править в одном месте удобнее
src/core/Классы/Версия.os
Outdated
Если ТекущийТокен.Тип = Парсер.ТипРазделитель Тогда | ||
Если Разделитель = ТекущийТокен.Значение Тогда | ||
СледующийТокен = Парсер.Следующий(); | ||
Если СледующийТокен.Тип = Парсер.ТипКонецТекста Тогда | ||
ВызватьИсключение СтрШаблон("Неожиданный конец строки версии, нет данных после разделителя <%1>", Разделитель); | ||
КонецЕсли; | ||
Возврат; | ||
КонецЕсли; | ||
КонецЕсли; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Кажется два первых условия можно совместить и читаться будет полегче
Если ТекущийТокен.Тип = Парсер.ТипРазделитель Тогда | |
Если Разделитель = ТекущийТокен.Значение Тогда | |
СледующийТокен = Парсер.Следующий(); | |
Если СледующийТокен.Тип = Парсер.ТипКонецТекста Тогда | |
ВызватьИсключение СтрШаблон("Неожиданный конец строки версии, нет данных после разделителя <%1>", Разделитель); | |
КонецЕсли; | |
Возврат; | |
КонецЕсли; | |
КонецЕсли; | |
Если ТекущийТокен.Тип = Парсер.ТипРазделитель | |
И Разделитель = ТекущийТокен.Значение Тогда | |
СледующийТокен = Парсер.Следующий(); | |
Если СледующийТокен.Тип = Парсер.ТипКонецТекста Тогда | |
ВызватьИсключение СтрШаблон("Неожиданный конец строки версии, нет данных после разделителя <%1>", Разделитель); | |
КонецЕсли; | |
Возврат; | |
КонецЕсли; | |
КонецЕсли; |
Возврат; | ||
КонецПроцедуры | ||
|
||
Процедура ПрочитатьРазделитель(Знач Парсер, Знач Разделитель) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А чем метод ПрочитатьРазделитель
отличается от ПрочитатьОчереднойРазделитель
? Я всё вчитываюсь и не могу увидеть разницы
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Я гляну внимательнее, это могут быть атавизмы какой-то итерации рефакторинга
src/core/Классы/Версия.os
Outdated
ОшибкаЧтенияВерсии = СтрШаблон("Второстепенная версия <%1> должна содержать только цифры",СтрокаОсновнаяВерсия); | ||
Возврат; | ||
|
||
Процедура ПрочитатьОсновную(Знач Парсер) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Поддержу, определённо править в одном месте удобнее
ТипТокена = ТипТекст; | ||
ИначеЕсли КодСимвола >= ДиапазонЧислоНачало И КодСимвола <= ДиапазонЧислоКонец Тогда | ||
// обработка числа | ||
ИначеЕсли КодСимвола = Точка ИЛИ КодСимвола = Дефис ИЛИ КодСимвола = Плюс Тогда |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Если я правильно понимаю семвер то дефис, становится разделителем единожды после патч версии, все последующие дефисы до знака +
должны трактоваться как часть описания пердрелизной версии, а все дефисы после знака +
должны трактоваться как часть метаданных сборки.
Или предлагаешь забить пока не стрельнет?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Так и есть, но мог тестами не покрыть. Добавлю тесты. Дефисы приклеиваются к альфанумерикам в другом месте. Этот считай не "парсер", а "лексер". Можно даже его переименовать.
Реализована поддержка пререлизов и метаданных сборок по semver
closes #2
Нарушена обратная совместимость при которой все версии с пререлизами, но ошибками - считались валидными, но без пререлизов.
Версия нужна для бэкенда сайта oscript.io для корректной сортировки версий
WIP: Пока не реализована сортировка с учетом пререлиза.