accordproject/concerto

Support complex objects as decorator argument values

Opened this issue · 1 comments

Feature Request 🛍️

Currently decorator arguments are limited to:

  • String
  • Number
  • Boolean
  • Type reference

It would be useful to support a stringified arbitrary object as a decorator argument value.

Use Case

Automated systems creating models and storing complex decorator arguments on the model.

Possible Solution

namespace org.acme@1.0.0

concept TextFormat extends Decorator {
   o String font
   o Integer fontSize
   o Boolean isBold optional
   o Boolean isItalic optonal
}

@TextFormat({"font": "arial", "fontSize" : 12, "isBold" : true})
concept TextField {
    o String value
}

Context

When decorator arguments become complex they are hard to read, because they are based on positional arguments.

Detailed Description

We would have to extend the CTO grammar to support JSON objects within decorator arguments, marshalling them into a new type of DecoratorLiteral, or extending the DecoratorStringLiteral to carry the JSON value as a string.

Extend the logic that validates decorator arguments to check the structure of the JSON conforms to the related decorator definition.

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 10 days.