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.14';
15              
16 1     1   475 use strict;
  1         2  
  1         23  
17 1     1   5 use warnings;
  1         1  
  1         22  
18 1     1   5 use base('Syntax::Highlight::Engine::Kate::Template');
  1         1  
  1         628  
19              
20             sub new {
21 2     2 0 504 my $proto = shift;
22 2   33     9 my $class = ref($proto) || $proto;
23 2         9 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         10 $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         24 $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         9 $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
239 2         8 $self->basecontext('Normal Text');
240 2         7 $self->keywordscase(0);
241 2         5 $self->initialize;
242 2         4 bless ($self, $class);
243 2         8 return $self;
244             }
245              
246             sub language {
247 0     0 0 0 return 'CMake';
248             }
249              
250             sub parseFunctionArgs {
251 820     820 0 1202 my ($self, $text) = @_;
252             # attribute => 'Normal Text'
253             # char => ')'
254             # context => '#pop'
255             # type => 'DetectChar'
256 820 100       1756 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Normal Text')) {
257 16         34 return 1
258             }
259             # String => 'special_args'
260             # attribute => 'Special Args'
261             # context => '#stay'
262             # type => 'keyword'
263 804 100       1769 if ($self->testKeyword($text, 'special_args', 0, undef, 0, '#stay', 'Special Args')) {
264 22         47 return 1
265             }
266             # String => '#.*$'
267             # attribute => 'Comment'
268             # context => '#stay'
269             # type => 'RegExpr'
270 782 50       1769 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       1734 if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) {
278 22         48 return 1
279             }
280 760         1350 return 0;
281             };
282              
283             sub parseNormalText {
284 1240     1240 0 1904 my ($self, $text) = @_;
285             # String => 'commands'
286             # attribute => 'Commands'
287             # context => 'Function Args'
288             # type => 'keyword'
289 1240 100       2711 if ($self->testKeyword($text, 'commands', 0, undef, 0, 'Function Args', 'Commands')) {
290 16         39 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       2835 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       3036 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       2761 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       2634 if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) {
322 8         20 return 1
323             }
324             # String => '\s*\w+\s*(?=\(.*\))'
325             # attribute => 'Macros'
326             # context => '#stay'
327             # type => 'RegExpr'
328 1216 100       2830 if ($self->testRegExpr($text, '\\s*\\w+\\s*(?=\\(.*\\))', 0, 0, 0, undef, 0, '#stay', 'Macros')) {
329 4         11 return 1
330             }
331 1212         2337 return 0;
332             };
333              
334              
335             1;
336              
337             __END__