From c49d3aa66e7d0d28cd76bb1c99c0db0530cd6059 Mon Sep 17 00:00:00 2001 From: Alex Heneveld Date: Fri, 6 Dec 2019 11:35:17 +0000 Subject: [PATCH 1/2] tidy linting to fix bug in catalog parsing --- ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js b/ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js index 2d5e42456..deb9bd140 100644 --- a/ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js +++ b/ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js @@ -45,6 +45,10 @@ CodeMirror.registerGlobalHelper('lint', 'yamlCatalog', (mode, cm) => (mode.name validator.addSchema(JSON.parse(catalogItemReferenceSchema), '/Catalog/Item/Reference'); validator.addSchema(JSON.parse(catalogItemInlineSchema), '/Catalog/Item/Inline'); validator.addSchema(JSON.parse(catalogVersionSchema), '/Catalog/Version'); + // below are needed for catalog items + validator.addSchema(JSON.parse(blueprintSchema), '/Blueprint'); + validator.addSchema(JSON.parse(blueprintEntitySchema), '/Blueprint/Entity'); + validator.addSchema(JSON.parse(blueprintLocationSchema), '/Blueprint/Location'); return lint(validator, catalogSchema, text, options, cm); }); From 5572bbe20a267e20464d6083dd6e20799de79c8e Mon Sep 17 00:00:00 2001 From: Alex Heneveld Date: Fri, 6 Dec 2019 11:41:27 +0000 Subject: [PATCH 2/2] reuse validators for code mirror shortens code and should be faster --- .../addon/lint/lint-yaml-brooklyn.js | 37 +++++++------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js b/ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js index deb9bd140..e4cf85ca3 100644 --- a/ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js +++ b/ui-modules/utils/yaml-editor/addon/lint/lint-yaml-brooklyn.js @@ -29,42 +29,31 @@ import catalogItemInlineSchema from '../schemas/catalog-item-inline.json'; import catalogVersionSchema from '../schemas/catalog-version.json'; import rootSchema from '../schemas/root.json'; -CodeMirror.registerGlobalHelper('lint', 'yamlBlueprint', (mode, cm) => (mode.name === 'yaml' && mode.type === 'blueprint'), (text, options, cm) => { - let validator = new Validator(); +let blueprintValidator = new Validator(); +let catalogValidator = new Validator(); +let rootValidator = new Validator(); +[ blueprintValidator, catalogValidator, rootValidator ].forEach(validator => { validator.addSchema(JSON.parse(blueprintSchema), '/Blueprint'); validator.addSchema(JSON.parse(blueprintEntitySchema), '/Blueprint/Entity'); validator.addSchema(JSON.parse(blueprintLocationSchema), '/Blueprint/Location'); - - return lint(validator, blueprintSchema, text, options, cm); }); -CodeMirror.registerGlobalHelper('lint', 'yamlCatalog', (mode, cm) => (mode.name === 'yaml' && mode.type === 'catalog'), (text, options, cm) => { - let validator = new Validator(); +[ catalogValidator, rootValidator ].forEach(validator => { validator.addSchema(JSON.parse(catalogSchema), '/Catalog'); validator.addSchema(JSON.parse(catalogItemReferenceSchema), '/Catalog/Item/Reference'); validator.addSchema(JSON.parse(catalogItemInlineSchema), '/Catalog/Item/Inline'); validator.addSchema(JSON.parse(catalogVersionSchema), '/Catalog/Version'); - // below are needed for catalog items - validator.addSchema(JSON.parse(blueprintSchema), '/Blueprint'); - validator.addSchema(JSON.parse(blueprintEntitySchema), '/Blueprint/Entity'); - validator.addSchema(JSON.parse(blueprintLocationSchema), '/Blueprint/Location'); - - return lint(validator, catalogSchema, text, options, cm); }); -CodeMirror.registerGlobalHelper('lint', 'yamlBrooklyn', (mode, cm) => (mode.name === 'yaml' && mode.type === 'brooklyn'), (text, options, cm) => { - let validator = new Validator(); - - validator.addSchema(JSON.parse(blueprintSchema), '/Blueprint'); - validator.addSchema(JSON.parse(blueprintEntitySchema), '/Blueprint/Entity'); - validator.addSchema(JSON.parse(blueprintLocationSchema), '/Blueprint/Location'); - validator.addSchema(JSON.parse(catalogSchema), '/Catalog'); - validator.addSchema(JSON.parse(catalogItemReferenceSchema), '/Catalog/Item/Reference'); - validator.addSchema(JSON.parse(catalogItemInlineSchema), '/Catalog/Item/Inline'); - validator.addSchema(JSON.parse(catalogVersionSchema), '/Catalog/Version'); - return lint(validator, rootSchema, text, options, cm); -}); +CodeMirror.registerGlobalHelper('lint', 'yamlBlueprint', (mode, cm) => (mode.name === 'yaml' && mode.type === 'blueprint'), + (text, options, cm) => lint(blueprintValidator, blueprintSchema, text, options, cm)); + +CodeMirror.registerGlobalHelper('lint', 'yamlCatalog', (mode, cm) => (mode.name === 'yaml' && mode.type === 'catalog'), + (text, options, cm) => lint(catalogValidator, catalogSchema, text, options, cm)); + +CodeMirror.registerGlobalHelper('lint', 'yamlBrooklyn', (mode, cm) => (mode.name === 'yaml' && mode.type === 'brooklyn'), + (text, options, cm) => lint(rootValidator, rootSchema, text, options, cm)); function lint(validator, baseSchema, text, options, cm) { let issues = [];