# Copyright (c) 2005 - 2006 Hans Jeuken. All rights reserved.
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
# This file was generated from the 'katexml/stata.xml' file of the syntax highlight
# engine of the kate text editor (http://kate.kde.org
#kate xml version 1.01
#kate version 2.1
#kate author Edwin Leuven (e.leuven@uva.nl)
#generated: Wed Nov 1 21:17:54 2006, localtime
package Syntax::Highlight::Engine::Kate::Stata;
use vars qw($VERSION);
$VERSION = '0.02';
use strict;
use warnings;
use base('Syntax::Highlight::Engine::Kate::Template');
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = $class->SUPER::new(@_);
$self->attributes({
'Comment' => 'Comment',
'Data Type' => 'DataType',
'Keyword' => 'Keyword',
'Macro' => 'Others',
'Normal Text' => 'Normal',
'String' => 'String',
});
$self->listAdd('keywords',
'_pctile',
'about',
'adjust',
'ado',
'alpha',
'anova',
'anovadef',
'append',
'arch',
'areg',
'args',
'arima',
'assert',
'bar',
'binreg',
'biprobit',
'bitest',
'boxcox',
'break',
'brier',
'browse',
'bstrap',
'by',
'canon',
'cap',
'capture',
'cat',
'cd',
'centile',
'cf',
'checksum',
'ci',
'class',
'clavg',
'clcomp',
'clear',
'clgen',
'clist',
'clkmeans',
'clkmed',
'clnote',
'clogit',
'cloglog',
'clsing',
'cltree',
'cluster',
'clutil',
'cmdlog',
'cnreg',
'cnsreg',
'codebook',
'collapse',
'compare',
'compress',
'confirm',
'constraint',
'continue',
'contract',
'copy',
'copyright',
'corr',
'corr2data',
'correlate',
'corrgram',
'count',
'cox',
'creturn',
'cross',
'ct',
'ctset',
'cttost',
'cumsp',
'cumul',
'cusum',
'datatypes',
'decode',
'define',
'describe',
'destring',
'dfuller',
'di',
'diagplots',
'dir',
'discard',
'display',
'do',
'doedit',
'dotplot',
'drawnorm',
'drop',
'dstdize',
'edit',
'egen',
'eivreg',
'else',
'encode',
'end',
'epitab',
'erase',
'ereturn',
'exit',
'expand',
'export',
'factor',
'fdadescribe',
'fdasave',
'fdause',
'file',
'filefilter',
'fillin',
'flist',
'for',
'foreach',
'format',
'forv',
'forval',
'forvalues',
'fracpoly',
'g',
'gen',
'generate',
'gettoken',
'glm',
'glogit',
'gprefs',
'gr',
'gr7',
'graph',
'graph7',
'grmeanby',
'gsort',
'hadimvo',
'hausman',
'haver',
'heckman',
'heckprob',
'help',
'hetprob',
'hexdump',
'hilite',
'hist',
'hotel',
'icd9',
'if',
'impute',
'in',
'infile',
'infile1',
'infile2',
'infiling',
'infix',
'input',
'insheet',
'inspect',
'ipolate',
'ivreg',
'jknife',
'joinby',
'kappa',
'kdensity',
'keep',
'ksm',
'ksmirnov',
'kwallis',
'label',
'ladder',
'levels',
'lfit',
'limits',
'lincom',
'line',
'linktest',
'list',
'lnskew0',
'log',
'logistic',
'logit',
'loneway',
'lowess',
'lroc',
'lrtest',
'lsens',
'lstat',
'ltable',
'lv',
'manova',
'manovatest',
'mark',
'markin',
'markout',
'marksample',
'matsize',
'maximize',
'means',
'median',
'memory',
'merge',
'mfx',
'mkdir',
'mkspline',
'ml',
'mleval',
'mlmatbysum',
'mlmatsum',
'mlogit',
'mlsum',
'mlvecsum',
'more',
'move',
'mvencode',
'mvreg',
'nbreg',
'net',
'newey',
'news',
'nl',
'nlogit',
'nobreak',
'nois',
'noisily',
'notes',
'nptrend',
'numlist',
'obs',
'odbc',
'ologit',
'oneway',
'oprobit',
'order',
'orthog',
'outfile',
'outsheet',
'parse',
'pcorr',
'pctile',
'pergram',
'pk',
'pkcollapse',
'pkcross',
'pkequiv',
'pkexamine',
'pkshape',
'pksumm',
'plot',
'poisson',
'post',
'postclose',
'postfile',
'postutil',
'pperron',
'prais',
'predict',
'preserve',
'probit',
'program',
'prtest',
'pwcorr',
'qc',
'qreg',
'quadchk',
'query',
'qui',
'quietly',
'range',
'ranksum',
'recast',
'recode',
'reg',
'reg3',
'regdiag',
'regress',
'rename',
'replace',
'reshape',
'restore',
'return',
'roc',
'rocplot',
'rotate',
'rreg',
'run',
'runtest',
'sample',
'sampsi',
'save',
'scatter',
'scobit',
'score',
'sdtest',
'search',
'separate',
'serrbar',
'set',
'shell',
'signrank',
'signtest',
'simul',
'sktest',
'smooth',
'snapspan',
'sort',
'spearman',
'spikeplot',
'sreturn',
'st',
'stack',
'statsby',
'stb',
'stbase',
'stci',
'stcox',
'stdes',
'stem',
'stfill',
'stgen',
'stir',
'stphplot',
'stptime',
'strate',
'streg',
'sts',
'stset',
'stsplit',
'stsum',
'sttocc',
'sttoct',
'stvary',
'sum',
'summarize',
'sureg',
'svy',
'svydes',
'svylc',
'svymean',
'svyset',
'svytab',
'svytest',
'sw',
'swilk',
'symmetry',
'syntax',
'tab',
'tabdisp',
'table',
'tabstat',
'tabsum',
'tabulate',
'tempfile',
'tempname',
'tempvar',
'test',
'testnl',
'tobit',
'tokenize',
'translate',
'translator',
'transmap',
'treatreg',
'truncreg',
'tsreport',
'tsrevar',
'tsset',
'ttest',
'tutorials',
'twoway',
'type',
'unabbr',
'unabcmd',
'update',
'use',
'using',
'vce',
'version',
'view',
'vwls',
'weibull',
'whelp',
'which',
'while',
'wntestb',
'wntestq',
'xcorr',
'xi',
'xpose',
'xt',
'xtabond',
'xtclog',
'xtdata',
'xtdes',
'xtgee',
'xtgls',
'xtile',
'xtintreg',
'xtivreg',
'xtlogit',
'xtnbreg',
'xtpcse',
'xtpois',
'xtprobit',
'xtrchh',
'xtreg',
'xtregar',
'xtsum',
'xttab',
'xttobit',
'zip',
);
$self->listAdd('types',
'char',
'double',
'error',
'float',
'global',
'int',
'local',
'long',
'macro',
'mat',
'matrix',
'result',
'scalar',
'text',
'var',
'variable',
'varlist',
'varname',
);
$self->contextdata({
'Comment 1' => {
callback => \&parseComment1,
attribute => 'Comment',
lineending => '#pop',
},
'Comment 2' => {
callback => \&parseComment2,
attribute => 'Comment',
},
'Normal' => {
callback => \&parseNormal,
attribute => 'Normal Text',
},
'string' => {
callback => \&parsestring,
attribute => 'String',
lineending => '#pop',
},
});
$self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
$self->basecontext('Normal');
$self->keywordscase(1);
$self->initialize;
bless ($self, $class);
return $self;
}
sub language {
return 'Stata';
}
sub parseComment1 {
my ($self, $text) = @_;
return 0;
};
sub parseComment2 {
my ($self, $text) = @_;
# type => Detect2Chars
if ($self->testDetect2Chars($text, '*', '/', 0, 0, 0, undef, 0, '#pop', 'Comment')) {
return 1
}
return 0;
};
sub parseNormal {
my ($self, $text) = @_;
# type => keyword
if ($self->testKeyword($text, 'keywords', 0, 0, undef, 0, '#stay', 'Keyword')) {
return 1
}
# type => keyword
if ($self->testKeyword($text, 'types', 0, 0, undef, 0, '#stay', 'Data Type')) {
return 1
}
# type => DetectChar
if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'string', 'String')) {
return 1
}
# type => RangeDetect
if ($self->testRangeDetect($text, '`', '\'', 0, 0, undef, 0, '#stay', 'Macro')) {
return 1
}
# type => Detect2Chars
if ($self->testDetect2Chars($text, '/', '/', 0, 0, 0, undef, 0, 'Comment 1', 'Comment')) {
return 1
}
# type => Detect2Chars
if ($self->testDetect2Chars($text, '/', '*', 0, 0, 0, undef, 0, 'Comment 2', 'Comment')) {
return 1
}
# type => DetectChar
if ($self->testDetectChar($text, '{', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
return 1
}
# type => DetectChar
if ($self->testDetectChar($text, '}', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
return 1
}
return 0;
};
sub parsestring {
my ($self, $text) = @_;
# type => HlCStringChar
if ($self->testHlCStringChar($text, 0, undef, 0, '#stay', 'String Char')) {
return 1
}
# type => DetectChar
if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, '#pop', 'String')) {
return 1
}
return 0;
};
1;
__END__
=head1 NAME
Syntax::Highlight::Engine::Kate::Stata - a Plugin for Stata syntax highlighting
=head1 SYNOPSIS
require Syntax::Highlight::Engine::Kate::Stata;
my $sh = new Syntax::Highlight::Engine::Kate::Stata([
]);
=head1 DESCRIPTION
Syntax::Highlight::Engine::Kate::Stata is a plugin module that provides syntax highlighting
for Stata to the Syntax::Haghlight::Engine::Kate highlighting engine.
This code is generated from the syntax definition files used
by the Kate project.
It works quite fine, but can use refinement and optimization.
It inherits Syntax::Higlight::Engine::Kate::Template. See also there.
=cut
=head1 AUTHOR
Hans Jeuken (haje <at> toneel <dot> demon <dot> nl)
=cut
=head1 BUGS
Unknown. If you find any, please contact the author
=cut