# 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 'povray.xml' file of the syntax highlight
# engine of the kate text editor (http://www.kate-editor.org

#kate xml version 1.04
#kate version 2.4
#generated: Sun Feb  3 22:02:06 2008, localtime

package Syntax::Highlight::Engine::Kate::POVminusRay;

use vars qw($VERSION);
$VERSION = '0.03';

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({
      'Char' => 'Char',
      'Comment' => 'Comment',
      'Constant' => 'Float',
      'Declaration' => 'Operator',
      'Declare Keyword' => 'Variable',
      'Declare Macro' => 'DecVal',
      'Directives' => 'Others',
      'Filetype' => 'DataType',
      'Float' => 'Float',
      'Functions' => 'Function',
      'Keyword' => 'Keyword',
      'Macro' => 'Operator',
      'Normal Text' => 'Normal',
      'Objects' => 'Keyword',
      'Region Marker' => 'RegionMarker',
      'String' => 'String',
      'String Char' => 'IString',
      'Symbol' => 'BString',
      'Texturing' => 'Keyword',
      'Transforms' => 'Keyword',
   });
   $self->listAdd('attention',
      '###',
      'FIXME',
      'TODO',
   );
   $self->listAdd('constants',
      'false',
      'no',
      'off',
      'on',
      'pi',
      'true',
      'yes',
   );
   $self->listAdd('directives',
      '#debug',
      '#default',
      '#else',
      '#end',
      '#error',
      '#fclose',
      '#fopen',
      '#if',
      '#ifdef',
      '#ifndef',
      '#include',
      '#range',
      '#read',
      '#render',
      '#statistics',
      '#switch',
      '#undef',
      '#version',
      '#warning',
      '#while',
      '#write',
   );
   $self->listAdd('filetypes',
      'df3',
      'gif',
      'iff',
      'jpeg',
      'pgm',
      'png',
      'pot',
      'ppm',
      'tga',
      'tiff',
      'ttf',
   );
   $self->listAdd('functions',
      'abs',
      'acos',
      'acosh',
      'asc',
      'asin',
      'asinh',
      'atan',
      'atan2',
      'atanh',
      'ceil',
      'chr',
      'concat',
      'cos',
      'cosh',
      'cube',
      'defined',
      'degress',
      'dimension_size',
      'dimensions',
      'div',
      'exp',
      'file_exists',
      'floor',
      'inside',
      'int',
      'ln',
      'log',
      'max',
      'min',
      'mod',
      'pow',
      'prod',
      'pwr',
      'radians',
      'rand',
      'seed',
      'select',
      'sin',
      'sinh',
      'sqrt',
      'str',
      'strcmp',
      'strlen',
      'strlwr',
      'strupr',
      'substr',
      'sum',
      'tan',
      'tanh',
      'trace',
      'val',
      'vaxis_rotate',
      'vcross',
      'vdot',
      'vlength',
      'vnormalize',
      'vrotate',
      'vstr',
      'vturbulence',
   );
   $self->listAdd('identifiers',
      'clock',
      'clock_delta',
      'clock_on',
      'final_clock',
      'final_frame',
      'frame_number',
      'image_height',
      'image_width',
      'initial_clock',
      'initial_frame',
      't',
      'u',
      'v',
      'x',
      'y',
      'z',
   );
   $self->listAdd('keywords',
      'aa_level',
      'aa_threshold',
      'abs',
      'absorption',
      'accuracy',
      'acos',
      'acosh',
      'adaptive',
      'adc_bailout',
      'agate',
      'agate_turb',
      'all',
      'all_intersections',
      'alpha',
      'altitude',
      'always_sample',
      'ambient',
      'ambient_light',
      'angle',
      'aperture',
      'append',
      'arc_angle',
      'area_light',
      'array',
      'asc',
      'ascii',
      'asin',
      'asinh',
      'assumed_gamma',
      'atan',
      'atan2',
      'atanh',
      'autostop',
      'average',
      'b_spline',
      'background',
      'bezier_spline',
      'bicubic_patch',
      'black_hole',
      'blob',
      'blue',
      'blur_samples',
      'bounded_by',
      'box',
      'boxed',
      'bozo',
      'brick',
      'brick_size',
      'brightness',
      'brilliance',
      'bump_map',
      'bump_size',
      'bumps',
      'camera',
      'caustics',
      'ceil',
      'cells',
      'charset',
      'checker',
      'chr',
      'circular',
      'clipped_by',
      'clock',
      'clock_delta',
      'clock_on',
      'collect',
      'color',
      'color_map',
      'colour',
      'colour_map',
      'component',
      'composite',
      'concat',
      'cone',
      'confidence',
      'conic_sweep',
      'conserve_energy',
      'contained_by',
      'control0',
      'control1',
      'coords',
      'cos',
      'cosh',
      'count',
      'crackle',
      'crand',
      'cube',
      'cubic',
      'cubic_spline',
      'cubic_wave',
      'cutaway_textures',
      'cylinder',
      'cylindrical',
      'defined',
      'degrees',
      'density',
      'density_file',
      'density_map',
      'dents',
      'df3',
      'difference',
      'diffuse',
      'dimension_size',
      'dimensions',
      'direction',
      'disc',
      'dispersion',
      'dispersion_samples',
      'dist_exp',
      'distance',
      'distance_maximum',
      'div',
      'double_illuminate',
      'eccentricity',
      'emission',
      'error_bound',
      'evaluate',
      'exp',
      'expand_thresholds',
      'exponent',
      'exterior',
      'extinction',
      'face_indices',
      'facets',
      'fade_color',
      'fade_colour',
      'fade_distance',
      'fade_power',
      'falloff',
      'falloff_angle',
      'false',
      'file_exists',
      'filter',
      'final_clock',
      'final_frame',
      'finish',
      'fisheye',
      'flatness',
      'flip',
      'floor',
      'focal_point',
      'fog',
      'fog_alt',
      'fog_offset',
      'fog_type',
      'form',
      'frame_number',
      'frequency',
      'fresnel',
      'function',
      'gather',
      'gif',
      'global',
      'global_lights',
      'global_settings',
      'gradient',
      'granite',
      'gray',
      'gray_threshold',
      'green',
      'height_field',
      'hexagon',
      'hf_gray_16',
      'hierarchy',
      'hollow',
      'hypercomplex',
      'iff',
      'image_height',
      'image_map',
      'image_pattern',
      'image_width',
      'initial_clock',
      'initial_frame',
      'inside',
      'inside_vector',
      'int',
      'interior',
      'interior_texture',
      'internal',
      'interpolate',
      'intersection',
      'intervals',
      'inverse',
      'ior',
      'irid',
      'irid_wavelength',
      'isosurface',
      'jitter',
      'jpeg',
      'julia',
      'julia_fractal',
      'lambda',
      'lathe',
      'leopard',
      'light_group',
      'light_source',
      'linear_spline',
      'linear_sweep',
      'ln',
      'load_file',
      'location',
      'log',
      'look_at',
      'looks_like',
      'low_error_factor',
      'magnet',
      'major_radius',
      'mandel',
      'map_type',
      'marble',
      'material',
      'material_map',
      'matrix',
      'max',
      'max_extent',
      'max_gradient',
      'max_intersections',
      'max_iteration',
      'max_sample',
      'max_trace',
      'max_trace_level',
      'media',
      'media_attenuation',
      'media_interaction',
      'merge',
      'mesh',
      'mesh2',
      'metallic',
      'method',
      'metric',
      'min',
      'min_extent',
      'minimum_reuse',
      'mod',
      'mortar',
      'natural_spline',
      'nearest_count',
      'no',
      'no_bump_scale',
      'no_image',
      'no_reflection',
      'no_shadow',
      'noise_generator',
      'normal',
      'normal',
      'normal_indices',
      'normal_map',
      'normal_vectors',
      'number_of_waves',
      'object',
      'octaves',
      'off',
      'offset',
      'omega',
      'omnimax',
      'on',
      'once',
      'onion',
      'open',
      'orient',
      'orientation',
      'orthographic',
      'panoramic',
      'parallel',
      'parametric',
      'pass_through',
      'pattern',
      'perspective',
      'pgm',
      'phase',
      'phong',
      'phong_size',
      'photons',
      'pi',
      'pigment',
      'pigment_map',
      'pigment_pattern',
      'planar',
      'plane',
      'png',
      'point_at',
      'poly',
      'poly_wave',
      'polygon',
      'pot',
      'pow',
      'ppm',
      'precision',
      'precompute',
      'pretrace_end',
      'pretrace_start',
      'prism',
      'prod',
      'projected_through',
      'pwr',
      'quadratic_spline',
      'quadric',
      'quartic',
      'quaternion',
      'quick_color',
      'quick_colour',
      'quilted',
      'radial',
      'radians',
      'radiosity',
      'radius',
      'rainbow',
      'ramp_wave',
      'rand',
      'range',
      'ratio',
      'reciprocal',
      'recursion_limit',
      'red',
      'reflection',
      'reflection_exponent',
      'refraction',
      'repeat',
      'rgb',
      'rgbf',
      'rgbft',
      'rgbt',
      'right',
      'ripples',
      'rotate',
      'roughness',
      'samples',
      'save_file',
      'scale',
      'scallop_wave',
      'scattering',
      'seed',
      'select',
      'shadowless',
      'sin',
      'sine_wave',
      'sinh',
      'size',
      'sky',
      'sky_sphere',
      'slice',
      'slope',
      'slope_map',
      'smooth',
      'smooth_triangle',
      'solid',
      'sor',
      'spacing',
      'specular',
      'sphere',
      'sphere_sweep',
      'spherical',
      'spiral1',
      'spiral2',
      'spline',
      'split_union',
      'spotlight',
      'spotted',
      'sqr',
      'sqrt',
      'statistics',
      'steps',
      'str',
      'strcmp',
      'strength',
      'strlen',
      'strlwr',
      'strupr',
      'sturm',
      'substr',
      'sum',
      'superellipsoid',
      'sys',
      't',
      'tan',
      'tanh',
      'target',
      'text',
      'texture',
      'texture_list',
      'texture_map',
      'tga',
      'thickness',
      'threshold',
      'tiff',
      'tightness',
      'tile2',
      'tiles',
      'tolerance',
      'toroidal',
      'torus',
      'trace',
      'transform',
      'translate',
      'transmit',
      'triangle',
      'triangle_wave',
      'true',
      'ttf',
      'turb_depth',
      'turbulence',
      'type',
      'u',
      'u_steps',
      'ultra_wide_angle',
      'union',
      'up',
      'use_alpha',
      'use_color',
      'use_colour',
      'use_index',
      'utf8',
      'uv_indices',
      'uv_mapping',
      'uv_vectors',
      'v',
      'v_steps',
      'val',
      'variance',
      'vaxis_rotate',
      'vcross',
      'vdot',
      'vertex_vectors',
      'vlength',
      'vnormalize',
      'vrotate',
      'vstr',
      'vturbulence',
      'warning',
      'warp',
      'water_level',
      'waves',
      'while',
      'width',
      'wood',
      'wrinkles',
      'write',
      'x',
      'y',
      'yes',
      'z',
   );
   $self->listAdd('objects',
      'bicubic_patch',
      'blob',
      'box',
      'cone',
      'cubic',
      'cylinder',
      'difference',
      'disc',
      'height_field',
      'intersection',
      'isosurface',
      'julia_fractal',
      'lathe',
      'light_source',
      'merge',
      'mesh',
      'mesh2',
      'object',
      'parametric',
      'plane',
      'poly',
      'polygon',
      'prism',
      'quadric',
      'quartic',
      'smooth_triangle',
      'sor',
      'sphere',
      'sphere_sweep',
      'superellipsoid',
      'text',
      'torus',
      'triangle',
      'union',
   );
   $self->listAdd('texturing',
      'aa_level',
      'aa_threshold',
      'absorption',
      'agate',
      'agate_turb',
      'ambient',
      'average',
      'black_hole',
      'blue',
      'boxed',
      'brick',
      'brick_size',
      'brilliance',
      'bump_map',
      'bump_size',
      'bumps',
      'caustics',
      'cells',
      'checker',
      'color',
      'color_map',
      'colour',
      'colour_map',
      'conserve_energy',
      'control0',
      'control1',
      'crackle',
      'crand',
      'cubic_wave',
      'cutaway_textures',
      'cylindrical',
      'density',
      'density_file',
      'density_map',
      'dents',
      'diffuse',
      'dist_exp',
      'double_illuminate',
      'eccentricity',
      'emission',
      'exponent',
      'exterior',
      'extinction',
      'facets',
      'fade_color',
      'fade_colour',
      'fade_distance',
      'fade_power',
      'filter',
      'finish',
      'form',
      'frequency',
      'fresnel',
      'gradient',
      'granite',
      'gray',
      'green',
      'hexagon',
      'hypercomplex',
      'image_map',
      'image_pattern',
      'interior',
      'interior_texture',
      'interpolate',
      'intervals',
      'ior',
      'irid',
      'irid_wavelength',
      'julia',
      'lambda',
      'leopard',
      'magnet',
      'mandel',
      'map_type',
      'marble',
      'material',
      'material_map',
      'media',
      'metallic',
      'method',
      'metric',
      'mortar',
      'no_bump_scale',
      'normal',
      'normal',
      'normal_map',
      'number_of_waves',
      'octaves',
      'omega',
      'once',
      'onion',
      'orientation',
      'phase',
      'phong',
      'phong_size',
      'pigment',
      'pigment_map',
      'pigment_pattern',
      'planar',
      'quaternion',
      'quick_color',
      'quick_colour',
      'quilted',
      'radial',
      'ramp_wave',
      'red',
      'reflection',
      'reflection_exponent',
      'repeat',
      'rgb',
      'rgbf',
      'rgbft',
      'rgbt',
      'ripples',
      'roughness',
      'samples',
      'scallop_wave',
      'scattering',
      'sine_wave',
      'slope',
      'slope_map',
      'solid',
      'specular',
      'spherical',
      'spiral1',
      'spiral2',
      'spotted',
      'texture',
      'texture_list',
      'texture_map',
      'tile2',
      'tiles',
      'toroidal',
      'transmit',
      'triangle_wave',
      'turb_depth',
      'turbulence',
      'use_alpha',
      'use_color',
      'use_colour',
      'use_index',
      'uv_mapping',
      'warp',
      'waves',
      'wood',
      'wrinkles',
   );
   $self->listAdd('transforms',
      'matrix',
      'rotate',
      'scale',
      'transform',
      'translate',
   );
   $self->contextdata({
      'Commentar' => {
         callback => \&parseCommentar,
         attribute => 'Comment',
      },
      'Commentar 1' => {
         callback => \&parseCommentar1,
         attribute => 'Comment',
         lineending => '#pop',
      },
      'Commentar 2' => {
         callback => \&parseCommentar2,
         attribute => 'Comment',
      },
      'Declaration' => {
         callback => \&parseDeclaration,
         attribute => 'Declaration',
         lineending => '#pop',
      },
      'Declare_Keyword' => {
         callback => \&parseDeclare_Keyword,
         attribute => 'Declare Keyword',
         lineending => '#pop',
      },
      'Declare_Macro' => {
         callback => \&parseDeclare_Macro,
         attribute => 'Declare Macro',
         lineending => '#pop',
      },
      'Macro' => {
         callback => \&parseMacro,
         attribute => 'Macro',
         lineending => '#pop',
      },
      'Normal' => {
         callback => \&parseNormal,
         attribute => 'Normal Text',
      },
      'String' => {
         callback => \&parseString,
         attribute => 'String',
         lineending => '#pop',
      },
   });
   $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
   $self->basecontext('Normal');
   $self->keywordscase(0);
   $self->initialize;
   bless ($self, $class);
   return $self;
}

sub language {
   return 'POV-Ray';
}

sub parseCommentar {
   my ($self, $text) = @_;
   # attribute => 'Comment'
   # char => '*'
   # char1 => '/'
   # context => '#pop'
   # type => 'Detect2Chars'
   if ($self->testDetect2Chars($text, '*', '/', 0, 0, 0, undef, 0, '#pop', 'Comment')) {
      return 1
   }
   return 0;
};

sub parseCommentar1 {
   my ($self, $text) = @_;
   # String => 'attention'
   # attribute => 'Decimal'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'attention', 0, undef, 0, '#stay', 'Decimal')) {
      return 1
   }
   return 0;
};

sub parseCommentar2 {
   my ($self, $text) = @_;
   # String => 'attention'
   # attribute => 'Decimal'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'attention', 0, undef, 0, '#stay', 'Decimal')) {
      return 1
   }
   # attribute => 'Comment'
   # char => '*'
   # char1 => '/'
   # context => '#pop'
   # endRegion => 'Comment'
   # type => 'Detect2Chars'
   if ($self->testDetect2Chars($text, '*', '/', 0, 0, 0, undef, 0, '#pop', 'Comment')) {
      return 1
   }
   return 0;
};

sub parseDeclaration {
   my ($self, $text) = @_;
   # String => '\w+'
   # attribute => 'Declare Keyword'
   # context => 'Declare_Keyword'
   # type => 'RegExpr'
   if ($self->testRegExpr($text, '\\w+', 0, 0, 0, undef, 0, 'Declare_Keyword', 'Declare Keyword')) {
      return 1
   }
   # attribute => 'Declaration'
   # context => '#stay'
   # type => 'LineContinue'
   if ($self->testLineContinue($text, 0, undef, 0, '#stay', 'Declaration')) {
      return 1
   }
   # String => '=[('
   # attribute => 'Symbol'
   # context => '#pop#pop'
   # type => 'AnyChar'
   if ($self->testAnyChar($text, '=[(', 0, 0, undef, 0, '#pop#pop', 'Symbol')) {
      return 1
   }
   return 0;
};

sub parseDeclare_Keyword {
   my ($self, $text) = @_;
   # attribute => 'Declare Keyword'
   # context => '#stay'
   # type => 'LineContinue'
   if ($self->testLineContinue($text, 0, undef, 0, '#stay', 'Declare Keyword')) {
      return 1
   }
   # String => '=[('
   # attribute => 'Symbol'
   # context => '#pop#pop'
   # type => 'AnyChar'
   if ($self->testAnyChar($text, '=[(', 0, 0, undef, 0, '#pop#pop', 'Symbol')) {
      return 1
   }
   return 0;
};

sub parseDeclare_Macro {
   my ($self, $text) = @_;
   # attribute => 'Declare Macro'
   # context => '#stay'
   # type => 'LineContinue'
   if ($self->testLineContinue($text, 0, undef, 0, '#stay', 'Declare Macro')) {
      return 1
   }
   # attribute => 'Symbol'
   # char => '('
   # context => '#pop#pop'
   # type => 'DetectChar'
   if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, '#pop#pop', 'Symbol')) {
      return 1
   }
   return 0;
};

sub parseMacro {
   my ($self, $text) = @_;
   # String => '\w+'
   # attribute => 'Declare Macro'
   # context => 'Declare_Macro'
   # type => 'RegExpr'
   if ($self->testRegExpr($text, '\\w+', 0, 0, 0, undef, 0, 'Declare_Macro', 'Declare Macro')) {
      return 1
   }
   # attribute => 'Macro'
   # context => '#stay'
   # type => 'LineContinue'
   if ($self->testLineContinue($text, 0, undef, 0, '#stay', 'Macro')) {
      return 1
   }
   # attribute => 'Symbol'
   # char => '('
   # context => '#pop#pop'
   # type => 'DetectChar'
   if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, '#pop#pop', 'Symbol')) {
      return 1
   }
   return 0;
};

sub parseNormal {
   my ($self, $text) = @_;
   # String => '#declare'
   # attribute => 'Declaration'
   # context => 'Declaration'
   # type => 'StringDetect'
   if ($self->testStringDetect($text, '#declare', 0, 0, 0, undef, 0, 'Declaration', 'Declaration')) {
      return 1
   }
   # String => '#local'
   # attribute => 'Declaration'
   # context => 'Declaration'
   # type => 'StringDetect'
   if ($self->testStringDetect($text, '#local', 0, 0, 0, undef, 0, 'Declaration', 'Declaration')) {
      return 1
   }
   # String => '#macro'
   # attribute => 'Macro'
   # context => 'Macro'
   # type => 'StringDetect'
   if ($self->testStringDetect($text, '#macro', 0, 0, 0, undef, 0, 'Macro', 'Macro')) {
      return 1
   }
   # String => 'objects'
   # attribute => 'Objects'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'objects', 0, undef, 0, '#stay', 'Objects')) {
      return 1
   }
   # String => 'texturing'
   # attribute => 'Texturing'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'texturing', 0, undef, 0, '#stay', 'Texturing')) {
      return 1
   }
   # String => 'transforms'
   # attribute => 'Transforms'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'transforms', 0, undef, 0, '#stay', 'Transforms')) {
      return 1
   }
   # String => 'filetypes'
   # attribute => 'Filetype'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'filetypes', 0, undef, 0, '#stay', 'Filetype')) {
      return 1
   }
   # String => 'identifiers'
   # attribute => 'Keyword'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'identifiers', 0, undef, 0, '#stay', 'Keyword')) {
      return 1
   }
   # String => 'constants'
   # attribute => 'Constant'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'constants', 0, undef, 0, '#stay', 'Constant')) {
      return 1
   }
   # String => 'functions'
   # attribute => 'Functions'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'functions', 0, undef, 0, '#stay', 'Functions')) {
      return 1
   }
   # String => 'directives'
   # attribute => 'Directives'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'directives', 0, undef, 0, '#stay', 'Directives')) {
      return 1
   }
   # String => 'keywords'
   # attribute => 'Keyword'
   # context => '#stay'
   # type => 'keyword'
   if ($self->testKeyword($text, 'keywords', 0, undef, 0, '#stay', 'Keyword')) {
      return 1
   }
   # attribute => 'Float'
   # context => '#stay'
   # type => 'Float'
   if ($self->testFloat($text, 0, undef, 0, '#stay', 'Float')) {
      return 1
   }
   # attribute => 'Float'
   # context => '#stay'
   # type => 'Int'
   if ($self->testInt($text, 0, undef, 0, '#stay', 'Float')) {
      return 1
   }
   # attribute => 'Char'
   # context => '#stay'
   # type => 'HlCChar'
   if ($self->testHlCChar($text, 0, undef, 0, '#stay', 'Char')) {
      return 1
   }
   # attribute => 'String'
   # char => '"'
   # context => 'String'
   # type => 'DetectChar'
   if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'String', 'String')) {
      return 1
   }
   # String => '//\s*BEGIN.*$'
   # attribute => 'Region Marker'
   # beginRegion => 'Region1'
   # context => '#stay'
   # firstNonSpace => 'true'
   # type => 'RegExpr'
   if ($self->testRegExpr($text, '//\\s*BEGIN.*$', 0, 0, 0, undef, 1, '#stay', 'Region Marker')) {
      return 1
   }
   # String => '//\s*END.*$'
   # attribute => 'Region Marker'
   # context => '#stay'
   # endRegion => 'Region1'
   # firstNonSpace => 'true'
   # type => 'RegExpr'
   if ($self->testRegExpr($text, '//\\s*END.*$', 0, 0, 0, undef, 1, '#stay', 'Region Marker')) {
      return 1
   }
   # attribute => 'Comment'
   # char => '/'
   # char1 => '/'
   # context => 'Commentar 1'
   # type => 'Detect2Chars'
   if ($self->testDetect2Chars($text, '/', '/', 0, 0, 0, undef, 0, 'Commentar 1', 'Comment')) {
      return 1
   }
   # attribute => 'Comment'
   # beginRegion => 'Comment'
   # char => '/'
   # char1 => '*'
   # context => 'Commentar 2'
   # type => 'Detect2Chars'
   if ($self->testDetect2Chars($text, '/', '*', 0, 0, 0, undef, 0, 'Commentar 2', 'Comment')) {
      return 1
   }
   # attribute => 'Symbol'
   # beginRegion => 'Brace1'
   # char => '{'
   # context => '#stay'
   # type => 'DetectChar'
   if ($self->testDetectChar($text, '{', 0, 0, 0, undef, 0, '#stay', 'Symbol')) {
      return 1
   }
   # attribute => 'Symbol'
   # char => '}'
   # context => '#stay'
   # endRegion => 'Brace1'
   # type => 'DetectChar'
   if ($self->testDetectChar($text, '}', 0, 0, 0, undef, 0, '#stay', 'Symbol')) {
      return 1
   }
   # String => ':!%&()+,-/.*<=>?[]{|}~^;'
   # attribute => 'Symbol'
   # context => '#stay'
   # type => 'AnyChar'
   if ($self->testAnyChar($text, ':!%&()+,-/.*<=>?[]{|}~^;', 0, 0, undef, 0, '#stay', 'Symbol')) {
      return 1
   }
   return 0;
};

sub parseString {
   my ($self, $text) = @_;
   # attribute => 'String'
   # context => '#stay'
   # type => 'LineContinue'
   if ($self->testLineContinue($text, 0, undef, 0, '#stay', 'String')) {
      return 1
   }
   # attribute => 'String Char'
   # context => '#stay'
   # type => 'HlCStringChar'
   if ($self->testHlCStringChar($text, 0, undef, 0, '#stay', 'String Char')) {
      return 1
   }
   # attribute => 'String'
   # char => '"'
   # context => '#pop'
   # 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::POVminusRay - a Plugin for POV-Ray syntax highlighting

=head1 SYNOPSIS

 require Syntax::Highlight::Engine::Kate::POVminusRay;
 my $sh = new Syntax::Highlight::Engine::Kate::POVminusRay([
 ]);

=head1 DESCRIPTION

Syntax::Highlight::Engine::Kate::POVminusRay is a  plugin module that provides syntax highlighting
for POV-Ray 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

