Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pygments/lexers/typoscript.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

26 statements  

1""" 

2 pygments.lexers.typoscript 

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

4 

5 Lexers for TypoScript 

6 

7 `TypoScriptLexer` 

8 A TypoScript lexer. 

9 

10 `TypoScriptCssDataLexer` 

11 Lexer that highlights markers, constants and registers within css. 

12 

13 `TypoScriptHtmlDataLexer` 

14 Lexer that highlights markers, constants and registers within html tags. 

15 

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

17 :license: BSD, see LICENSE for details. 

18""" 

19 

20import re 

21 

22from pygments.lexer import RegexLexer, include, bygroups, using 

23from pygments.token import Text, Comment, Name, String, Number, \ 

24 Operator, Punctuation 

25 

26__all__ = ['TypoScriptLexer', 'TypoScriptCssDataLexer', 'TypoScriptHtmlDataLexer'] 

27 

28 

29class TypoScriptCssDataLexer(RegexLexer): 

30 """ 

31 Lexer that highlights markers, constants and registers within css blocks. 

32 """ 

33 

34 name = 'TypoScriptCssData' 

35 aliases = ['typoscriptcssdata'] 

36 url = 'http://docs.typo3.org/typo3cms/TyposcriptReference/' 

37 version_added = '2.2' 

38 

39 tokens = { 

40 'root': [ 

41 # marker: ###MARK### 

42 (r'(.*)(###\w+###)(.*)', bygroups(String, Name.Constant, String)), 

43 # constant: {$some.constant} 

44 (r'(\{)(\$)((?:[\w\-]+\.)*)([\w\-]+)(\})', 

45 bygroups(String.Symbol, Operator, Name.Constant, 

46 Name.Constant, String.Symbol)), # constant 

47 # constant: {register:somevalue} 

48 (r'(.*)(\{)([\w\-]+)(\s*:\s*)([\w\-]+)(\})(.*)', 

49 bygroups(String, String.Symbol, Name.Constant, Operator, 

50 Name.Constant, String.Symbol, String)), # constant 

51 # whitespace 

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

53 # comments 

54 (r'/\*(?:(?!\*/).)*\*/', Comment), 

55 (r'(?<!(#|\'|"))(?:#(?!(?:[a-fA-F0-9]{6}|[a-fA-F0-9]{3}))[^\n#]+|//[^\n]*)', 

56 Comment), 

57 # other 

58 (r'[<>,:=.*%+|]', String), 

59 (r'[\w"\-!/&;(){}]+', String), 

60 ] 

61 } 

62 

63 

64class TypoScriptHtmlDataLexer(RegexLexer): 

65 """ 

66 Lexer that highlights markers, constants and registers within html tags. 

67 """ 

68 

69 name = 'TypoScriptHtmlData' 

70 aliases = ['typoscripthtmldata'] 

71 url = 'http://docs.typo3.org/typo3cms/TyposcriptReference/' 

72 version_added = '2.2' 

73 

74 tokens = { 

75 'root': [ 

76 # INCLUDE_TYPOSCRIPT 

77 (r'(INCLUDE_TYPOSCRIPT)', Name.Class), 

78 # Language label or extension resource FILE:... or LLL:... or EXT:... 

79 (r'(EXT|FILE|LLL):[^}\n"]*', String), 

80 # marker: ###MARK### 

81 (r'(.*)(###\w+###)(.*)', bygroups(String, Name.Constant, String)), 

82 # constant: {$some.constant} 

83 (r'(\{)(\$)((?:[\w\-]+\.)*)([\w\-]+)(\})', 

84 bygroups(String.Symbol, Operator, Name.Constant, 

85 Name.Constant, String.Symbol)), # constant 

86 # constant: {register:somevalue} 

87 (r'(.*)(\{)([\w\-]+)(\s*:\s*)([\w\-]+)(\})(.*)', 

88 bygroups(String, String.Symbol, Name.Constant, Operator, 

89 Name.Constant, String.Symbol, String)), # constant 

90 # whitespace 

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

92 # other 

93 (r'[<>,:=.*%+|]', String), 

94 (r'[\w"\-!/&;(){}#]+', String), 

95 ] 

96 } 

97 

98 

99class TypoScriptLexer(RegexLexer): 

100 """ 

101 Lexer for TypoScript code. 

102 """ 

103 

104 name = 'TypoScript' 

105 url = 'http://docs.typo3.org/typo3cms/TyposcriptReference/' 

106 aliases = ['typoscript'] 

107 filenames = ['*.typoscript'] 

108 mimetypes = ['text/x-typoscript'] 

109 version_added = '2.2' 

110 

111 flags = re.DOTALL | re.MULTILINE 

112 

113 tokens = { 

114 'root': [ 

115 include('comment'), 

116 include('constant'), 

117 include('html'), 

118 include('label'), 

119 include('whitespace'), 

120 include('keywords'), 

121 include('punctuation'), 

122 include('operator'), 

123 include('structure'), 

124 include('literal'), 

125 include('other'), 

126 ], 

127 'keywords': [ 

128 # Conditions 

129 (r'(?i)(\[)(browser|compatVersion|dayofmonth|dayofweek|dayofyear|' 

130 r'device|ELSE|END|GLOBAL|globalString|globalVar|hostname|hour|IP|' 

131 r'language|loginUser|loginuser|minute|month|page|PIDinRootline|' 

132 r'PIDupinRootline|system|treeLevel|useragent|userFunc|usergroup|' 

133 r'version)([^\]]*)(\])', 

134 bygroups(String.Symbol, Name.Constant, Text, String.Symbol)), 

135 # Functions 

136 (r'(?=[\w\-])(HTMLparser|HTMLparser_tags|addParams|cache|encapsLines|' 

137 r'filelink|if|imageLinkWrap|imgResource|makelinks|numRows|numberFormat|' 

138 r'parseFunc|replacement|round|select|split|stdWrap|strPad|tableStyle|' 

139 r'tags|textStyle|typolink)(?![\w\-])', Name.Function), 

140 # Toplevel objects and _* 

141 (r'(?:(=?\s*<?\s+|^\s*))(cObj|field|config|content|constants|FEData|' 

142 r'file|frameset|includeLibs|lib|page|plugin|register|resources|sitemap|' 

143 r'sitetitle|styles|temp|tt_[^:.\s]*|types|xmlnews|INCLUDE_TYPOSCRIPT|' 

144 r'_CSS_DEFAULT_STYLE|_DEFAULT_PI_VARS|_LOCAL_LANG)(?![\w\-])', 

145 bygroups(Operator, Name.Builtin)), 

146 # Content objects 

147 (r'(?=[\w\-])(CASE|CLEARGIF|COA|COA_INT|COBJ_ARRAY|COLUMNS|CONTENT|' 

148 r'CTABLE|EDITPANEL|FILE|FILES|FLUIDTEMPLATE|FORM|HMENU|HRULER|HTML|' 

149 r'IMAGE|IMGTEXT|IMG_RESOURCE|LOAD_REGISTER|MEDIA|MULTIMEDIA|OTABLE|' 

150 r'PAGE|QTOBJECT|RECORDS|RESTORE_REGISTER|SEARCHRESULT|SVG|SWFOBJECT|' 

151 r'TEMPLATE|TEXT|USER|USER_INT)(?![\w\-])', Name.Class), 

152 # Menu states 

153 (r'(?=[\w\-])(ACTIFSUBRO|ACTIFSUB|ACTRO|ACT|CURIFSUBRO|CURIFSUB|CURRO|' 

154 r'CUR|IFSUBRO|IFSUB|NO|SPC|USERDEF1RO|USERDEF1|USERDEF2RO|USERDEF2|' 

155 r'USRRO|USR)', Name.Class), 

156 # Menu objects 

157 (r'(?=[\w\-])(GMENU_FOLDOUT|GMENU_LAYERS|GMENU|IMGMENUITEM|IMGMENU|' 

158 r'JSMENUITEM|JSMENU|TMENUITEM|TMENU_LAYERS|TMENU)', Name.Class), 

159 # PHP objects 

160 (r'(?=[\w\-])(PHP_SCRIPT(_EXT|_INT)?)', Name.Class), 

161 (r'(?=[\w\-])(userFunc)(?![\w\-])', Name.Function), 

162 ], 

163 'whitespace': [ 

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

165 ], 

166 'html': [ 

167 (r'<\S[^\n>]*>', using(TypoScriptHtmlDataLexer)), 

168 (r'&[^;\n]*;', String), 

169 (r'(?s)(_CSS_DEFAULT_STYLE)(\s*)(\()(.*(?=\n\)))', 

170 bygroups(Name.Class, Text, String.Symbol, using(TypoScriptCssDataLexer))), 

171 ], 

172 'literal': [ 

173 (r'0x[0-9A-Fa-f]+t?', Number.Hex), 

174 # (r'[0-9]*\.[0-9]+([eE][0-9]+)?[fd]?\s*(?:[^=])', Number.Float), 

175 (r'[0-9]+', Number.Integer), 

176 (r'(###\w+###)', Name.Constant), 

177 ], 

178 'label': [ 

179 # Language label or extension resource FILE:... or LLL:... or EXT:... 

180 (r'(EXT|FILE|LLL):[^}\n"]*', String), 

181 # Path to a resource 

182 (r'(?![^\w\-])([\w\-]+(?:/[\w\-]+)+/?)(\S*\n)', 

183 bygroups(String, String)), 

184 ], 

185 'punctuation': [ 

186 (r'[,.]', Punctuation), 

187 ], 

188 'operator': [ 

189 (r'[<>,:=.*%+|]', Operator), 

190 ], 

191 'structure': [ 

192 # Brackets and braces 

193 (r'[{}()\[\]\\]', String.Symbol), 

194 ], 

195 'constant': [ 

196 # Constant: {$some.constant} 

197 (r'(\{)(\$)((?:[\w\-]+\.)*)([\w\-]+)(\})', 

198 bygroups(String.Symbol, Operator, Name.Constant, 

199 Name.Constant, String.Symbol)), # constant 

200 # Constant: {register:somevalue} 

201 (r'(\{)([\w\-]+)(\s*:\s*)([\w\-]+)(\})', 

202 bygroups(String.Symbol, Name.Constant, Operator, 

203 Name.Constant, String.Symbol)), # constant 

204 # Hex color: #ff0077 

205 (r'(#[a-fA-F0-9]{6}\b|#[a-fA-F0-9]{3}\b)', String.Char) 

206 ], 

207 'comment': [ 

208 (r'(?<!(#|\'|"))(?:#(?!(?:[a-fA-F0-9]{6}|[a-fA-F0-9]{3}))[^\n#]+|//[^\n]*)', 

209 Comment), 

210 (r'/\*(?:(?!\*/).)*\*/', Comment), 

211 (r'(\s*#\s*\n)', Comment), 

212 ], 

213 'other': [ 

214 (r'[\w"\-!/&;]+', Text), 

215 ], 

216 }