File Coverage

blib/lib/Syntax/Highlight/Engine/Kate/CMake.pm
Criterion Covered Total %
statement 42 47 89.3
branch 16 20 80.0
condition 1 3 33.3
subroutine 6 7 85.7
pod 0 4 0.0
total 65 81 80.2


line stmt bran cond sub pod time code
1             # Copyright (c) 2005 - 2006 Hans Jeuken. All rights reserved.
2             # This program is free software; you can redistribute it and/or
3             # modify it under the same terms as Perl itself.
4              
5             # This file was generated from the 'cmake.xml' file of the syntax highlight
6             # engine of the kate text editor (http://www.kate-editor.org
7              
8             #kate xml version 1.02
9             #kate version 2.4
10             #generated: Sun Feb 3 22:02:04 2008, localtime
11              
12             package Syntax::Highlight::Engine::Kate::CMake;
13              
14             our $VERSION = '0.12';
15              
16 1     1   411 use strict;
  1         2  
  1         27  
17 1     1   4 use warnings;
  1         2  
  1         25  
18 1     1   5 use base('Syntax::Highlight::Engine::Kate::Template');
  1         2  
  1         658  
19              
20             sub new {
21 2     2 0 463 my $proto = shift;
22 2   33     8 my $class = ref($proto) || $proto;
23 2         11 my $self = $class->SUPER::new(@_);
24 2         14 $self->attributes({
25             'Commands' => 'Keyword',
26             'Comment' => 'Comment',
27             'Macros' => 'Keyword',
28             'Normal Text' => 'Normal',
29             'Region Marker' => 'RegionMarker',
30             'Special Args' => 'Others',
31             'Variable' => 'DecVal',
32             });
33 2         12 $self->listAdd('commands',
34             'ABSTRACT_FILES',
35             'ADD_CUSTOM_COMMAND',
36             'ADD_CUSTOM_TARGET',
37             'ADD_DEFINITIONS',
38             'ADD_DEPENDENCIES',
39             'ADD_EXECUTABLE',
40             'ADD_LIBRARY',
41             'ADD_TEST',
42             'AUX_SOURCE_DIRECTORY',
43             'BUILD_COMMAND',
44             'BUILD_NAME',
45             'CMAKE_MINIMUM_REQUIRED',
46             'CONFIGURE_FILE',
47             'CREATE_TEST_SOURCELIST',
48             'ELSE',
49             'ENABLE_TESTING',
50             'ENDFOREACH',
51             'ENDIF',
52             'ENDMACRO',
53             'EXEC_PROGRAM',
54             'EXPORT_LIBRARY_DEPENDENCIES',
55             'FILE',
56             'FIND_FILE',
57             'FIND_LIBRARY',
58             'FIND_PACKAGE',
59             'FIND_PATH',
60             'FIND_PROGRAM',
61             'FLTK_WRAP_UI',
62             'FOREACH',
63             'GET_CMAKE_PROPERTY',
64             'GET_DIRECTORY_PROPERTY',
65             'GET_FILENAME_COMPONENT',
66             'GET_SOURCE_FILE_PROPERTY',
67             'GET_TARGET_PROPERTY',
68             'IF',
69             'INCLUDE',
70             'INCLUDE_DIRECTORIES',
71             'INCLUDE_EXTERNAL_MSPROJECT',
72             'INCLUDE_REGULAR_EXPRESSION',
73             'INSTALL_FILES',
74             'INSTALL_PROGRAMS',
75             'INSTALL_TARGETS',
76             'ITK_WRAP_TCL',
77             'LINK_DIRECTORIE',
78             'LINK_LIBRARIES',
79             'LOAD_CACHE',
80             'LOAD_COMMAND',
81             'MACRO',
82             'MAKE_DIRECTORY',
83             'MARK_AS_ADVANCED',
84             'MESSAGE',
85             'OPTION',
86             'OUTPUT_REQUIRED_FILES',
87             'PROJECT',
88             'QT_WRAP_CPP',
89             'QT_WRAP_UI',
90             'REMOVE',
91             'REMOVE_DEFINITIONS',
92             'SEPARATE_ARGUMENTS',
93             'SET',
94             'SET_DIRECTORY_PROPERTIES',
95             'SET_SOURCE_FILES_PROPERTIES',
96             'SET_TARGET_PROPERTIES',
97             'SITE_NAME',
98             'SOURCE_FILES',
99             'SOURCE_FILES_REMOVE',
100             'SOURCE_GROUP',
101             'STRING',
102             'SUBDIRS',
103             'SUBDIR_DEPENDS',
104             'TARGET_LINK_LIBRARIES',
105             'TRY_COMPILE',
106             'TRY_RUN',
107             'USE_MANGLED_MESA',
108             'UTILITY_SOURCE',
109             'VARIABLE_REQUIRES',
110             'VTK_MAKE_INSTANTIATOR',
111             'VTK_WRAP_JAVA',
112             'VTK_WRAP_PYTHON',
113             'VTK_WRAP_TCL',
114             'WRAP_EXCLUDE_FILES',
115             'WRITE_FILE',
116             );
117 2         10 $self->listAdd('special_args',
118             'ABSOLUTE',
119             'ABSTRACT',
120             'ADDITIONAL_MAKE_CLEAN_FILES',
121             'ALL',
122             'AND',
123             'APPEND',
124             'ARGS',
125             'ASCII',
126             'BEFORE',
127             'CACHE',
128             'CACHE_VARIABLES',
129             'CLEAR',
130             'COMMAND',
131             'COMMANDS',
132             'COMMAND_NAME',
133             'COMMENT',
134             'COMPARE',
135             'COMPILE_FLAGS',
136             'COPYONLY',
137             'DEFINED',
138             'DEFINE_SYMBOL',
139             'DEPENDS',
140             'DOC',
141             'EQUAL',
142             'ESCAPE_QUOTES',
143             'EXCLUDE',
144             'EXCLUDE_FROM_ALL',
145             'EXISTS',
146             'EXPORT_MACRO',
147             'EXT',
148             'EXTRA_INCLUDE',
149             'FATAL_ERROR',
150             'FILE',
151             'FILES',
152             'FORCE',
153             'FUNCTION',
154             'GENERATED',
155             'GLOB',
156             'GLOB_RECURSE',
157             'GREATER',
158             'GROUP_SIZE',
159             'HEADER_FILE_ONLY',
160             'HEADER_LOCATION',
161             'IMMEDIATE',
162             'INCLUDES',
163             'INCLUDE_DIRECTORIES',
164             'INCLUDE_INTERNALS',
165             'INCLUDE_REGULAR_EXPRESSION',
166             'LESS',
167             'LINK_DIRECTORIES',
168             'LINK_FLAGS',
169             'LOCATION',
170             'MACOSX_BUNDLE',
171             'MACROS',
172             'MAIN_DEPENDENCY',
173             'MAKE_DIRECTORY',
174             'MATCH',
175             'MATCHALL',
176             'MATCHES',
177             'MODULE',
178             'NAME',
179             'NAME_WE',
180             'NOT',
181             'NOTEQUAL',
182             'NO_SYSTEM_PATH',
183             'OBJECT_DEPENDS',
184             'OPTIONAL',
185             'OR',
186             'OUTPUT',
187             'OUTPUT_VARIABLE',
188             'PATH',
189             'PATHS',
190             'POST_BUILD',
191             'POST_INSTALL_SCRIPT',
192             'PREFIX',
193             'PREORDER',
194             'PRE_BUILD',
195             'PRE_INSTALL_SCRIPT',
196             'PRE_LINK',
197             'PROGRAM',
198             'PROGRAM_ARGS',
199             'PROPERTIES',
200             'QUIET',
201             'RANGE',
202             'READ',
203             'REGEX',
204             'REGULAR_EXPRESSION',
205             'REPLACE',
206             'REQUIRED',
207             'RETURN_VALUE',
208             'RUNTIME_DIRECTORY',
209             'SEND_ERROR',
210             'SHARED',
211             'SOURCES',
212             'STATIC',
213             'STATUS',
214             'STREQUAL',
215             'STRGREATER',
216             'STRLESS',
217             'SUFFIX',
218             'TARGET',
219             'TOLOWER',
220             'TOUPPER',
221             'VAR',
222             'VARIABLES',
223             'VERSION',
224             'WIN32',
225             'WRAP_EXCLUDE',
226             'WRITE',
227             );
228 2         25 $self->contextdata({
229             'Function Args' => {
230             callback => \&parseFunctionArgs,
231             attribute => 'Normal Text',
232             },
233             'Normal Text' => {
234             callback => \&parseNormalText,
235             attribute => 'Normal Text',
236             },
237             });
238 2         11 $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
239 2         7 $self->basecontext('Normal Text');
240 2         9 $self->keywordscase(0);
241 2         8 $self->initialize;
242 2         4 bless ($self, $class);
243 2         10 return $self;
244             }
245              
246             sub language {
247 0     0 0 0 return 'CMake';
248             }
249              
250             sub parseFunctionArgs {
251 820     820 0 1395 my ($self, $text) = @_;
252             # attribute => 'Normal Text'
253             # char => ')'
254             # context => '#pop'
255             # type => 'DetectChar'
256 820 100       1969 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Normal Text')) {
257 16         38 return 1
258             }
259             # String => 'special_args'
260             # attribute => 'Special Args'
261             # context => '#stay'
262             # type => 'keyword'
263 804 100       2231 if ($self->testKeyword($text, 'special_args', 0, undef, 0, '#stay', 'Special Args')) {
264 22         65 return 1
265             }
266             # String => '#.*$'
267             # attribute => 'Comment'
268             # context => '#stay'
269             # type => 'RegExpr'
270 782 50       2232 if ($self->testRegExpr($text, '#.*$', 0, 0, 0, undef, 0, '#stay', 'Comment')) {
271 0         0 return 1
272             }
273             # String => '\$\{\s*\w+\s*\}'
274             # attribute => 'Variable'
275             # context => '#stay'
276             # type => 'RegExpr'
277 782 100       2132 if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) {
278 22         64 return 1
279             }
280 760         1815 return 0;
281             };
282              
283             sub parseNormalText {
284 1240     1240 0 2512 my ($self, $text) = @_;
285             # String => 'commands'
286             # attribute => 'Commands'
287             # context => 'Function Args'
288             # type => 'keyword'
289 1240 100       3565 if ($self->testKeyword($text, 'commands', 0, undef, 0, 'Function Args', 'Commands')) {
290 16         49 return 1
291             }
292             # String => '#\s*BEGIN.*$'
293             # attribute => 'Region Marker'
294             # beginRegion => 'block'
295             # context => '#stay'
296             # firstNonSpace => 'true'
297             # type => 'RegExpr'
298 1224 50       3880 if ($self->testRegExpr($text, '#\\s*BEGIN.*$', 0, 0, 0, undef, 1, '#stay', 'Region Marker')) {
299 0         0 return 1
300             }
301             # String => '#\s*END.*$'
302             # attribute => 'Region Marker'
303             # context => '#stay'
304             # endRegion => 'block'
305             # firstNonSpace => 'true'
306             # type => 'RegExpr'
307 1224 50       3821 if ($self->testRegExpr($text, '#\\s*END.*$', 0, 0, 0, undef, 1, '#stay', 'Region Marker')) {
308 0         0 return 1
309             }
310             # String => '#.*$'
311             # attribute => 'Comment'
312             # context => '#stay'
313             # type => 'RegExpr'
314 1224 50       3807 if ($self->testRegExpr($text, '#.*$', 0, 0, 0, undef, 0, '#stay', 'Comment')) {
315 0         0 return 1
316             }
317             # String => '\$\{\s*\w+\s*\}'
318             # attribute => 'Variable'
319             # context => '#stay'
320             # type => 'RegExpr'
321 1224 100       3798 if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) {
322 8         27 return 1
323             }
324             # String => '\s*\w+\s*(?=\(.*\))'
325             # attribute => 'Macros'
326             # context => '#stay'
327             # type => 'RegExpr'
328 1216 100       3688 if ($self->testRegExpr($text, '\\s*\\w+\\s*(?=\\(.*\\))', 0, 0, 0, undef, 0, '#stay', 'Macros')) {
329 4         14 return 1
330             }
331 1212         3258 return 0;
332             };
333              
334              
335             1;
336              
337             __END__