| Syntax-Highlight-Engine-Kate documentation | Contained in the Syntax-Highlight-Engine-Kate distribution. |
Syntax::Highlight::Engine::Kate::POVminusRay - a Plugin for POV-Ray syntax highlighting
require Syntax::Highlight::Engine::Kate::POVminusRay; my $sh = new Syntax::Highlight::Engine::Kate::POVminusRay([ ]);
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.
Hans Jeuken (haje <at> toneel <dot> demon <dot> nl)
Unknown. If you find any, please contact the author
| Syntax-Highlight-Engine-Kate documentation | Contained in the Syntax-Highlight-Engine-Kate distribution. |
# 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; our $VERSION = '0.06'; 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__