Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pygments/lexers/graphviz.py: 100%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

12 statements  

1""" 

2 pygments.lexers.graphviz 

3 ~~~~~~~~~~~~~~~~~~~~~~~~ 

4 

5 Lexer for the DOT language (graphviz). 

6 

7 :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS. 

8 :license: BSD, see LICENSE for details. 

9""" 

10 

11from pygments.lexer import RegexLexer, bygroups 

12from pygments.token import Comment, Keyword, Operator, Name, String, Number, \ 

13 Punctuation, Whitespace 

14 

15 

16__all__ = ['GraphvizLexer'] 

17 

18 

19class GraphvizLexer(RegexLexer): 

20 """ 

21 For graphviz DOT graph description language. 

22 """ 

23 name = 'Graphviz' 

24 url = 'https://www.graphviz.org/doc/info/lang.html' 

25 aliases = ['graphviz', 'dot'] 

26 filenames = ['*.gv', '*.dot'] 

27 mimetypes = ['text/x-graphviz', 'text/vnd.graphviz'] 

28 version_added = '2.8' 

29 tokens = { 

30 'root': [ 

31 (r'\s+', Whitespace), 

32 (r'(#|//).*?$', Comment.Single), 

33 (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline), 

34 (r'(?i)(node|edge|graph|digraph|subgraph|strict)\b', Keyword), 

35 (r'--|->', Operator), 

36 (r'[{}[\]:;,]', Punctuation), 

37 (r'(\b\D\w*)(\s*)(=)(\s*)', 

38 bygroups(Name.Attribute, Whitespace, Punctuation, Whitespace), 

39 'attr_id'), 

40 (r'\b(n|ne|e|se|s|sw|w|nw|c|_)\b', Name.Builtin), 

41 (r'\b\D\w*', Name.Tag), # node 

42 (r'[-]?((\.[0-9]+)|([0-9]+(\.[0-9]*)?))', Number), 

43 (r'"(\\"|[^"])*?"', Name.Tag), # quoted node 

44 (r'<', Punctuation, 'xml'), 

45 ], 

46 'attr_id': [ 

47 (r'\b\D\w*', String, '#pop'), 

48 (r'[-]?((\.[0-9]+)|([0-9]+(\.[0-9]*)?))', Number, '#pop'), 

49 (r'"(\\"|[^"])*?"', String.Double, '#pop'), 

50 (r'<', Punctuation, ('#pop', 'xml')), 

51 ], 

52 'xml': [ 

53 (r'<', Punctuation, '#push'), 

54 (r'>', Punctuation, '#pop'), 

55 (r'\s+', Whitespace), 

56 (r'[^<>\s]', Name.Tag), 

57 ] 

58 }