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.16';
15              
16 1     1   940 use strict;
  1         3  
  1         47  
17 1     1   7 use warnings;
  1         3  
  1         71  
18 1     1   6 use base('Syntax::Highlight::Engine::Kate::Template');
  1         3  
  1         1132  
19              
20             sub new {
21 2     2 0 1082 my $proto = shift;
22 2   33     14 my $class = ref($proto) || $proto;
23 2         19 my $self = $class->SUPER::new(@_);
24 2         46 $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         18 $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         11 $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         21 $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         22 $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
239 2         12 $self->basecontext('Normal Text');
240 2         14 $self->keywordscase(0);
241 2         7 $self->initialize;
242 2         4 bless ($self, $class);
243 2         16 return $self;
244             }
245              
246             sub language {
247 0     0 0 0 return 'CMake';
248             }
249              
250             sub parseFunctionArgs {
251 820     820 0 2265 my ($self, $text) = @_;
252             # attribute => 'Normal Text'
253             # char => ')'
254             # context => '#pop'
255             # type => 'DetectChar'
256 820 100       2392 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Normal Text')) {
257 16         43 return 1
258             }
259             # String => 'special_args'
260             # attribute => 'Special Args'
261             # context => '#stay'
262             # type => 'keyword'
263 804 100       2595 if ($self->testKeyword($text, 'special_args', 0, undef, 0, '#stay', 'Special Args')) {
264 22         70 return 1
265             }
266             # String => '#.*$'
267             # attribute => 'Comment'
268             # context => '#stay'
269             # type => 'RegExpr'
270 782 50       2680 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       2323 if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) {
278 22         74 return 1
279             }
280 760         1866 return 0;
281             };
282              
283             sub parseNormalText {
284 1240     1240 0 2746 my ($self, $text) = @_;
285             # String => 'commands'
286             # attribute => 'Commands'
287             # context => 'Function Args'
288             # type => 'keyword'
289 1240 100       5842 if ($self->testKeyword($text, 'commands', 0, undef, 0, 'Function Args', 'Commands')) {
290 16         59 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       5528 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       4467 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       4051 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       3941 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       4217 if ($self->testRegExpr($text, '\\s*\\w+\\s*(?=\\(.*\\))', 0, 0, 0, undef, 0, '#stay', 'Macros')) {
329 4         14 return 1
330             }
331 1212         3552 return 0;
332             };
333              
334              
335             1;
336              
337             __END__