You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-text/enscript/files/ruby.st

213 lines
3.8 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

/**
* 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:
*/