From 7d4799f08a4995d053189b3b3bfd8ac19247e9f9 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Thu, 8 Dec 2022 01:37:35 +0300 Subject: [PATCH] add highlight tests for connections --- grammar.js | 4 ++-- src/grammar.json | 14 +++++++------- src/parser.c | Bin 188039 -> 188039 bytes test/highlight/connection.d2 | 33 +++++++++++++++++++++++++++++++++ tree-sitter-d2.wasm | Bin 33976 -> 33162 bytes 5 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 test/highlight/connection.d2 diff --git a/grammar.js b/grammar.js index d3aa871..ca21f25 100644 --- a/grammar.js +++ b/grammar.js @@ -73,6 +73,8 @@ module.exports = grammar({ ) ), + _dash: ($) => token.immediate("-"), + label: ($) => choice($.string, $._unquoted_string), attr_value: ($) => seq(spaces, choice($.string, $._unquoted_string)), @@ -175,8 +177,6 @@ module.exports = grammar({ arrow: ($) => choice(/-+>/, /--+/, /<-+/, /<-+>/), - _dash: ($) => token.immediate("-"), - dot: ($) => token.immediate("."), _unquoted_string: ($) => token.immediate(/[^'"`\n;{}]+/), diff --git a/src/grammar.json b/src/grammar.json index 1ae98d3..7c743d0 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -366,6 +366,13 @@ } ] }, + "_dash": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "STRING", + "value": "-" + } + }, "label": { "type": "CHOICE", "members": [ @@ -1024,13 +1031,6 @@ } ] }, - "_dash": { - "type": "IMMEDIATE_TOKEN", - "content": { - "type": "STRING", - "value": "-" - } - }, "dot": { "type": "IMMEDIATE_TOKEN", "content": { diff --git a/src/parser.c b/src/parser.c index 3a03490ced7ac48bb7af6d2e8d59b0612668b716..d8233ffbdcc81d63e44a7872fc22e7b2598c794f 100644 GIT binary patch delta 10989 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 diff --git a/test/highlight/connection.d2 b/test/highlight/connection.d2 new file mode 100644 index 0000000..8551999 --- /dev/null +++ b/test/highlight/connection.d2 @@ -0,0 +1,33 @@ +a <- b <-> c -- d -> e +# <- variable +# ^ operator +# ^ variable +# ^ operator +# ^ variable +# ^ operator +# ^ variable +# ^ operator +# ^ variable + +a ----- b +# ^ operator + +a ----> b +# ^ operator + +a <---- b +# ^ operator + +a <---> b +# ^ operator + +a.b.c --> d.e +# <- constant +# ^ constant +# ^ variable +# ^ operator +# ^ constant +# ^ variable + + + diff --git a/tree-sitter-d2.wasm b/tree-sitter-d2.wasm index 09495189ba91a19cff666f763b8fbb30dbccf6cc..c9f5b7dd472e7e9d92497c1aa63b51ee17035672 100755 GIT binary patch literal 33162 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șBQ zZ8xKv_6d3NwQl3_#A)hf;&*see5rokc-+?q4{O~J;cwH*_LC{v(aaN8H~W^q%8SLs zgEu?M&+=^X=oc#8@(gt4^N`YQ{Gs96@^)EHD!wBCe<1+(-j^7D>;nV=(9cg`5xWfUp!3pz*8FA?sGl%vs^lt?V4;q$(4_{ zSswjzm(C;J@>Z&RnNqUAqhF(R9Ul*=>(Ru^xmw>s(h4=P`(N-R^$QQV_miCWbMuDv zx@pScy5Ec*_V|a~`3&De(a*$%H((y!Tb|OLacS1WSKV=k3tc=s%@aquN6&EU3{Uy! z=ftJgKV2`pb(8rv4pUylQ*MgxE{Ai^{YKQ2pVr3{$CDnt%pHebXYt0_W4GCDXV*Qi z-A0!mPj{Ek!)~47`6>OJc52|#dDLysLvEen8L``cj7#U?<6Ju4zPfZC@$#MR%4e+9 zqt|%!?H+x#N3ZA6mw5D-Jo=p;eVIpB>#);ao^>Lm?jxM*Qt1rOrCrx0@9*N}Aw3=? z3RA7)O|siBG)h`H{7T0gVwWA>b}N3(hd0|wx8wgrPd>`Q&t~Jfxm$nTqoX|hoOXD{ zrSp*Dx7U}}@l}E+PVe~Lt$1Wg3EB-mQx4||k3PVq+kK#|$SzO*Z61A~OE>L$G2UrZ zPbw{|sGY$|YRk{BEh(+7ttpvMK7*B2SJjqQRN)`;CT+_2(n;m=tfaK2rg}O7V{sT; zT}zfzYHMIy%kYntmzR`PPn=i|Wqf(Xx#MfuIn^~|%WDd1O2<}Aox;X}wxF!Kvbu)B zu(G;}mDE&M*OuU)y{xFJpnr9om8inb!9NT>!3R&WM9Ee72g}K+0_SX8MP((cEIp?j zDgN1XCMg(#tDaC^Fuh`I?RY~zsg%ygmQEROvgLWn)T+r-t82^0mcXe3|NKZvdG$CZ z+hkg4<%@FCDA> zlYky$*%;hB_G8kfq!ukw)sv`EOZ+43lgdkLdnD)eFnQ7vni&AvxVy<$zTK03ZJzXn z=JD-jdco;R&DxCylkQRrB{f@#8WgHbOXCYt4_gXXJ-a2ht~E(&7Z|8^k@0uKJIIzS z7f<{%Dl!xD*0(|4tnX#21 z*$mmQ$>_4Sm$tM_O-A-`u$M6nZiNg4e-We+&O2agY6fWnq4TA{_ThLI9~O1dbHzaX23e`3dLuL8@_nxz=alcshjY zW@HJ@iy^}y-I2Ef(iid)Bpc=3gYp(Z_CYRz420~4Y=q#YDjSVs6G#vEzYd@O1Nagu Al>h($ literal 33976 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 s-_y7O^