Added migration of design dependencies. That is, if a descendant of an ancestor i has a design
dependency with a descendant of an ancestor j, then ancestors i and j have a design
dependency as well. This rule has been implemented.
Several changes to raesl.doc to improve readability of the generated outputs.
Added section toggle arguments to reasl.doc.convert to allow a user to
exclude specific sections from the generated document. By default all sections are included.
Improved the handling of bundles when generating a PDF document. Bundles are unfolded below the
main specification text rather than within the main specification text.
Added separate chapters for behavior specifications, needs, and design specifications that are not
(in)directly related to components.
Added **metadata** kwargs to reasl.doc.convert such that one can add a
subtitle, date, author and logo to the title page of the generated PDF document.
Add some backwards compatibility to the paths resolver so it handles lists as arguments, too.
However, the recommended method is supplying multiple path arguments in an *args fashion.
Bug fix regarding PDF document generation. Needs and design requirements that do not (indirectly)
relate to components did not end up within the output document. Now they do.
Modified the behavioral dependency derivation rules to detect logical dependencies between
components and between function specifications. Path dependencies resulting from decomposing
complex behavioral specifications into multiple smaller behavior specifications are now accounted
for.
Added a plotting module to generate figures tailored to the inspection of ESL specifications:
Matrix figures are made using Plotly and build on the foundations of
ragraph.plot.mdm. For now, the only matrix figure is the
raesl.plot.mdm, which is a Multi-Domain Matrix figure of (part of) an ESL
spec.
Diagram figures are made using Graphviz and have some filtering in place to aid in inspecting
the hierarchy, or reviewing the functional dependency network in various ways.
Add a convenient method for obtaining the Graph object from RaESL's compiler:
raesl.compile.to_graph. It takes the exact same arguments as raesl.compile.cli.run but offers
only the Graph as output for use in Python scripts.
Bug fix. Implemented an identifier uniques check. This check ensures that all identifiers of ESL
elements within the scope of a component definition are unique.
Added a language server module. The language server can be started using raesl serve to start it
using STDIO (use this in production) or raesl serve -p <debug_port_number> (use this when
debugging). Currently, you can use this by building and installing the VS Code extension.
Solved some cyclic imports that occurred when compiling the language server executable so we could
ship it with the VS Code extension.
The compiler no longer yields a syntax error when dotted names are used within goal,
transformation, design, behavior, and relation specifications. Dotted names are required when one
wants to use only a sub-element of a bundle.
Using raesl.compile.cli.run now returns an ragraph.graph.Graph object if a specification is
compiled successfully. The returned Graph contains all specification elements (e.g. components,
goals, transformations, etc) as ragraph. node.Node objects and all derived dependencies between
them as ragraph.edge.Edge objects.