monaco-editor icon indicating copy to clipboard operation
monaco-editor copied to clipboard

Feature request: support JSONSchema with YAML

Open danvk opened this issue 6 years ago • 9 comments

monaco-editor version: 0.17.0 Browser: Chrome OS: macOS

Steps or JS usage snippet reproducing the issue:

  • Visit the schema validation demo. Observe red squiggles.
  • Change it to use YAML instead of JSON (see code below)
  • Observe that there are no red squiggles.

There was some discussion of this over at https://github.com/microsoft/monaco-editor/issues/131#issuecomment-491175238 and there is an (unmaintained) monaco-yaml project here: https://github.com/pengx17/monaco-yaml. vscode has this feature via a RedHat YAML plugin.

Code for playground:

// Configures two JSON schemas, with references.

var jsonCode = [
    'p1: "v3"',
    'p2: false',
].join('\n');
var modelUri = monaco.Uri.parse("a://b/foo.yaml"); // a made up unique URI for our model
var model = monaco.editor.createModel(jsonCode, "yaml", modelUri);

// configure the JSON language support with schemas and schema associations
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
    validate: true,
    schemas: [{
        uri: "http://myserver/foo-schema.json", // id of the first schema
        fileMatch: [modelUri.toString()], // associate with our model
        schema: {
            type: "object",
            properties: {
                p1: {
                    enum: ["v1", "v2"]
                },
                p2: {
                    $ref: "http://myserver/bar-schema.json" // reference the second schema
                }
            }
        }
    }, {
        uri: "http://myserver/bar-schema.json", // id of the first schema
        schema: {
            type: "object",
            properties: {
                q1: {
                    enum: ["x1", "x2"]
                }
            }
        }
    }]
});

monaco.editor.create(document.getElementById("container"), {
    model: model
});

danvk avatar Jun 06 '19 16:06 danvk

Just FYI the most current, maintained version of monaco-yaml is at https://github.com/remcohaszing/monaco-yaml

Would also like to see this feature added

FoxxMD avatar Dec 20 '21 17:12 FoxxMD

I imagine there hasn't been any work done on this but just checking in. Seems like low hanging fruit since there is a working POC.

FoxxMD avatar Jul 19 '22 14:07 FoxxMD