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.07';
15              
16 1     1   842 use strict;
  1         3  
  1         34  
17 1     1   5 use warnings;
  1         2  
  1         28  
18 1     1   6 use base('Syntax::Highlight::Engine::Kate::Template');
  1         2  
  1         849  
19              
20             sub new {
21 2     2 0 525 my $proto = shift;
22 2   33     12 my $class = ref($proto) || $proto;
23 2         16 my $self = $class->SUPER::new(@_);
24 2         21 $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         16 $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         9 $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         19 $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         10 $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
239 2         8 $self->basecontext('Normal Text');
240 2         12 $self->keywordscase(0);
241 2         6 $self->initialize;
242 2         6 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 1196 my ($self, $text) = @_;
252             # attribute => 'Normal Text'
253             # char => ')'
254             # context => '#pop'
255             # type => 'DetectChar'
256 820 100       2618 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Normal Text')) {
257 16         47 return 1
258             }
259             # String => 'special_args'
260             # attribute => 'Special Args'
261             # context => '#stay'
262             # type => 'keyword'
263 804 100       2515 if ($self->testKeyword($text, 'special_args', 0, undef, 0, '#stay', 'Special Args')) {
264 22         64 return 1
265             }
266             # String => '#.*$'
267             # attribute => 'Comment'
268             # context => '#stay'
269             # type => 'RegExpr'
270 782 50       2791 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       2391 if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) {
278 22         68 return 1
279             }
280 760         1791 return 0;
281             };
282              
283             sub parseNormalText {
284 1240     1240 0 1680 my ($self, $text) = @_;
285             # String => 'commands'
286             # attribute => 'Commands'
287             # context => 'Function Args'
288             # type => 'keyword'
289 1240 100       3773 if ($self->testKeyword($text, 'commands', 0, undef, 0, 'Function Args', 'Commands')) {
290 16         53 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       8191 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       4006 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       4013 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       3651 if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) {
322 8         21 return 1
323             }
324             # String => '\s*\w+\s*(?=\(.*\))'
325             # attribute => 'Macros'
326             # context => '#stay'
327             # type => 'RegExpr'
328 1216 100       4312 if ($self->testRegExpr($text, '\\s*\\w+\\s*(?=\\(.*\\))', 0, 0, 0, undef, 0, '#stay', 'Macros')) {
329 4         15 return 1
330             }
331 1212         4047 return 0;
332             };
333              
334              
335             1;
336              
337             __END__