alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

jEdit example source code file (ruby.xml)

This example jEdit source code file (ruby.xml) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - jEdit tags/keywords

begin, begin, delegate, end, end, keyword1, keyword3, operator, seq, span, span, span_regexp, type, type

The jEdit ruby.xml source code

<?xml version="1.0"?>
<!DOCTYPE MODE SYSTEM "xmode.dtd">
<!-- Ruby mode by Ian Maclean (Ruby edit mode v0.7.4) -->
<!-- tweakage by Chris Morris - clabs.org -->
<!-- further tweakage by Christophe Grandsire -->
<!-- further tweakage by Robert McKinnon 2004 -->
<!-- Major overhaul by Karl von Laudermann -->
<!-- More tweakage by Jim Morris (wolfmanjm), adds electric unindent for else, elsif, rescue, end -->
<!-- More tweakage by Jim Morris (wolfmanjm), fixed when statements for most cases -->
<!-- recommended mode catalog entry:
    <MODE NAME="ruby" FILE="ruby.xml" FILE_NAME_GLOB="*.{rb,rbw}" FIRST_LINE_GLOB="#!*/*ruby*" /> -->
<MODE>
	<PROPS>
		<PROPERTY NAME="indentOpenBrackets" VALUE="{"/>
		<PROPERTY NAME="indentCloseBrackets" VALUE="}"/>
		<PROPERTY NAME="unalignedOpenBrackets" VALUE="("/>
		<PROPERTY NAME="unalignedCloseBrackets" VALUE=")"/>
		<PROPERTY NAME="lineUpClosingBracket" VALUE="true"/>
		<PROPERTY NAME="commentStart" VALUE="=begin"/>
		<PROPERTY NAME="commentEnd" VALUE="=end"/>
		<PROPERTY NAME="lineComment" VALUE="#"/>
		<PROPERTY NAME="indentNextLines"
			  VALUE="[^#]*\s+do(\s*|(\s+\|.+\|\s*))|\s*(if\s+.*|elsif.*|else.*|do(\s*|\s+.*)|case\s+.*|when\s+.*|while\s+.*|for\s+.*|until\s+.*|loop\s+.*|def\s+.*|class\s+.*|module\s+.*|begin.*|unless\s+.*|rescue.*|ensure.*)+"/>
		<PROPERTY NAME="unindentThisLine" VALUE="^\s*(else.*|end\s*|elsif.*|rescue.*|when.*|ensure.*)$"/>
		<PROPERTY NAME="unindentNextLines" VALUE="^\s*(end\s*|else.*|rescue.*|elsif.*|when.*|ensure.*)$"/>
		<PROPERTY NAME="indentNextLine"
			  VALUE="^[^#]*([^$](:|\+|~|\*|-|%|<|>|&|\^|\.|=)|\s(/|\!|\?|\|)|\b(not|and|or)|\\)\s*$"/>
		<PROPERTY NAME="electricKeys" VALUE="edfn"/>
	</PROPS>
	<RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"
	       DIGIT_RE="(0b[01]([01_]*[01])?)|(0x[\p{XDigit}]([\p{XDigit}_]*[\p{XDigit}])?)|(0([0-7_]*[0-7])?)|(0d[0-9]([0-9_]*[0-9])?)|([1-9]([0-9_]*[0-9])?)|([0-9]([0-9_]*[0-9])?[Ee]([0-9]([0-9_]*[0-9])?)?)">
		<!--       ^ Binary literal    | ^ Hex literal                               | ^ Octal literal  | ^ "0d" Style Dec lit   | ^ Normal Dec literal | ^ Float literal w/out dec point, with exp. -->

		<!-- Ruby comment (Inline Documentation ) -->
		<SPAN TYPE="COMMENT2">
			<BEGIN>=begin
			<END>=end
		</SPAN>

		<!-- Class and instance vars -->
		<MARK_FOLLOWING TYPE="KEYWORD4">@


		<!-- Method, class and modules names -->
		<MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">def
		<MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">undef
		<MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">class
		<MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">module
		<!-- String literals -->
		<SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>"
			<END>"
		</SPAN>

		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>'
			<END>'
		</SPAN>

		<!-- %Q(Hello world) %(Hello world)-->
		<SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%Q?\(
			<END>)
		</SPAN_REGEXP>

		<!-- %q(Hello world) -->
		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%q(
			<END>)
		</SPAN>

		<!-- %Q{Hello world} %{Hello world} -->
		<SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%Q?\{
			<END>}
		</SPAN_REGEXP>

		<!-- %q{Hello world} -->
		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%q{
			<END>}
		</SPAN>

		<!-- %Q[Hello world] %[Hello world] -->
		<SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%Q?\[
			<END>]
		</SPAN_REGEXP>

		<!-- %q[Hello world] -->
		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%q[
			<END>]
		</SPAN>

		<!-- %Q -->
		<SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%Q?<
			<END>>
		</SPAN_REGEXP>

		<!-- %q
		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%q<
			<END>>
		</SPAN>

		<!-- I made the next three forms as three instead of two, because the
			 first two actually support whitespace as a delimiter, and the third
			 one doesn't. -->
		<!-- %Q$Hello world$ -->
		<SPAN_REGEXP HASH_CHAR="%Q" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%Q([^\p{Alnum}])
			<END>$1
		</SPAN_REGEXP>

		<!-- %q$Hello world$ -->
		<SPAN_REGEXP HASH_CHAR="%q" TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%q([^\p{Alnum}])
			<END>$1
		</SPAN_REGEXP>

		<!-- %$Hello world$ -->
		<SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%([^\p{Alnum}\p{Space}])
			<END>$1
		</SPAN_REGEXP>

		<!-- %W(Array of strings) -->
		<SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%W(
			<END>)
		</SPAN>

		<!-- %w(Array of strings) -->
		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%w(
			<END>)
		</SPAN>

		<!-- %W{Array of strings} -->
		<SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%W{
			<END>}
		</SPAN>

		<!-- %w{Array of strings} -->
		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%w{
			<END>}
		</SPAN>

		<!-- %W[Array of strings] -->
		<SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%W[
			<END>]
		</SPAN>

		<!-- %w[Array of strings] -->
		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%w[
			<END>]
		</SPAN>

		<!-- %W
		<SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%W<
			<END>>
		</SPAN>

		<!-- %w
		<SPAN TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%w<
			<END>>
		</SPAN>

		<!-- %W$Array of strings$ -->
		<SPAN_REGEXP HASH_CHAR="%W" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
			<BEGIN>%W([^\p{Alnum}\p{Space}])
			<END>$1
		</SPAN_REGEXP>

		<!-- %w@Array of strings@ -->
		<SPAN_REGEXP HASH_CHAR="%w" TYPE="LITERAL1" ESCAPE="\">
			<BEGIN>%w([^\p{Alnum}\p{Space}])
			<END>$1
		</SPAN_REGEXP>

		<!-- Here documents <<"FOO" <<-"FOO" -->
		<!-- Unfortunately, in a SPAN_REGEXP element only the 
			<END>$1
		</SPAN_REGEXP>

		<!-- Here documents <<'FOO' <<-'FOO' -->
		<!-- Unfortunately, in a SPAN_REGEXP element only the 
			<END>$1
		</SPAN_REGEXP>

		<!-- Here documents <
			<END>$1
		</SPAN_REGEXP>

		<!-- Shell command strings -->

		<!-- `echo foo` -->
		<SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
			<BEGIN>`
			<END>`
		</SPAN>

		<!-- %x(echo foo) -->
		<SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
			<BEGIN>%x(
			<END>)
		</SPAN>

		<!-- %x{echo foo} -->
		<SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
			<BEGIN>%x{
			<END>}
		</SPAN>

		<!-- %x[echo foo] -->
		<SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
			<BEGIN>%x[
			<END>]
		</SPAN>

		<!-- %x
		<SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
			<BEGIN>%x<
			<END>>
		</SPAN>

		<!-- %x$echo foo$ -->
		<SPAN_REGEXP HASH_CHAR="%x" TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
			<BEGIN>%x([^\p{Alnum}\p{Space}])
			<END>$1
		</SPAN_REGEXP>

		<!-- Regular expressions -->

		<!-- /regexp?/ -->
		<!-- If a regexp begins with a whitespace (including a newline),
			    the beginning "/" is wrongly treated as a division operator.
			    But such regexp is rare enough and one can use %r notations
			    or write like "/\ ..." to force jEdit to treat it as a
			    regexp. -->
		<SEQ_REGEXP HASH_CHAR="/" TYPE="OPERATOR">/=?($|\s)
		<!-- AT_WORD_START is TRUE not to handle "a/b/c". -->
		<SPAN AT_WORD_START="TRUE" TYPE="LITERAL3" DELEGATE="RegexpLiteral">
			<BEGIN>/
			<END>/
		</SPAN>

		<!-- %r(regexp?) -->
		<SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
			<BEGIN>%r(
			<END>)
		</SPAN>

		<!-- %r{regexp?} -->
		<SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
			<BEGIN>%r{
			<END>}
		</SPAN>

		<!-- %r[regexp?] -->
		<SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
			<BEGIN>%r[
			<END>]
		</SPAN>

		<!-- %r
		<SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
			<BEGIN>%r<
			<END>>
		</SPAN>

		<!-- %r$regexp?$ -->
		<SPAN_REGEXP HASH_CHAR="%r" TYPE="LITERAL3" DELEGATE="RegexpLiteral">
			<BEGIN>%r([^\p{Alnum}\p{Space}])
			<END>$1
		</SPAN_REGEXP>

		<!-- Std Comment -->
		<EOL_SPAN TYPE="COMMENT1">#

		<!-- Predefined global variables -->
		<SEQ_REGEXP HASH_CHAR="$-" TYPE="KEYWORD3" AT_WORD_START="TRUE">\$-[0adFiIKlpvw](?![\p{Alnum}_])
		</SEQ_REGEXP>

		<SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD3" AT_WORD_START="TRUE">\$[0-9!@&\+`'=~/\\,\.;<>_\*"\$\?\:F](?![\p{Alnum}_])

		<!-- Because of the ? char, this can't be done as a KEYWORD element -->
		<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">defined?

		<!-- Highlight "include" but not "include?" -->
		<SEQ_REGEXP HASH_CHAR="include" TYPE="KEYWORD2" AT_WORD_START="TRUE">include(?![\p{Alnum}_\?])
		</SEQ_REGEXP>

		<!-- Not Operators but like the syntax highlight to match operators -->
		<SEQ TYPE="OPERATOR">{
		<SEQ TYPE="OPERATOR">}
		<SEQ TYPE="OPERATOR">(
		<SEQ TYPE="OPERATOR">)

		<!-- Arithmetic operators -->
		<SEQ TYPE="OPERATOR">::
		<SEQ TYPE="OPERATOR">===
		<SEQ TYPE="OPERATOR">=
		<SEQ TYPE="OPERATOR">>>
		<SEQ TYPE="OPERATOR"><<
		<SEQ TYPE="OPERATOR"><=
		<SEQ TYPE="OPERATOR">+
		<SEQ TYPE="OPERATOR">-
		<SEQ TYPE="OPERATOR">/

		<SEQ TYPE="OPERATOR">**
		<SEQ TYPE="OPERATOR">*

		<SEQ TYPE="OPERATOR">%

		<!-- Logical Operators -->
		<SEQ TYPE="OPERATOR">&
		<SEQ TYPE="OPERATOR">|
		<SEQ TYPE="OPERATOR">!
		<SEQ TYPE="OPERATOR">>
		<SEQ TYPE="OPERATOR"><
		<SEQ TYPE="OPERATOR">^
		<SEQ TYPE="OPERATOR">~

		<!-- Range operators -->
		<SEQ TYPE="OPERATOR">...
		<SEQ TYPE="OPERATOR">..

		<SEQ TYPE="OPERATOR">]
		<SEQ TYPE="OPERATOR">[
		<SEQ TYPE="OPERATOR">?

		<!-- Symbols -->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR=":" TYPE="LABEL">:[\p{Alpha}_][\p{Alnum}_]*[?]?

		<SEQ TYPE="OPERATOR">:

		<KEYWORDS>
			<KEYWORD1>BEGIN
			<KEYWORD1>END
			<KEYWORD1>alias
			<KEYWORD1>begin
			<KEYWORD1>break
			<KEYWORD1>case
			<KEYWORD1>class
			<KEYWORD1>def
			<KEYWORD1>do
			<KEYWORD1>else
			<KEYWORD1>elsif
			<KEYWORD1>end
			<KEYWORD1>ensure
			<KEYWORD1>for
			<KEYWORD1>if
			<KEYWORD1>in
			<KEYWORD1>module
			<KEYWORD1>next
			<KEYWORD1>redo
			<KEYWORD1>rescue
			<KEYWORD1>retry
			<KEYWORD1>return
			<KEYWORD1>then
			<KEYWORD1>undef
			<KEYWORD1>unless
			<KEYWORD1>until
			<KEYWORD1>when
			<KEYWORD1>while
			<KEYWORD1>yield

			<KEYWORD2>load
			<KEYWORD2>require
			<KEYWORD2>initialize

			<OPERATOR>and
			<OPERATOR>not
			<OPERATOR>or

			<KEYWORD3>false
			<KEYWORD3>nil
			<KEYWORD3>self
			<KEYWORD3>super
			<KEYWORD3>true

			<KEYWORD3>$defout
			<KEYWORD3>$deferr
			<KEYWORD3>$stderr
			<KEYWORD3>$stdin
			<KEYWORD3>$stdout
			<KEYWORD3>$DEBUG
			<KEYWORD3>$FILENAME
			<KEYWORD3>$LOAD_PATH
			<KEYWORD3>$SAFE
			<KEYWORD3>$VERBOSE
			<KEYWORD3>__FILE__
			<KEYWORD3>__LINE__
			<KEYWORD3>ARGF
			<KEYWORD3>ARGV
			<KEYWORD3>ENV
			<KEYWORD3>DATA
			<KEYWORD3>FALSE
			<KEYWORD3>NIL
			<KEYWORD3>RUBY_PLATFORM
			<KEYWORD3>RUBY_RELEASE_DATE
			<KEYWORD3>RUBY_VERSION
			<KEYWORD3>STDERR
			<KEYWORD3>STDIN
			<KEYWORD3>STDOUT
			<KEYWORD3>SCRIPT_LINES__
			<KEYWORD3>TOPLEVEL_BINDING
			<KEYWORD3>TRUE
		</KEYWORDS>
	</RULES>

	<!-- Delegate contents of #{} expression in double quotes to MAIN so that
	     it will be syntax highlighted as well -->
	<RULES DEFAULT="LITERAL1" SET="doubleQuoteLiteral" ESCAPE="\">
		<SPAN DELEGATE="MAIN" TYPE="OPERATOR">
			<BEGIN>#{
			<END>}
		</SPAN>
		<MARK_FOLLOWING TYPE="KEYWORD4">#@@
		<MARK_FOLLOWING TYPE="KEYWORD4">#@
		<MARK_FOLLOWING TYPE="NULL">#$
	</RULES>

	<!-- Delegate contents of #{} expression in backquotes to MAIN so that
	     it will be syntax highlighted as well -->
	<RULES DEFAULT="LITERAL2" SET="BackquoteLiteral" ESCAPE="\">
		<SPAN DELEGATE="MAIN" TYPE="OPERATOR">
			<BEGIN>#{
			<END>}
		</SPAN>
		<MARK_FOLLOWING TYPE="KEYWORD4">#@@
		<MARK_FOLLOWING TYPE="KEYWORD4">#@
		<MARK_FOLLOWING TYPE="NULL">#$
	</RULES>

	<!-- Delegate contents of #{} expression in a regexp to MAIN so that
	     it will be syntax highlighted as well -->
	<RULES DEFAULT="LITERAL3" SET="RegexpLiteral" ESCAPE="\">
		<SPAN DELEGATE="MAIN" TYPE="OPERATOR">
			<BEGIN>#{
			<END>}
		</SPAN>
		<MARK_FOLLOWING TYPE="KEYWORD4">#@@
		<MARK_FOLLOWING TYPE="KEYWORD4">#@
		<MARK_FOLLOWING TYPE="NULL">#$
	</RULES>
</MODE>

Other jEdit examples (source code examples)

Here is a short list of links related to this jEdit ruby.xml source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.