Closed Strech closed 10 years ago
@razum2um
Есть пара моментов, которые хочется обсудить.
Во-первых, порядок дефолтных атрибутов для схем.
Сейчас, если пользователь перемешает порядок полей, которые мы «всегда» приписываем схеме, то они будут переставлены:
user: | user:
properties: {} | description: ''
type: object | type: object
additionalProperties: false | additionalProperties: false
required: [] | required: []
description: '' | properties: {}
Во-вторых, дефолтные атрибуты для одной схемы, могут не включать в себя дефолтные атрибуты от другой схемы.
Поэтому происходит следующее, что не особо логично:
repos: | repos:
description: '' | type: object
type: array | properties: {}
items: [] | description: ''
Есть задумка такого рода - составить список последовательности атрибутов, которая бы нас устроила. И если атрибут не сходит в этот список, то мы помещаем его снизу/сверху дефолтных
Это позволит нам сохранить порядок атрибутов, не давать пользователю стоздавать хаос. Но это не изменит того, что мы таки переставим порядок атрибутов в схеме. Но для стандартных ключей, это будет не плохим выходом из ситуации
не вижу в 1м ничего плохого. пусть юзер расставляет как есть, мы только добавляем если вдруг нужен дефолт. убирать автоматом ничего не стоит имхо
про 2е не понял
@razum2um Ну, например для списка у нас нет по умолчанию description
, но есть для объекта. Поэтому выглядит странно, когда мы для списка расставляя дефолтные помещаем пользовательский description
вниз (из-за того, что мы сначала пишем дефолт, потом остальное)
Ясно, ты проедалаешь оставлять схему как есть и если чего-то нет — дописывать в конец, после всех пользовательских атрибутов?
да, по принципу наименьшего удивления. по идее дописывание будет на групоне после чего надо это просто закоммитить, потом это будет только во время апгрейдов, но я пока их не предвижу
Парсинг YAML:
Если не стандартный ключ шел впереди п2, то он помещался вниз после п3
После парсинга и дампинга будет
Требуется назначать атрибуты в том порядке, в котором они идут в файле