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

8 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:16 +0000

1""" 

2 pygments.lexers.sieve 

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

4 

5 Lexer for Sieve file format. 

6 

7 https://tools.ietf.org/html/rfc5228 

8 https://tools.ietf.org/html/rfc5173 

9 https://tools.ietf.org/html/rfc5229 

10 https://tools.ietf.org/html/rfc5230 

11 https://tools.ietf.org/html/rfc5232 

12 https://tools.ietf.org/html/rfc5235 

13 https://tools.ietf.org/html/rfc5429 

14 https://tools.ietf.org/html/rfc8580 

15 

16 :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. 

17 :license: BSD, see LICENSE for details. 

18""" 

19 

20from pygments.lexer import RegexLexer, bygroups 

21from pygments.token import Comment, Name, Literal, String, Text, Punctuation, \ 

22 Keyword 

23 

24__all__ = ["SieveLexer"] 

25 

26 

27class SieveLexer(RegexLexer): 

28 """ 

29 Lexer for sieve format. 

30 

31 .. versionadded:: 2.6 

32 """ 

33 name = 'Sieve' 

34 filenames = ['*.siv', '*.sieve'] 

35 aliases = ['sieve'] 

36 

37 tokens = { 

38 'root': [ 

39 (r'\s+', Text), 

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

41 # import: 

42 (r'(?i)require', 

43 Keyword.Namespace), 

44 # tags: 

45 (r'(?i)(:)(addresses|all|contains|content|create|copy|comparator|' 

46 r'count|days|detail|domain|fcc|flags|from|handle|importance|is|' 

47 r'localpart|length|lowerfirst|lower|matches|message|mime|options|' 

48 r'over|percent|quotewildcard|raw|regex|specialuse|subject|text|' 

49 r'under|upperfirst|upper|value)', 

50 bygroups(Name.Tag, Name.Tag)), 

51 # tokens: 

52 (r'(?i)(address|addflag|allof|anyof|body|discard|elsif|else|envelope|' 

53 r'ereject|exists|false|fileinto|if|hasflag|header|keep|' 

54 r'notify_method_capability|notify|not|redirect|reject|removeflag|' 

55 r'setflag|size|spamtest|stop|string|true|vacation|virustest)', 

56 Name.Builtin), 

57 (r'(?i)set', 

58 Keyword.Declaration), 

59 # number: 

60 (r'([0-9.]+)([kmgKMG])?', 

61 bygroups(Literal.Number, Literal.Number)), 

62 # comment: 

63 (r'#.*$', 

64 Comment.Single), 

65 (r'/\*.*\*/', 

66 Comment.Multiline), 

67 # string: 

68 (r'"[^"]*?"', 

69 String), 

70 # text block: 

71 (r'text:', 

72 Name.Tag, 'text'), 

73 ], 

74 'text': [ 

75 (r'[^.].*?\n', String), 

76 (r'^\.', Punctuation, "#pop"), 

77 ] 

78 }