{"scopeName":"source.mermaid.class-diagram","patterns":[{"include":"#main"}],"repository":{"annotation":{"name":"meta.annotation.mermaid","contentName":"entity.name.tag.annotation.mermaid","begin":"(\u003c\u003c)","end":"(\u003e\u003e)","beginCaptures":{"0":{"name":"punctuation.definition.annotation.begin.mermaid"},"1":{"name":"sublimelinter.gutter-mark"}},"endCaptures":{"0":{"name":"punctuation.definition.annotation.end.mermaid"},"1":{"name":"sublimelinter.gutter-mark"}}},"annotation-statement":{"name":"meta.annotation.statement.mermaid","match":"^\\s*(\u003c\u003c.*?\u003e\u003e)(?:\\s+((?=[a-zA-Z])\\w+)(?=\\s*(?:$|[^{}\\s])))?","captures":{"1":{"patterns":[{"include":"#annotation"}]},"2":{"name":"entity.name.type.class.mermaid"}}},"cardinality":{"name":"string.quoted.double.cardinality.mermaid","begin":"\"","end":"\"","patterns":[{"name":"constant.language.variable-amount.mermaid","match":"\\*"},{"name":"constant.language.range.mermaid","match":"\\.\\."}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.mermaid"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.mermaid"}}},"class":{"patterns":[{"name":"meta.class.definition.mermaid","begin":"(?x) ^\n\\s* (class)\n\\s+ ((?=[a-zA-Z])\\w+)\n(?:\\s* (~\\w+~))?\n(?:\\s* (:::) \\s* ([^\\s{}]+))?\n\\s* ({)","end":"}","patterns":[{"include":"source.mermaid#comment"},{"include":"#annotation"},{"include":"#member"}],"beginCaptures":{"1":{"name":"storage.type.class.mermaid"},"2":{"name":"entity.name.type.class.mermaid"},"3":{"patterns":[{"include":"#generic"}]},"4":{"name":"keyword.operator.css-class.mermaid"},"5":{"name":"constant.language.css-class.mermaid"},"6":{"patterns":[{"include":"source.mermaid#brace"}]}},"endCaptures":{"0":{"patterns":[{"include":"source.mermaid#brace"}]}}},{"name":"meta.class.statement.mermaid","match":"(?x) ^\n\\s* (class)\n\\s+ ((?=[a-zA-Z])\\w+(?:\\s+\\S.+?)?)\n(?: \\s* (~\\w+~))?\n(?: \\s* (:::) \\s* ([^\\s{}]+))?\n(?= \\s*)","captures":{"1":{"name":"storage.type.class.mermaid"},"2":{"name":"entity.name.type.class.mermaid"},"3":{"patterns":[{"include":"#generic"}]},"4":{"name":"keyword.operator.css-class.mermaid"},"5":{"name":"constant.language.css-class.mermaid"}}}]},"classifier":{"patterns":[{"name":"storage.modifier.classifier.abstract.mermaid","match":"\\*","captures":{"0":{"name":"sublimelinter.gutter-mark"}}},{"name":"storage.modifier.classifier.static.mermaid","match":"\\$","captures":{"0":{"name":"sublimelinter.gutter-mark"}}}]},"generic":{"name":"meta.generic.mermaid","contentName":"entity.name.tag.type.mermaid","begin":"(?:^|\\G)\\s*((~))","end":"(~)","beginCaptures":{"1":{"name":"punctuation.definition.type.begin.mermaid"},"2":{"name":"sublimelinter.gutter-mark"}},"endCaptures":{"0":{"name":"punctuation.definition.type.end.mermaid"},"1":{"name":"sublimelinter.gutter-mark"}}},"interaction":{"name":"meta.$1-handler.mermaid","begin":"^\\s*(link|callback)(?=$|\\s)","end":"(?!\\G)","patterns":[{"begin":"(?\u003c=link)\\G","end":"(?=\\s*$)","patterns":[{"name":"entity.name.tag.node.mermaid","begin":"\\G\\s+((?=[a-zA-Z])\\w+)","end":"\\s+(\"[^\"]*\")","beginCaptures":{"1":{"name":"entity.name.tag.node.mermaid"}},"endCaptures":{"1":{"patterns":[{"include":"source.mermaid.flowchart#url"}]}}},{"include":"source.mermaid.flowchart#tooltip"}]},{"begin":"(?\u003c=callback)\\G","end":"(?=\\s*$)","patterns":[{"name":"entity.name.tag.node.mermaid","begin":"\\G\\s+((?=[a-zA-Z])\\w+)","end":"\\s+((\")[^\"]*(\"))","beginCaptures":{"1":{"name":"entity.name.tag.node.mermaid"}},"endCaptures":{"1":{"name":"string.quoted.double.callback-name.mermaid"},"2":{"name":"punctuation.definition.string.begin.mermaid"},"3":{"name":"punctuation.definition.string.end.mermaid"}}},{"include":"source.mermaid.flowchart#tooltip"}]}],"beginCaptures":{"1":{"name":"storage.type.$1-assignment.mermaid"}}},"main":{"patterns":[{"include":"source.mermaid#a11y"},{"include":"source.mermaid#directive"},{"include":"source.mermaid#comment"},{"include":"source.mermaid#direction"},{"include":"#annotation-statement"},{"include":"#relation"},{"include":"#class"},{"include":"#member-statement"},{"include":"#interaction"},{"include":"source.mermaid.flowchart#click"}]},"member":{"patterns":[{"name":"meta.member.method.mermaid","begin":"([-+#~]\\s*|(?![-+#~]))(?!})([^\\s\\(]+)(?=\\()","end":"(?\u003c=\\))(?:\\s*([*$]))?(?:\\s+(\\S+?)(\\s*~[^~]+~\\s*)?)?(?=$|\\s)","patterns":[{"include":"#params"}],"beginCaptures":{"1":{"patterns":[{"include":"#visibility"}]},"2":{"name":"entity.name.function.member.method.mermaid"}},"endCaptures":{"1":{"patterns":[{"include":"#classifier"}]},"2":{"name":"storage.type.return-value.mermaid"},"3":{"patterns":[{"include":"#generic"}]}}},{"name":"meta.member.attribute.mermaid","begin":"([-+#~]\\s*|(?![-+#~]))(?!})([^\\s\\(]+?)(\\s*~[^~]+~\\s*)?(?=$|\\s)","end":"\\S+|(?=\\s*$)","beginCaptures":{"1":{"patterns":[{"include":"#visibility"}]},"2":{"name":"storage.type.attribute.mermaid"},"3":{"patterns":[{"include":"#generic"}]}},"endCaptures":{"0":{"name":"entity.name.member.mermaid"}}}]},"member-statement":{"name":"meta.member.statement.mermaid","begin":"^\\s*((?=[a-zA-Z])\\w+)\\s*(:)[ \\t]*","end":"(?!\\G)","patterns":[{"include":"#member"}],"beginCaptures":{"1":{"name":"entity.name.type.class.mermaid"},"2":{"patterns":[{"include":"source.mermaid#colon"}]}},"applyEndPatternLast":true},"params":{"name":"meta.parameters.mermaid","begin":"\\G\\(","end":"\\)","patterns":[{"match":"(?:([^\\s(),]+?)(\\s*~[^~]+~)?\\s+)?([^\\s(),]+)","captures":{"1":{"name":"storage.type.parameter.mermaid"},"2":{"patterns":[{"include":"#generic"}]},"3":{"name":"variable.function.parameter.mermaid"}}},{"include":"source.mermaid#comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.mermaid"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.mermaid"}}},"relation":{"name":"meta.relation.mermaid","begin":"(?x)\n# First operand\n(?:\n\t((?=[a-zA-Z])\\w+) # Name\n\t(?:\\s+(\"[^\"]*\"))? # Cardinality\n\t\\s*\n)?\n\n# Link operator\n(?:\n\t# (Possibly asymmetrical) two-way relation\n\t((?:[*o]|\u003c\\|?)(?:--|\\.\\.)(?:[*o]|\\|?\u003e))\n\t\n\t# One-way relations\n\t| (--\\|\u003e | \u003c\\|--) # Inheritance\n\t| (--\\* | \\*--) # Composition\n\t| (--o | o--) # Aggregation\n\t| (--\u003e | \u003c--) # Association\n\t| (\\.{2}\\|\u003e | \u003c\\|\\.{2}) # Realisation\n\t| (\\.{2}\u003e | \u003c\\.{2}) # Dependency\n\t| (\\.{2}) # Link, dashed\n\t| (--) # Link, solid\n)\n\n# Second operand\n(?:\n\t\\s*\n\t(?:(\"[^\"]*\")\\s+)? # Cardinality\n\t((?=[a-zA-Z])\\w+) # Name\n)?","end":"(?!\\G)","patterns":[{"name":"meta.label.mermaid","contentName":"string.unquoted.relation-text.mermaid","begin":"\\G\\s*(:)[ \\t]*","end":"(?=\\s*$)","beginCaptures":{"1":{"patterns":[{"include":"source.mermaid#colon"}]}}}],"beginCaptures":{"1":{"name":"entity.name.type.class.first.mermaid"},"10":{"name":"keyword.operator.relation.dependency.mermaid"},"11":{"name":"keyword.operator.relation.link.dashed.mermaid"},"12":{"patterns":[{"include":"#cardinality"}]},"13":{"name":"entity.name.type.class.second.mermaid"},"2":{"patterns":[{"include":"#cardinality"}]},"3":{"name":"keyword.operator.relation.two-way.mermaid"},"4":{"name":"keyword.operator.relation.inheritance.mermaid"},"5":{"name":"keyword.operator.relation.composition.mermaid"},"6":{"name":"keyword.operator.relation.aggregation.mermaid"},"7":{"name":"keyword.operator.relation.association.mermaid"},"8":{"name":"keyword.operator.relation.link.solid.mermaid"},"9":{"name":"keyword.operator.relation.realisation.mermaid"}}},"visibility":{"patterns":[{"name":"storage.modifier.visibility.public.mermaid","match":"\\+","captures":{"0":{"name":"sublimelinter.gutter-mark"}}},{"name":"storage.modifier.visibility.private.mermaid","match":"-","captures":{"0":{"name":"sublimelinter.gutter-mark"}}},{"name":"storage.modifier.visibility.protected.mermaid","match":"#","captures":{"0":{"name":"sublimelinter.gutter-mark"}}},{"name":"storage.modifier.visibility.internal.mermaid","match":"~","captures":{"0":{"name":"sublimelinter.gutter-mark"}}}]}}}