Enteee / plantuml-parser

Parse PlantUML with JavaScript or TypeScript
https://duckpond.ch/category/plantuml-parser
Apache License 2.0
136 stars 33 forks source link

TS definitions support? #23

Closed ali-habibzadeh closed 4 years ago

ali-habibzadeh commented 4 years ago

Is your feature request related to a problem? Please describe. It's almost a universal expectation for modules to have types so they can be used in a TS application.

Describe the solution you'd like If you are coding in TS, ship with declaration: true but you can also add it separately to https://github.com/DefinitelyTyped.

Describe alternatives you've considered I will have a go at creating something and will let you know when I have something.

Additional context No.

Enteee commented 4 years ago

Thank you for submitting this @ali-habibzadeh.

The project does currently not expose any types/interfaces. But I can see the advantage of parse and the formatters returning a strongly typed result.

I will have a go at creating something and will let you know when I have something.

That would be much appreciated! :+1: I will therefore leave this open for now and wait for more feedback and maybe input from others.

geopic commented 4 years ago

Are you still working on this @ali-habibzadeh? I'd be happy to take over if you're ok with that.

Enteee commented 4 years ago

@geopic thank you for your interest in this issue. Since I have not heard anything, I do think @ali-habibzadeh has abandoned this.

@ali-habibzadeh : Please correct me if I am wrong. @geopic : I would really appreciate your contribution.

geopic commented 4 years ago

I'll get started on it within a few days then, unless @ali-habibzadeh objects.

Enteee commented 4 years ago

Great, don't hesitate to ask questions if you have any. I'll be monitoring GitHub closely.

geopic commented 4 years ago

Hey @Enteee I have some questions about the options object for .parse. Are the possible options the ones listed here and listed here? What data types are expected from the allowedStartRules and plugins properties?

Enteee commented 4 years ago

Are the possible options the ones listed here and listed here?

It's both. The option object will be forwarded to the generated parser. And also to the Tracer . I found that the two options don't intersect and both silently ignore unknown options, therefore I merged the two in one object. I could actually really improve the documentation around that.

What data types are expected from the allowedStartRules and plugins properties?

Those are both options for the parser generator, not the parser itself. The supported options are documented here. But I would actually not expose startRule to the user, since that will almost always break the parser.

Which means what I would expose and document in the type is the following (mostly tracer options)

geopic commented 4 years ago

I have another question about parse. In the Readme it says it return an AST but I can't find where the actual return statement is, can you show me where parse is getting its returned value from?

Enteee commented 4 years ago

I am not quite sure which return statement you mean, but the return statement of parse exposed by the module is here which really just forwards the returned parsed tree according to the parsing expression grammar. The actual parser is here, but since that's all auto generated you don't want to look at that.

For your purpose it's probably best if you have a look at:

In case you need examples, there is a wealth of them in the test/fixtures directory.

geopic commented 4 years ago

@Enteee Thanks for the help and taking time to link to some resources.

Enteee commented 4 years ago

Implemented with #33