123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- /**
- * Name: ruby
- * Description: Ruby programming language.
- * Author: Mike Wilson <m.v.wilson@home.com>
- */
- state ruby_comment
- {
- /\*\\\// {
- language_print ($0);
- return;
- }
- LANGUAGE_SPECIALS {
- language_print ($0);
- }
- }
- state ruby_dquot_string
- {
- /\\\\./ {
- language_print ($0);
- }
- /\"/ {
- language_print ($0);
- return;
- }
- LANGUAGE_SPECIALS {
- language_print ($0);
- }
- }
- state ruby_quot_string
- {
- /\\\\./ {
- language_print ($0);
- }
- /[\']/ {
- language_print ($0);
- return;
- }
- LANGUAGE_SPECIALS {
- language_print ($0);
- }
- }
- state ruby_bquot_string
- {
- /\\\\./ {
- language_print ($0);
- }
- /`/ {
- language_print ($0);
- return;
- }
- LANGUAGE_SPECIALS {
- language_print ($0);
- }
- }
- state ruby
- {
- BEGIN {
- header ();
- }
- END {
- trailer ();
- }
- /* Comments. */
- /#[^{].*$/ {
- comment_face (true);
- language_print ($0);
- comment_face (false);
- }
- /* Ignore escaped quote marks */
- /\\\"/ {
- language_print ($0);
- }
- /\\\'/ {
- language_print ($0);
- }
- /\\\`/ {
- language_print ($0);
- }
- /* In cgi files, JavaScript might be imbedded, so we need to look out
- * for the JavaScript comments, because they might contain something
- * we don't like, like a contraction (don't, won't, etc.)
- * We won't put them in comment face, because they are not ruby
- * comments.
- */
- /\/\// {
- language_print ($0);
- call (eat_one_line);
- }
- /* String constants. */
- /\"/ {
- string_face (true);
- language_print ($0);
- call (ruby_dquot_string);
- string_face (false);
- }
- /[\']/ {
- string_face (true);
- language_print ($0);
- call (ruby_quot_string);
- string_face (false);
- }
- /* Backquoted command string */
- /`/ {
- string_face (true);
- language_print ($0);
- call (ruby_bquot_string);
- string_face (false);
- }
- /* Variables globals and instance */
- /[$@]\w+/ {
- variable_name_face (true);
- language_print ($0);
- variable_name_face (false);
- }
- /* Variables class variable */
- /@@\w+/ {
- variable_name_face (true);
- language_print ($0);
- variable_name_face (false);
- }
- /([ \t]*)(def)([ \t]+)([^(]*)/ {
- /* indentation */
- language_print ($1);
- /* def */
- keyword_face (true);
- language_print ($2);
- keyword_face (false);
- /* middle */
- language_print ($3);
- /* Function name. */
- function_name_face (true);
- language_print ($4);
- function_name_face (false);
- }
- /\$[!@&`'+~=\/\\,;.<>_*$?:"]/ {
- variable_name_face (true);
- language_print ($0);
- variable_name_face (false);
- }
- /* Highlighting
- --Type face
- private protected public
- --Builtin face (I consider these to be somewhat special)
- alias alias_method attr attr_accessor attr_reader attr_writer
- module_alias module_function self super
- --Reference face
- require include
- --Keyword face
- and begin break case class def defined? do else elsif end
- ensure eval extend false for if in method module next nil not
- or redo rescue retry return then true undef unless until when
- while yield
- */
- /\\b(private|protected|public)\\b/ {
- type_face (true);
- language_print ($0);
- type_face (false);
- }
- /\\b(alias|alias_method|attr|attr_accessor|attr_reader|attr_writer\\
- |module_alias|module_function|self|super)\\b/ {
- builtin_face (true);
- language_print ($0);
- builtin_face (false);
- }
- /\\b(include|require)\\b/ {
- reference_face (true);
- language_print ($0);
- reference_face (false);
- }
- /\\b(and|begin|break|case|class|def|defined?|do|else|elsif|end|ensure|eval\\
- |extend|false|for|if|in|method|module|next|nil|not|or|raise|redo|rescue|retry\\
- |return|then|true|undef|unless|until|when|while|yield)\\b/ {
- keyword_face (true);
- language_print ($0);
- keyword_face (false);
- }
- LANGUAGE_SPECIALS {
- language_print ($0);
- }
- }
- /*
- Local variables:
- mode: c
- End:
- */
|