File Coverage

blib/lib/Syntax/Highlight/Engine/Kate/SQL_MySQL.pm
Criterion Covered Total %
statement 24 97 24.7
branch 0 60 0.0
condition 1 3 33.3
subroutine 4 11 36.3
pod 0 8 0.0
total 29 179 16.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 'sql-mysql.xml' file of the syntax highlight
6             # engine of the kate text editor (http://www.kate-editor.org
7              
8             #kate xml version 1.08
9             #kate version 2.4
10             #kate author Shane Wright (me@shanewright.co.uk)
11             #generated: Sun Feb 3 22:02:06 2008, localtime
12              
13             package Syntax::Highlight::Engine::Kate::SQL_MySQL;
14              
15             our $VERSION = '0.14';
16              
17 1     1   495 use strict;
  1         2  
  1         24  
18 1     1   4 use warnings;
  1         2  
  1         22  
19 1     1   6 use base('Syntax::Highlight::Engine::Kate::Template');
  1         1  
  1         1128  
20              
21             sub new {
22 1     1 0 542 my $proto = shift;
23 1   33     6 my $class = ref($proto) || $proto;
24 1         6 my $self = $class->SUPER::new(@_);
25 1         10 $self->attributes({
26             'Comment' => 'Comment',
27             'Data Type' => 'DataType',
28             'Decimal' => 'DecVal',
29             'Float' => 'Float',
30             'Function' => 'Function',
31             'Identifier' => 'Others',
32             'Keyword' => 'Keyword',
33             'Normal Text' => 'Normal',
34             'Operator' => 'Normal',
35             'Preprocessor' => 'Others',
36             'String' => 'String',
37             'String Char' => 'Char',
38             'Symbol' => 'Char',
39             });
40 1         6 $self->listAdd('functions',
41             'ABS',
42             'ACOS',
43             'ADDDATE',
44             'AES_DECRYPT',
45             'AES_ENCRYPT',
46             'ASCII',
47             'ASIN',
48             'ATAN',
49             'ATAN2',
50             'AVG',
51             'BENCHMARK',
52             'BIN',
53             'BIT_AND',
54             'BIT_COUNT',
55             'BIT_LENGTH',
56             'BIT_OR',
57             'CAST',
58             'CEILING',
59             'CHAR',
60             'CHARACTER_LENGTH',
61             'CHAR_LENGTH',
62             'CONCAT',
63             'CONCAT_WS',
64             'CONNECTION_ID',
65             'CONV',
66             'CONVERT',
67             'COS',
68             'COT',
69             'COUNT',
70             'CURDATE',
71             'CURRENT_DATE',
72             'CURRENT_TIME',
73             'CURRENT_TIMESTAMP',
74             'CURTIME',
75             'DATABASE',
76             'DATE_ADD',
77             'DATE_FORMAT',
78             'DATE_SUB',
79             'DAYNAME',
80             'DAYOFMONTH',
81             'DAYOFWEEK',
82             'DAYOFYEAR',
83             'DECODE',
84             'DEGREES',
85             'DES_DECRYPT',
86             'DES_ENCRYPT',
87             'ELT',
88             'ENCODE',
89             'ENCRYPT',
90             'EXP',
91             'EXPORT_SET',
92             'EXTRACT',
93             'FIELD',
94             'FIND_IN_SET',
95             'FLOOR',
96             'FORMAT',
97             'FOUND_ROWS',
98             'FROM_DAYS',
99             'FROM_UNIXTIME',
100             'GET_LOCK',
101             'GREATEST',
102             'HEX',
103             'HOUR',
104             'INET_ATON',
105             'INET_NTOA',
106             'INSERT',
107             'INSTR',
108             'IS_FREE_LOCK',
109             'LAST_INSERT_ID',
110             'LCASE',
111             'LEAST',
112             'LEFT',
113             'LENGTH',
114             'LN',
115             'LOAD_FILE',
116             'LOCATE',
117             'LOG',
118             'LOG10',
119             'LOG2',
120             'LOWER',
121             'LPAD',
122             'LTRIM',
123             'MAKE_SET',
124             'MASTER_POS_WAIT',
125             'MAX',
126             'MD5',
127             'MID',
128             'MIN',
129             'MINUTE',
130             'MOD',
131             'MONTH',
132             'MONTHNAME',
133             'NOW',
134             'OCT',
135             'OCTET_LENGTH',
136             'ORD',
137             'PASSWORD',
138             'PERIOD_ADD',
139             'PERIOD_DIFF',
140             'PI',
141             'POSITION',
142             'POW',
143             'POWER',
144             'QUARTER',
145             'QUOTE',
146             'RADIANS',
147             'RAND',
148             'RELEASE_LOCK',
149             'REPEAT',
150             'REPLACE',
151             'REVERSE',
152             'RIGHT',
153             'ROUND',
154             'RPAD',
155             'RTRIM',
156             'SECOND',
157             'SEC_TO_TIME',
158             'SESSION_USER',
159             'SHA',
160             'SHA1',
161             'SIGN',
162             'SIN',
163             'SOUNDEX',
164             'SPACE',
165             'SQRT',
166             'STD',
167             'STDDEV',
168             'SUBDATE',
169             'SUBSTRING',
170             'SUBSTRING_INDEX',
171             'SUM',
172             'SYSDATE',
173             'SYSTEM_USER',
174             'TAN',
175             'TIME_FORMAT',
176             'TIME_TO_SEC',
177             'TO_DAYS',
178             'TRIM',
179             'TRUNCATE',
180             'UCASE',
181             'UNIX_TIMESTAMP',
182             'UPPER',
183             'USER',
184             'VERSION',
185             'WEEK',
186             'WEEKDAY',
187             'YEAR',
188             'YEARWEEK',
189             );
190 1         7 $self->listAdd('keywords',
191             'ACCESS',
192             'ADD',
193             'ALL',
194             'ALTER',
195             'ANALYZE',
196             'AND',
197             'AS',
198             'ASC',
199             'AUTO_INCREMENT',
200             'BDB',
201             'BERKELEYDB',
202             'BETWEEN',
203             'BOTH',
204             'BY',
205             'CASCADE',
206             'CASE',
207             'CHANGE',
208             'COLUMN',
209             'COLUMNS',
210             'CONSTRAINT',
211             'CREATE',
212             'CROSS',
213             'CURRENT_DATE',
214             'CURRENT_TIME',
215             'CURRENT_TIMESTAMP',
216             'DATABASE',
217             'DATABASES',
218             'DAY_HOUR',
219             'DAY_MINUTE',
220             'DAY_SECOND',
221             'DEC',
222             'DEFAULT',
223             'DELAYED',
224             'DELETE',
225             'DESC',
226             'DESCRIBE',
227             'DISTINCT',
228             'DISTINCTROW',
229             'DROP',
230             'ELSE',
231             'ENCLOSED',
232             'ESCAPED',
233             'EXISTS',
234             'EXPLAIN',
235             'FIELDS',
236             'FOR',
237             'FOREIGN',
238             'FROM',
239             'FULLTEXT',
240             'FUNCTION',
241             'GRANT',
242             'GROUP',
243             'HAVING',
244             'HIGH_PRIORITY',
245             'IF',
246             'IGNORE',
247             'IN',
248             'INDEX',
249             'INFILE',
250             'INNER',
251             'INNODB',
252             'INSERT',
253             'INTERVAL',
254             'INTO',
255             'IS',
256             'JOIN',
257             'KEY',
258             'KEYS',
259             'KILL',
260             'LEADING',
261             'LEFT',
262             'LIKE',
263             'LIMIT',
264             'LINES',
265             'LOAD',
266             'LOCK',
267             'LOW_PRIORITY',
268             'MASTER_SERVER_ID',
269             'MATCH',
270             'MRG_MYISAM',
271             'NATURAL',
272             'NOT',
273             'NULL',
274             'NUMERIC',
275             'ON',
276             'OPTIMIZE',
277             'OPTION',
278             'OPTIONALLY',
279             'OR',
280             'ORDER',
281             'OUTER',
282             'OUTFILE',
283             'PARTIAL',
284             'PRECISION',
285             'PRIMARY',
286             'PRIVILEGES',
287             'PROCEDURE',
288             'PURGE',
289             'READ',
290             'REFERENCES',
291             'REGEXP',
292             'RENAME',
293             'REPLACE',
294             'REQUIRE',
295             'RESTRICT',
296             'RETURNS',
297             'REVOKE',
298             'RIGHT',
299             'RLIKE',
300             'SELECT',
301             'SET',
302             'SHOW',
303             'SONAME',
304             'SQL_BIG_RESULT',
305             'SQL_CALC_FOUND_ROWS',
306             'SQL_SMALL_RESULT',
307             'SSL',
308             'STARTING',
309             'STRAIGHT_JOIN',
310             'STRIPED',
311             'TABLE',
312             'TABLES',
313             'TERMINATED',
314             'THEN',
315             'TO',
316             'TRAILING',
317             'UNION',
318             'UNIQUE',
319             'UNLOCK',
320             'UNSIGNED',
321             'UPDATE',
322             'USAGE',
323             'USE',
324             'USER_RESOURCES',
325             'USING',
326             'VALUES',
327             'VARYING',
328             'WHEN',
329             'WHERE',
330             'WITH',
331             'WRITE',
332             'XOR',
333             'YEAR_MONTH',
334             'ZEROFILL',
335             );
336 1         5 $self->listAdd('operators',
337             '!=',
338             '*',
339             '**',
340             '+',
341             '-',
342             '..',
343             '/',
344             ':=',
345             '<',
346             '<=',
347             '<>',
348             '=',
349             '=>',
350             '>',
351             '>=',
352             '^=',
353             '||',
354             '~=',
355             );
356 1         4 $self->listAdd('types',
357             'BIGINT',
358             'BINARY',
359             'BLOB',
360             'CHAR',
361             'CHARACTER',
362             'DECIMAL',
363             'DOUBLE',
364             'FLOAT',
365             'HOUR_MINUTE',
366             'HOUR_SECOND',
367             'INT',
368             'INTEGER',
369             'LONG',
370             'LONGBLOB',
371             'LONGTEXT',
372             'MEDIUMBLOB',
373             'MEDIUMINT',
374             'MEDIUMTEXT',
375             'MIDDLEINT',
376             'MINUTE_SECOND',
377             'REAL',
378             'SMALLINT',
379             'TEXT',
380             'TINYBLOB',
381             'TINYINT',
382             'TINYTEXT',
383             'VARBINARY',
384             'VARCHAR',
385             );
386 1         11 $self->contextdata({
387             'Identifier' => {
388             callback => \&parseIdentifier,
389             attribute => 'Identifier',
390             lineending => '#pop',
391             },
392             'MultiLineComment' => {
393             callback => \&parseMultiLineComment,
394             attribute => 'Comment',
395             },
396             'Normal' => {
397             callback => \&parseNormal,
398             attribute => 'Normal Text',
399             },
400             'Preprocessor' => {
401             callback => \&parsePreprocessor,
402             attribute => 'Preprocessor',
403             lineending => '#pop',
404             },
405             'SingleLineComment' => {
406             callback => \&parseSingleLineComment,
407             attribute => 'Comment',
408             lineending => '#pop',
409             },
410             'String' => {
411             callback => \&parseString,
412             attribute => 'String',
413             },
414             });
415 1         5 $self->deliminators('\\s||\\(|\\)|,|\\%|\\&|;|\\?|\\[|\\]|\\{|\\}|\\\\|\\+|-|\\*|\\/|\\||=|\\!|<|>|\\~|\\^|:|\\.');
416 1         4 $self->basecontext('Normal');
417 1         6 $self->keywordscase(0);
418 1         2 $self->initialize;
419 1         2 bless ($self, $class);
420 1         3 return $self;
421             }
422              
423             sub language {
424 0     0 0   return 'SQL (MySQL)';
425             }
426              
427             sub parseIdentifier {
428 0     0 0   my ($self, $text) = @_;
429             # attribute => 'Identifier'
430             # char => '"'
431             # context => '#pop'
432             # type => 'DetectChar'
433 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, '#pop', 'Identifier')) {
434 0           return 1
435             }
436 0           return 0;
437             };
438              
439             sub parseMultiLineComment {
440 0     0 0   my ($self, $text) = @_;
441             # attribute => 'Comment'
442             # context => '#pop'
443             # type => 'LineContinue'
444 0 0         if ($self->testLineContinue($text, 0, undef, 0, '#pop', 'Comment')) {
445 0           return 1
446             }
447             # attribute => 'Comment'
448             # char => '*'
449             # char1 => '/'
450             # context => '#pop'
451             # endRegion => 'Comment'
452             # type => 'Detect2Chars'
453 0 0         if ($self->testDetect2Chars($text, '*', '/', 0, 0, 0, undef, 0, '#pop', 'Comment')) {
454 0           return 1
455             }
456 0           return 0;
457             };
458              
459             sub parseNormal {
460 0     0 0   my ($self, $text) = @_;
461             # String => 'keywords'
462             # attribute => 'Keyword'
463             # context => '#stay'
464             # type => 'keyword'
465 0 0         if ($self->testKeyword($text, 'keywords', 0, undef, 0, '#stay', 'Keyword')) {
466 0           return 1
467             }
468             # String => 'operators'
469             # attribute => 'Operator'
470             # context => '#stay'
471             # type => 'keyword'
472 0 0         if ($self->testKeyword($text, 'operators', 0, undef, 0, '#stay', 'Operator')) {
473 0           return 1
474             }
475             # String => 'functions'
476             # attribute => 'Function'
477             # context => '#stay'
478             # type => 'keyword'
479 0 0         if ($self->testKeyword($text, 'functions', 0, undef, 0, '#stay', 'Function')) {
480 0           return 1
481             }
482             # String => 'types'
483             # attribute => 'Data Type'
484             # context => '#stay'
485             # type => 'keyword'
486 0 0         if ($self->testKeyword($text, 'types', 0, undef, 0, '#stay', 'Data Type')) {
487 0           return 1
488             }
489             # String => '%bulk_exceptions\b'
490             # attribute => 'Data Type'
491             # context => '#stay'
492             # insensitive => 'true'
493             # type => 'RegExpr'
494 0 0         if ($self->testRegExpr($text, '%bulk_exceptions\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
495 0           return 1
496             }
497             # String => '%bulk_rowcount\b'
498             # attribute => 'Data Type'
499             # context => '#stay'
500             # insensitive => 'true'
501             # type => 'RegExpr'
502 0 0         if ($self->testRegExpr($text, '%bulk_rowcount\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
503 0           return 1
504             }
505             # String => '%found\b'
506             # attribute => 'Data Type'
507             # context => '#stay'
508             # insensitive => 'true'
509             # type => 'RegExpr'
510 0 0         if ($self->testRegExpr($text, '%found\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
511 0           return 1
512             }
513             # String => '%isopen\b'
514             # attribute => 'Data Type'
515             # context => '#stay'
516             # insensitive => 'true'
517             # type => 'RegExpr'
518 0 0         if ($self->testRegExpr($text, '%isopen\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
519 0           return 1
520             }
521             # String => '%notfound\b'
522             # attribute => 'Data Type'
523             # context => '#stay'
524             # insensitive => 'true'
525             # type => 'RegExpr'
526 0 0         if ($self->testRegExpr($text, '%notfound\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
527 0           return 1
528             }
529             # String => '%rowcount\b'
530             # attribute => 'Data Type'
531             # context => '#stay'
532             # insensitive => 'true'
533             # type => 'RegExpr'
534 0 0         if ($self->testRegExpr($text, '%rowcount\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
535 0           return 1
536             }
537             # String => '%rowtype\b'
538             # attribute => 'Data Type'
539             # context => '#stay'
540             # insensitive => 'true'
541             # type => 'RegExpr'
542 0 0         if ($self->testRegExpr($text, '%rowtype\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
543 0           return 1
544             }
545             # String => '%type\b'
546             # attribute => 'Data Type'
547             # context => '#stay'
548             # insensitive => 'true'
549             # type => 'RegExpr'
550 0 0         if ($self->testRegExpr($text, '%type\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
551 0           return 1
552             }
553             # attribute => 'Float'
554             # context => '#stay'
555             # type => 'Float'
556 0 0         if ($self->testFloat($text, 0, undef, 0, '#stay', 'Float')) {
557 0           return 1
558             }
559             # attribute => 'Decimal'
560             # context => '#stay'
561             # type => 'Int'
562 0 0         if ($self->testInt($text, 0, undef, 0, '#stay', 'Decimal')) {
563 0           return 1
564             }
565             # attribute => 'String'
566             # char => '''
567             # context => 'String'
568             # type => 'DetectChar'
569 0 0         if ($self->testDetectChar($text, '\'', 0, 0, 0, undef, 0, 'String', 'String')) {
570 0           return 1
571             }
572             # attribute => 'Comment'
573             # char => '#'
574             # context => 'SingleLineComment'
575             # type => 'DetectChar'
576 0 0         if ($self->testDetectChar($text, '#', 0, 0, 0, undef, 0, 'SingleLineComment', 'Comment')) {
577 0           return 1
578             }
579             # attribute => 'Comment'
580             # char => '-'
581             # char1 => '-'
582             # context => 'SingleLineComment'
583             # type => 'Detect2Chars'
584 0 0         if ($self->testDetect2Chars($text, '-', '-', 0, 0, 0, undef, 0, 'SingleLineComment', 'Comment')) {
585 0           return 1
586             }
587             # attribute => 'Comment'
588             # beginRegion => 'Comment'
589             # char => '/'
590             # char1 => '*'
591             # context => 'MultiLineComment'
592             # type => 'Detect2Chars'
593 0 0         if ($self->testDetect2Chars($text, '/', '*', 0, 0, 0, undef, 0, 'MultiLineComment', 'Comment')) {
594 0           return 1
595             }
596             # String => 'rem\b'
597             # attribute => 'Comment'
598             # column => '0'
599             # context => 'SingleLineComment'
600             # insensitive => 'true'
601             # type => 'RegExpr'
602 0 0         if ($self->testRegExpr($text, 'rem\\b', 1, 0, 0, 0, 0, 'SingleLineComment', 'Comment')) {
603 0           return 1
604             }
605             # attribute => 'Comment'
606             # char => '"'
607             # context => 'Identifier'
608             # type => 'DetectChar'
609 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'Identifier', 'Comment')) {
610 0           return 1
611             }
612             # String => ':&'
613             # attribute => 'Symbol'
614             # context => '#stay'
615             # type => 'AnyChar'
616 0 0         if ($self->testAnyChar($text, ':&', 0, 0, undef, 0, '#stay', 'Symbol')) {
617 0           return 1
618             }
619             # String => '/$'
620             # attribute => 'Symbol'
621             # column => '0'
622             # context => '#stay'
623             # type => 'RegExpr'
624 0 0         if ($self->testRegExpr($text, '/$', 0, 0, 0, 0, 0, '#stay', 'Symbol')) {
625 0           return 1
626             }
627             # String => '@@?[^@ \t\r\n]'
628             # attribute => 'Preprocessor'
629             # column => '0'
630             # context => 'Preprocessor'
631             # type => 'RegExpr'
632 0 0         if ($self->testRegExpr($text, '@@?[^@ \\t\\r\\n]', 0, 0, 0, 0, 0, 'Preprocessor', 'Preprocessor')) {
633 0           return 1
634             }
635 0           return 0;
636             };
637              
638             sub parsePreprocessor {
639 0     0 0   my ($self, $text) = @_;
640 0           return 0;
641             };
642              
643             sub parseSingleLineComment {
644 0     0 0   my ($self, $text) = @_;
645 0           return 0;
646             };
647              
648             sub parseString {
649 0     0 0   my ($self, $text) = @_;
650             # attribute => 'String'
651             # context => '#pop'
652             # type => 'LineContinue'
653 0 0         if ($self->testLineContinue($text, 0, undef, 0, '#pop', 'String')) {
654 0           return 1
655             }
656             # attribute => 'String Char'
657             # context => '#stay'
658             # type => 'HlCStringChar'
659 0 0         if ($self->testHlCStringChar($text, 0, undef, 0, '#stay', 'String Char')) {
660 0           return 1
661             }
662             # attribute => 'Symbol'
663             # char => '&'
664             # context => '#stay'
665             # type => 'DetectChar'
666 0 0         if ($self->testDetectChar($text, '&', 0, 0, 0, undef, 0, '#stay', 'Symbol')) {
667 0           return 1
668             }
669             # attribute => 'String'
670             # char => '''
671             # context => '#pop'
672             # type => 'DetectChar'
673 0 0         if ($self->testDetectChar($text, '\'', 0, 0, 0, undef, 0, '#pop', 'String')) {
674 0           return 1
675             }
676 0           return 0;
677             };
678              
679              
680             1;
681              
682             __END__