cnd-parser

0.1.0 • Public • Published

cnd-parser

  • Latest Release: GitHub version
  • Build-Status: Build Status

cnd-parser is copyright 2015 by DracoBlue http://dracoblue.net

What is cnd-parser?

This is a small (nodejs/browserify) library for parsing CND-Strings (defined in jsr-170 and explained at jackrabbit).

This implementation doesn't support the full CND-syntax.

Limitations

  • constraints and default values are not supported
  • each property and childnode needs to be defined on one row
  • shortcuts (like m for multiple) are not supported
  • the library does no validation for nodetype, property or childnode options

Example

This example:

<ns = 'http://namespace.com/ns'>
[ns:NodeType] > ns:ParentType1, ns:ParentType2
  orderable mixin
  - ex:property (string) primary mandatory autocreated protected multiple version
  + ns:node (ns:reqType1, ns:reqType2) mandatory autocreated protected multiple version
[nt:resource] > mix:referenceable
  - jcr:encoding
  - jcr:mimeType mandatory
  - jcr:data (binary) mandatory
  - jcr:lastModified (date) mandatory ignore

can be parsed (in nodejs) like this:

cnd = cndParser.parseString('/* string here! */');
console.log(JSON.stringify(cnd.getNodeTypes(), null, 4));

Output:

[
    {
        "options": {
            "orderable": true,
            "mixin": true
        },
        "properties": [
            {
                "options": {
                    "primary": true,
                    "mandatory": true,
                    "autocreated": true,
                    "protected": true,
                    "multiple": true,
                    "version": true
                },
                "namespacedName": "ex:property",
                "localName": "property",
                "namespace": "ex",
                "types": [
                    "string"
                ]
            }
        ],
        "childNodes": [
            {
                "options": {
                    "mandatory": true,
                    "autocreated": true,
                    "protected": true,
                    "multiple": true,
                    "version": true
                },
                "namespacedName": "ns:node",
                "localName": "node",
                "namespace": "ns",
                "types": [
                    "ns:reqType1",
                    "ns:reqType2"
                ]
            }
        ],
        "namespacedName": "ns:NodeType",
        "localName": "NodeType",
        "namespace": "ns",
        "superTypes": [
            "ns:ParentType1",
            "ns:ParentType2"
        ]
    },
    {
        "options": {},
        "properties": [
            {
                "options": {},
                "namespacedName": "jcr:encoding",
                "localName": "encoding",
                "namespace": "jcr"
            },
            {
                "options": {
                    "mandatory": true
                },
                "namespacedName": "jcr:mimeType",
                "localName": "mimeType",
                "namespace": "jcr"
            },
            {
                "options": {
                    "mandatory": true
                },
                "namespacedName": "jcr:data",
                "localName": "data",
                "namespace": "jcr",
                "types": [
                    "binary"
                ]
            },
            {
                "options": {
                    "mandatory": true,
                    "ignore": true
                },
                "namespacedName": "jcr:lastModified",
                "localName": "lastModified",
                "namespace": "jcr",
                "types": [
                    "date"
                ]
            }
        ],
        "childNodes": [],
        "namespacedName": "nt:resource",
        "localName": "resource",
        "namespace": "nt",
        "superTypes": [
            "mix:referenceable"
        ]
    }
]

License

The cnd-parser project is licensed under the MIT License. See LICENSE for more information.

Dependencies (0)

    Dev Dependencies (2)

    Package Sidebar

    Install

    npm i cnd-parser

    Weekly Downloads

    2

    Version

    0.1.0

    License

    MIT

    Last publish

    Collaborators

    • dracoblue