Skip to content

Commit

Permalink
feat(xychart): add xychart diagram type
Browse files Browse the repository at this point in the history
  • Loading branch information
brollin authored and bpruitt-goddard committed May 24, 2024
1 parent f5fa358 commit acb8bb3
Show file tree
Hide file tree
Showing 2 changed files with 242 additions and 0 deletions.
141 changes: 141 additions & 0 deletions syntaxes/diagrams/xyChart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
- comment: XY Chart
begin: ^\s*(xychart(?:-beta)?(?:\s+horizontal)?)
beginCaptures:
'1':
name: keyword.control.mermaid
patterns:
- match: \%%.*
name: comment
- match: !regex |-
^\s*(title)\s+ # title
(\s*["\(\)$&%\^/#.,?!;:*+=<>\'\\\-\w\s]*) # text
captures:
'1':
name: keyword.control.mermaid
'2':
name: string
- comment: (x-axis)
begin: !regex |-
^\s*(x-axis) # x-axis
beginCaptures:
'1':
name: keyword.control.mermaid
patterns:
- comment: (decimal) (-->) (decimal)
match: !regex |-
\s*([-+]?\d+\.?\d*) # decimal
\s*(-->) # -->
\s*([-+]?\d+\.?\d*) # decimal
captures:
'1':
name: constant.numeric.decimal.mermaid
'2':
name: keyword.control.mermaid
'3':
name: constant.numeric.decimal.mermaid
- comment: ("text")
match: !regex |-
\s+("[\($&%\^/#.,?!;:*+=<>\'\\\-\w\s]*") # "text"
captures:
'1':
name: string
- comment: (text)
match: !regex |-
\s+([\($&%\^/#.,?!;:*+=<>\'\\\-\w]*) # text
captures:
'1':
name: string
- comment: ([)(text)(,)(text)*(])
begin: \s*(\[) # [
beginCaptures:
'1':
name: keyword.control.mermaid
patterns:
- comment: (decimal)
match: !regex |-
\s*([-+]?\d+\.?\d*) # decimal
captures:
'1':
name: constant.numeric.decimal.mermaid
- comment: ("text")
match: !regex |-
\s*("[\($&%\^/#.,?!;:*+=<>\'\\\-\w\s]*") # "text"
captures:
'1':
name: string
- comment: (text)
match: !regex |-
\s*([\($&%\^/#.?!;:*+=<>\'\\\-\w\s]+) # text
captures:
'1':
name: string
- comment: (,)
match: !regex |-
\s*(,) # ,
captures:
'1':
name: keyword.control.mermaid
end: \s*(\]) # ]
endCaptures:
'1':
name: keyword.control.mermaid
end: '$'
- comment: (y-axis)
begin: !regex |-
^\s*(y-axis) # y-axis
beginCaptures:
'1':
name: keyword.control.mermaid
patterns:
- comment: (decimal) (-->) (decimal)
match: !regex |-
\s*([-+]?\d+\.?\d*) # decimal
\s*(-->) # -->
\s*([-+]?\d+\.?\d*) # decimal
captures:
'1':
name: constant.numeric.decimal.mermaid
'2':
name: keyword.control.mermaid
'3':
name: constant.numeric.decimal.mermaid
- comment: ("text")
match: !regex |-
\s+("[\($&%\^/#.,?!;:*+=<>\'\\\-\w\s]*") # "text"
captures:
'1':
name: string
- comment: (text)
match: !regex |-
\s+([\($&%\^/#.,?!;:*+=<>\'\\\-\w]*) # text
captures:
'1':
name: string
end: '$'
- comment: (line|bar) ([)(decimal)+(])
begin: !regex |-
^\s*(line|bar) # line|bar
\s*(\[) # [
beginCaptures:
'1':
name: keyword.control.mermaid
'2':
name: keyword.control.mermaid
patterns:
- comment: (decimal)
match: !regex |-
\s*([-+]?\d+\.?\d*) # decimal
captures:
'1':
name: constant.numeric.decimal.mermaid
- comment: (,)
match: !regex |-
\s*(,) # ,
captures:
'1':
name: keyword.control.mermaid
end: \s*(\]) # ]
endCaptures:
'1':
name: keyword.control.mermaid
end: (^|\G)(?=\s*[`:~]{3,}\s*$)
101 changes: 101 additions & 0 deletions tests/diagrams/xychart.test.mermaid
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
%% SYNTAX TEST "source.mermaid" "xy chart test"

xychart-beta
%%% <--- keyword.control.mermaid
title Chess ELO rating over time
%%^^^^^ keyword.control.mermaid
%% ^^^^^^^^^^^^^^^^^^^^^^^^^^ string

x-axis Day
%%^^^^^^ keyword.control.mermaid
%% ^^^ string

x-axis 1 --> 10
%%^^^^^^ keyword.control.mermaid
%% ^ constant.numeric.decimal.mermaid
%% ^^^ keyword.control.mermaid
%% ^^ constant.numeric.decimal.mermaid

x-axis "Day" 1.0 --> 10.0
%%^^^^^^ keyword.control.mermaid
%% ^^^^^ string
%% ^^^ constant.numeric.decimal.mermaid
%% ^^^ keyword.control.mermaid
%% ^^^^ constant.numeric.decimal.mermaid

x-axis "Day" 1 --> 10
%%^^^^^^ keyword.control.mermaid
%% ^^^^^ string
%% ^ constant.numeric.decimal.mermaid
%% ^^^ keyword.control.mermaid
%% ^^ constant.numeric.decimal.mermaid

x-axis "Day of the month" 1 --> 10
%%^^^^^^ keyword.control.mermaid
%% ^^^^^^^^^^^^^^^^^^ string
%% ^ constant.numeric.decimal.mermaid
%% ^^^ keyword.control.mermaid
%% ^^ constant.numeric.decimal.mermaid

x-axis "Day of week" ["Mon"]
%%^^^^^^ keyword.control.mermaid
%% ^^^^^^^^^^^^^ string
%% ^ keyword.control.mermaid
%% ^^^^^ string
%% ^ keyword.control.mermaid

x-axis "Day of week" ["Mon", "Tue",Wed]
%%^^^^^^ keyword.control.mermaid
%% ^^^^^^^^^^^^^ string
%% ^ keyword.control.mermaid
%% ^^^^^ string
%% ^ keyword.control.mermaid
%% ^^^^^ string
%% ^ keyword.control.mermaid
%% ^^^ string
%% ^ keyword.control.mermaid

y-axis ELO
%%^^^^^^ keyword.control.mermaid
%% ^^^ string

y-axis 1000 --> 2000
%%^^^^^^ keyword.control.mermaid
%% ^^^^ constant.numeric.decimal.mermaid
%% ^^^ keyword.control.mermaid
%% ^^^^ constant.numeric.decimal.mermaid

y-axis "ELO" 1000 --> 2000
%%^^^^^^ keyword.control.mermaid
%% ^^^^^ string
%% ^^^^ constant.numeric.decimal.mermaid
%% ^^^ keyword.control.mermaid
%% ^^^^ constant.numeric.decimal.mermaid

line [1,-2,+3, 4]
%%^^^^ keyword.control.mermaid
%% ^ keyword.control.mermaid
%% ^ constant.numeric.decimal.mermaid
%% ^ keyword.control.mermaid
%% ^^ constant.numeric.decimal.mermaid
%% ^ keyword.control.mermaid
%% ^^ constant.numeric.decimal.mermaid
%% ^ keyword.control.mermaid
%% ^ constant.numeric.decimal.mermaid
%% ^ keyword.control.mermaid

bar [1,-2,+3, 4]
%%^^^ keyword.control.mermaid
%% ^ keyword.control.mermaid
%% ^ constant.numeric.decimal.mermaid
%% ^ keyword.control.mermaid
%% ^^ constant.numeric.decimal.mermaid
%% ^ keyword.control.mermaid
%% ^^ constant.numeric.decimal.mermaid
%% ^ keyword.control.mermaid
%% ^ constant.numeric.decimal.mermaid
%% ^ keyword.control.mermaid

%% negative cases
invalid title invalid
%%^^^^^^^^^^^^^^^^^^^^^ source.mermaid - keyword.control.mermaid

0 comments on commit acb8bb3

Please sign in to comment.