Git Product home page Git Product logo

structurizr-dsl-intellij-plugin's Introduction

Build GitHub release (latest SemVer including pre-releases)

IntelliJ plugin for the Structurizr DSL

Adds Structurizr DSL language support to IntelliJ.

Structurizr DSL is a domain specific language for creating architecture models and diagrams using Simon Brown's C4 model.

Note

This plugin is in alpha stage, so there will likely be bugs. I'd love to get your feedback! You can leave feedback by writing a review or by filing an issue.

Features

  • Basic syntax highlighting for the Structurizr DSL language. Files with the .dsl extension are considered to be Structurizr DSL files.
  • More to come! Please refer to the TODO section of the README for a list of features that will likely be added.

Decisions / limitations

  • For now, arguments of statements are all treated as (un)quoted strings, so "true", "false", integers, (un)quoted text will all get the same syntax highlighting.
  • The following blocks are treated as property blocks, containing (un)quoted string pairs:
    • branding
    • terminology
    • configuration
    • users
  • All arguments of view declarations are highlighted as (un)quoted strings. Correct highlighting of these arguments will most likely be implemented using an annotator, instead of via lexer based highlighting.

Installation

  • Add the alpha release channel to IntelliJ by adding the following url to the list of plugin repositories: https://plugins.jetbrains.com/plugins/alpha/list. Please refer to IntelliJ's documentation for instructions on how to add plugin repositories.
  • Search for "Structurizr" in the marketplace, and install the plugin. Please refer to IntelliJ's documentation for instructions on how to install plugins.

TODO

Legend

  • ๐Ÿ”ณ = todo
  • โ˜‘๏ธ = partially done
  • โœ… = done

Features

  • โ˜‘๏ธ syntax highlighting
    • โœ… token based
    • ๐Ÿ”ณ annotator based
  • ๐Ÿ”ณ code validation
  • ๐Ÿ”ณ code competion
  • ๐Ÿ”ณ go to definition
  • ๐Ÿ”ณ diagram preview
  • ...

Grammar

  • ๐Ÿ”ณ !include
  • ๐Ÿ”ณ !constant
  • ๐Ÿ”ณ๏ธ workspace
    • ๐Ÿ”ณ with children
    • ๐Ÿ”ณ without children
    • ๐Ÿ”ณ name
      • ๐Ÿ”ณ argument
      • ๐Ÿ”ณ child keyword
    • ๐Ÿ”ณ description
      • ๐Ÿ”ณ argument
      • ๐Ÿ”ณ child keyword
    • ๐Ÿ”ณ extends
    • ๐Ÿ”ณ properties
    • ๐Ÿ”ณ !docs
    • ๐Ÿ”ณ !adrs
    • ๐Ÿ”ณ !identifiers
    • ๐Ÿ”ณ !impliedRelationships
    • ๐Ÿ”ณ model
      • ๐Ÿ”ณ with children
      • ๐Ÿ”ณ without children
      • ๐Ÿ”ณ identifiers
        • ๐Ÿ”ณ flat
        • ๐Ÿ”ณ hierarchical
      • ๐Ÿ”ณ group (containing people, software systems)
      • ๐Ÿ”ณ person
        • ๐Ÿ”ณ name
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ description
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ tags
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ url
        • ๐Ÿ”ณ properties
        • ๐Ÿ”ณ perspectives
        • ๐Ÿ”ณ relationships
      • ๐Ÿ”ณ softwareSystem
        • ๐Ÿ”ณ name
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ description
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ tags
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ group (containing containers)
        • ๐Ÿ”ณ container
          • ๐Ÿ”ณ name
            • ๐Ÿ”ณ argument
            • ๐Ÿ”ณ child keyword
          • ๐Ÿ”ณ description
            • ๐Ÿ”ณ argument
            • ๐Ÿ”ณ child keyword
          • ๐Ÿ”ณ technology
            • ๐Ÿ”ณ argument
            • ๐Ÿ”ณ child keyword
          • ๐Ÿ”ณ tags
            • ๐Ÿ”ณ argument
            • ๐Ÿ”ณ child keyword
          • ๐Ÿ”ณ group (containing components)
          • ๐Ÿ”ณ component
            • ๐Ÿ”ณ name
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ description
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ technology
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ tags
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ url
            • ๐Ÿ”ณ properties
            • ๐Ÿ”ณ perspectives
            • ๐Ÿ”ณ relationships
          • ๐Ÿ”ณ url
          • ๐Ÿ”ณ properties
          • ๐Ÿ”ณ perspectives
          • ๐Ÿ”ณ relationships
        • ๐Ÿ”ณ !docs
        • ๐Ÿ”ณ !adrs
        • ๐Ÿ”ณ url
        • ๐Ÿ”ณ properties
        • ๐Ÿ”ณ perspectives
        • ๐Ÿ”ณ relationships
      • ๐Ÿ”ณ deploymentEnvironment
        • ๐Ÿ”ณ name argument
        • ๐Ÿ”ณ deploymentGroup
          • ๐Ÿ”ณ name argument
        • ๐Ÿ”ณ deploymentNode
          • ๐Ÿ”ณ name argument
          • ๐Ÿ”ณ description
            • ๐Ÿ”ณ argument
            • ๐Ÿ”ณ child keyword
          • ๐Ÿ”ณ technology
            • ๐Ÿ”ณ argument
            • ๐Ÿ”ณ child keyword
          • ๐Ÿ”ณ tags
            • ๐Ÿ”ณ argument
            • ๐Ÿ”ณ child keyword
          • ๐Ÿ”ณ instances
            • ๐Ÿ”ณ argument
            • ๐Ÿ”ณ child keyword
          • ๐Ÿ”ณ deploymentNode (nesting)
          • ๐Ÿ”ณ infrastructureNode
            • ๐Ÿ”ณ name argument
            • ๐Ÿ”ณ description
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ technology
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ tags
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ url
            • ๐Ÿ”ณ properties
            • ๐Ÿ”ณ perspectives
            • ๐Ÿ”ณ relationships
          • ๐Ÿ”ณ softwareSystemInstance
            • ๐Ÿ”ณ identifier argument
            • ๐Ÿ”ณ deploymentGroups argument
            • ๐Ÿ”ณ tags
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ description child keyword
            • ๐Ÿ”ณ description child keyword
            • ๐Ÿ”ณ url
            • ๐Ÿ”ณ properties
            • ๐Ÿ”ณ perspectives
            • ๐Ÿ”ณ healthCheck
              • ๐Ÿ”ณ name argument
              • ๐Ÿ”ณ url argument
              • ๐Ÿ”ณ interval argument
              • ๐Ÿ”ณ timeout argument
            • ๐Ÿ”ณ relationships
          • ๐Ÿ”ณ containerInstance
            • ๐Ÿ”ณ identifier argument
            • ๐Ÿ”ณ deploymentGroups argument
            • ๐Ÿ”ณ tags
              • ๐Ÿ”ณ argument
              • ๐Ÿ”ณ child keyword
            • ๐Ÿ”ณ description child keyword
            • ๐Ÿ”ณ description child keyword
            • ๐Ÿ”ณ url
            • ๐Ÿ”ณ properties
            • ๐Ÿ”ณ perspectives
            • ๐Ÿ”ณ healthCheck
            • ๐Ÿ”ณ relationships
          • ๐Ÿ”ณ url
          • ๐Ÿ”ณ properties
          • ๐Ÿ”ณ perspectives
          • ๐Ÿ”ณ relationships
        • ๐Ÿ”ณ relationships
      • ๐Ÿ”ณ element
        • ๐Ÿ”ณ name argument
        • ๐Ÿ”ณ metadata argument
        • ๐Ÿ”ณ description
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ tags
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ url
        • ๐Ÿ”ณ properties
        • ๐Ÿ”ณ perspectives
        • ๐Ÿ”ณ relationships
      • ๐Ÿ”ณ enterprise
        • ๐Ÿ”ณ group
        • ๐Ÿ”ณ person
        • ๐Ÿ”ณ softwareSystem
      • ๐Ÿ”ณ relationships
        • ๐Ÿ”ณ explicit form
        • ๐Ÿ”ณ implicit form
        • ๐Ÿ”ณ description argument
        • ๐Ÿ”ณ technology argument
        • ๐Ÿ”ณ tags
          • ๐Ÿ”ณ argument
          • ๐Ÿ”ณ child keyword
        • ๐Ÿ”ณ properties
        • ๐Ÿ”ณ perspectives
      • ๐Ÿ”ณ !ref
        • ๐Ÿ”ณ identifier argument
        • ๐Ÿ”ณ canonical name argument
    • ๐Ÿ”ณ views
      • ๐Ÿ”ณ systemLandscape
      • ๐Ÿ”ณ systemContext
      • ๐Ÿ”ณ container
      • ๐Ÿ”ณ component
      • ๐Ÿ”ณ filtered
      • ๐Ÿ”ณ dynamic
      • ๐Ÿ”ณ deployment
      • ๐Ÿ”ณ custom
      • ๐Ÿ”ณ view definition keywords
        • ๐Ÿ”ณ include
        • ๐Ÿ”ณ exclude
        • ๐Ÿ”ณ autoLayout
        • ๐Ÿ”ณ animation
        • ๐Ÿ”ณ title
        • ๐Ÿ”ณ description
        • ๐Ÿ”ณ properties
      • ๐Ÿ”ณ styles
        • ๐Ÿ”ณ element
          • ๐Ÿ”ณ tag argument
          • ๐Ÿ”ณ shape
          • ๐Ÿ”ณ icon
          • ๐Ÿ”ณ width
          • ๐Ÿ”ณ height
          • ๐Ÿ”ณ background
          • ๐Ÿ”ณ color
          • ๐Ÿ”ณ colour
          • ๐Ÿ”ณ stroke
          • ๐Ÿ”ณ strokeWidth
          • ๐Ÿ”ณ fontSize
          • ๐Ÿ”ณ border
          • ๐Ÿ”ณ opacity
          • ๐Ÿ”ณ metadata
          • ๐Ÿ”ณ description
          • ๐Ÿ”ณ properties
        • ๐Ÿ”ณ relationship
          • ๐Ÿ”ณ tag argument
          • ๐Ÿ”ณ thickness
          • ๐Ÿ”ณ color
          • ๐Ÿ”ณ colour
          • ๐Ÿ”ณ dashed
          • ๐Ÿ”ณ style
          • ๐Ÿ”ณ routing
          • ๐Ÿ”ณ fontSize
          • ๐Ÿ”ณ width
          • ๐Ÿ”ณ position
          • ๐Ÿ”ณ opacity
          • ๐Ÿ”ณ properties
      • ๐Ÿ”ณ theme
        • ๐Ÿ”ณ default argument
        • ๐Ÿ”ณ url argument
      • ๐Ÿ”ณ themes
        • ๐Ÿ”ณ url argument (multiple)
      • ๐Ÿ”ณ branding
        • ๐Ÿ”ณ logo
        • ๐Ÿ”ณ font
      • ๐Ÿ”ณ terminology
        • ๐Ÿ”ณ enterprise
        • ๐Ÿ”ณ person
        • ๐Ÿ”ณ softwareSystem
        • ๐Ÿ”ณ container
        • ๐Ÿ”ณ component
        • ๐Ÿ”ณ deploymentNode
        • ๐Ÿ”ณ infrastructureNode
        • ๐Ÿ”ณ relationship
      • ๐Ÿ”ณ properties
      • ๐Ÿ”ณ expressions for include and exclude
    • ๐Ÿ”ณ configuration
      • ๐Ÿ”ณ users
        • ๐Ÿ”ณ user configuration
      • ๐Ÿ”ณ properties

structurizr-dsl-intellij-plugin's People

Contributors

actions-user avatar dirkgroot avatar renovate[bot] avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.