diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kate/data/rhtml.xml | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kate/data/rhtml.xml')
-rw-r--r-- | kate/data/rhtml.xml | 1235 |
1 files changed, 1235 insertions, 0 deletions
diff --git a/kate/data/rhtml.xml b/kate/data/rhtml.xml new file mode 100644 index 000000000..c78702954 --- /dev/null +++ b/kate/data/rhtml.xml @@ -0,0 +1,1235 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY name "[A-Za-z_:][\w.:_-]*"> + <!ENTITY entref "&(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> +]> + +<!-- + RHTML syntax highlighting definition for Kate. It combines the ruby and + html syntax grammars. Some ideas, and the list of Rails method names were + taken from an rhtml kate grammar for Quanta based on earlier versions of + the syntax highlighters. + + Copyright (C) 2004 by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi) + Copyright (C) 2004 by Stefan Lang (langstefan@gmx.at) + Copyright (C) 2006 by Wilbert Berendsen (wilbert@kde.nl + Copyright (C) 2005 by Chris Martin (linux@chriscodes.com + Copyright (C) 2006 by Richard Dale (rdale@foton.es) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +--> + +<!-- + TODO: * Regular expressions spanning over multiple lines + work only if newlines are escaped. + * "Nested" HERE documents aren't recognized. + * Division is detected correctly only, if whitespace + is around the "/" operator. + E.g.: detected correctly: 1 / 2 + "/" interpreted as regex start: 1/2 +--> + +<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". --> +<language name="Ruby/Rails/RHTML" version="1.00" kateversion="2.4" section="Markup" extensions="*.rhtml;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPL"> + + <highlighting> + + <list name="keywords"> + <item> BEGIN </item> + <item> END </item> + <item> and </item> + <item> begin </item> + <item> break </item> + <item> case </item> + <item> defined? </item> + <item> do </item> + <item> else </item> + <item> elsif </item> + <item> end </item> + <item> ensure </item> + <item> for </item> + <item> if </item> + <item> in </item> + <item> include </item> + <item> next </item> + <item> not </item> + <item> or </item> + <item> redo </item> + <item> rescue </item> + <item> retry </item> + <item> return </item> + <item> then </item> + <item> unless </item> + <item> until </item> + <item> when </item> + <item> while </item> + <item> yield </item> + </list> + + <list name="access-control"> + <item> private_class_method </item> + <item> private </item> + <item> protected </item> + <item> public_class_method </item> + <item> public </item> + </list> + + <list name="attribute-definitions"> + <item> attr_reader </item> + <item> attr_writer </item> + <item> attr_accessor </item> + </list> + + <list name="definitions"> + <item> alias </item> + <item> module </item> + <item> class </item> + <item> def </item> + <item> undef </item> + </list> + + <list name="pseudo-variables"> + <item> self </item> + <item> super </item> + <item> nil </item> + <item> false </item> + <item> true </item> + <item> caller </item> + <item> __FILE__ </item> + <item> __LINE__ </item> + </list> + + <list name="default-globals"> + <item> $stdout </item> + <item> $defout </item> + <item> $stderr </item> + <item> $deferr </item> + <item> $stdin </item> + </list> + + <!-- Kernel module methods. + NOTE: Methods ending in ? or ! + are included below as regexes. + --> + <list name="kernel-methods"> + <!-- backquote ` --> + <item> abort </item> + <item> at_exit </item> + <item> autoload </item> + <item> autoload? </item> + <item> binding </item> + <item> block_given? </item> + <item> callcc </item> + <item> caller </item> + <item> catch </item> + <item> chomp </item> + <item> chomp! </item> + <item> chop </item> + <item> chop! </item> + <item> eval </item> + <item> exec </item> + <item> exit </item> + <item> exit! </item> + <item> fail </item> + <item> fork </item> + <item> format </item> + <item> getc </item> + <item> gets </item> + <item> global_variables </item> + <item> gsub </item> + <item> gsub! </item> + <item> iterator? </item> + <item> lambda </item> + <item> load </item> + <item> local_variables </item> + <item> loop </item> + <item> method_missing </item> + <item> open </item> + <item> p </item> + <item> print </item> + <item> printf </item> + <item> proc </item> + <item> putc </item> + <item> puts </item> + <item> raise </item> + <item> rand </item> + <item> readline </item> + <item> readlines </item> + <item> require </item> + <item> scan </item> + <item> select </item> + <item> set_trace_func </item> + <item> sleep </item> + <item> split </item> + <item> sprintf </item> + <item> srand </item> + <item> sub </item> + <item> sub! </item> + <item> syscall </item> + <item> system </item> + <item> test </item> + <item> throw </item> + <item> trace_var </item> + <item> trap </item> + <item> untrace_var </item> + <item> warn </item> + + <!-- ActionView methods from Rails docs --> + <item>auto_complete_field</item> + <item>auto_complete_result</item> + <item>auto_discovery_link_tag</item> + <item>auto_link</item> + <item>benchmark</item> + <item>button_to</item> + <item>cache</item> + <item>capture</item> + <item>check_box</item> + <item>check_box_tag</item> + <item>collection_select</item> + <item>concat</item> + <item>content_for</item> + <item>content_tag</item> + <item>country_options_for_select</item> + <item>country_select</item> + <item>current_page?</item> + <item>date_select</item> + <item>datetime_select</item> + <item>debug</item> + <item>define_javascript_functions</item> + <item>distance_of_time_in_words</item> + <item>distance_of_time_in_words_to_now</item> + <item>draggable_element</item> + <item>drop_receiving_element</item> + <item>end_form_tag</item> + <item>error_message_on</item> + <item>error_messages_for</item> + <item>escape_javascript</item> + <item>evaluate_remote_response</item> + <item>excerpt</item> + <item>file_field</item> + <item>file_field_tag</item> + <item>finish_upload_status</item> + <item>form</item> + <item>form_remote_tag</item> + <item>form_tag</item> + <item>form_tag_with_upload_progress</item> + <item>h</item> + <item>hidden_field</item> + <item>hidden_field_tag</item> + <item>highlight</item> + <item>human_size</item> + <item>image_path</item> + <item>image_submit_tag</item> + <item>image_tag</item> + <item>input</item> + <item>javascript_include_tag</item> + <item>javascript_path</item> + <item>javascript_tag</item> + <item>link_image_to</item> + <item>link_to</item> + <item>link_to_function</item> + <item>link_to_if</item> + <item>link_to_image</item> + <item>link_to_remote</item> + <item>link_to_unless</item> + <item>link_to_unless_current</item> + <item>mail_to</item> + <item>markdown</item> + <item>number_to_currency</item> + <item>number_to_human_size</item> + <item>number_to_percentage</item> + <item>number_to_phone</item> + <item>number_with_delimiter</item> + <item>number_with_precision</item> + <item>observe_field</item> + <item>observe_form</item> + <item>option_groups_from_collection_for_select</item> + <item>options_for_select</item> + <item>options_from_collection_for_select</item> + <item>pagination_links</item> + <item>password_field</item> + <item>password_field_tag</item> + <item>periodically_call_remote</item> + <item>pluralize</item> + <item>radio_button</item> + <item>radio_button_tag</item> + <item>register_template_handler</item> + <item>render</item> + <item>render_file</item> + <item>render_template</item> + <item>sanitize</item> + <item>select</item> + <item>select_date</item> + <item>select_datetime</item> + <item>select_day</item> + <item>select_hour</item> + <item>select_minute</item> + <item>select_month</item> + <item>select_second</item> + <item>select_tag</item> + <item>select_time</item> + <item>select_year</item> + <item>simple_format</item> + <item>sortable_element</item> + <item>start_form_tag</item> + <item>strip_links</item> + <item>stylesheet_link_tag</item> + <item>stylesheet_path</item> + <item>submit_tag</item> + <item>submit_to_remote</item> + <item>tag</item> + <item>text_area</item> + <item>text_area_tag</item> + <item>text_field</item> + <item>text_field_tag</item> + <item>text_field_with_auto_complete</item> + <item>textilize</item> + <item>textilize_without_paragraph</item> + <item>time_ago_in_words</item> + <item>time_zone_options_for_select</item> + <item>time_zone_select</item> + <item>truncate</item> + <item>update_element_function</item> + <item>upload_progress_status</item> + <item>upload_progress_text</item> + <item>upload_progress_update_bar_js</item> + <item>upload_status_progress_bar_tag</item> + <item>upload_status_tag</item> + <item>upload_status_text_tag</item> + <item>url_for</item> + <item>visual_effect</item> + <item>word_wrap</item> + </list> + + <list name="attention"> + <item> TODO </item> + <item> FIXME </item> + <item> NOTE </item> + </list> + + <contexts> + + <!-- BEGIN HTML contexts --> + <context name="Start" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="FindHTML" /> + </context> + + <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces/> + <DetectIdentifier/> + + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + <StringDetect attribute="Keyword" context="rubysourceline" String="%" /> + + <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> + <StringDetect attribute="CDATA" context="CDATA" String="<![CDATA[" beginRegion="cdata" /> + <RegExpr attribute="Doctype" context="Doctype" String="<!DOCTYPE\s+" beginRegion="doctype" /> + <RegExpr attribute="Processing Instruction" context="PI" String="<\?[\w:-]*" beginRegion="pi" /> + <RegExpr attribute="Element" context="CSS" String="<style\b" insensitive="TRUE" beginRegion="style" /> + <RegExpr attribute="Element" context="JS" String="<script\b" insensitive="TRUE" beginRegion="script" /> + <RegExpr attribute="Element" context="El Open" String="<pre\b" insensitive="TRUE" beginRegion="pre" /> + <RegExpr attribute="Element" context="El Open" String="<div\b" insensitive="TRUE" beginRegion="div" /> + <RegExpr attribute="Element" context="El Open" String="<table\b" insensitive="TRUE" beginRegion="table" /> + <RegExpr attribute="Element" context="El Open" String="<&name;" /> + <RegExpr attribute="Element" context="El Close" String="</pre\b" insensitive="TRUE" endRegion="pre" /> + <RegExpr attribute="Element" context="El Close" String="</div\b" insensitive="TRUE" endRegion="div" /> + <RegExpr attribute="Element" context="El Close" String="</table\b" insensitive="TRUE" endRegion="table" /> + <RegExpr attribute="Element" context="El Close" String="</&name;" /> + <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" /> + <IncludeRules context="FindEntityRefs" /> + </context> + + <context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="EntityRef" context="#stay" String="&entref;" /> + <AnyChar attribute="Error" context="#stay" String="&<" /> + </context> + + <context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="EntityRef" context="#stay" String="&entref;" /> + <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" /> + <AnyChar attribute="Error" context="#stay" String="&%" /> + </context> + + <context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Attribute" context="#stay" String="&name;" column="0"/> + <RegExpr attribute="Attribute" context="#stay" String="\s+&name;" /> + <DetectChar attribute="Attribute" context="Value" char="=" /> + </context> + + <context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" /> + </context> + + + <context name="Comment" attribute="Comment" lineEndContext="#stay"> + <DetectSpaces/> + <IncludeRules context="##Alerts" /> + <DetectIdentifier/> + <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment" /> + <RegExpr attribute="Error" context="#stay" String="-(-(?!->))+" /> + </context> + + <context name="CDATA" attribute="Normal Text" lineEndContext="#stay"> + <DetectSpaces/> + <DetectIdentifier/> + <StringDetect attribute="CDATA" context="#pop" String="]]>" endRegion="cdata" /> + <StringDetect attribute="EntityRef" context="#stay" String="]]&gt;" /> + </context> + + <context name="PI" attribute="Normal Text" lineEndContext="#stay"> + <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1=">" endRegion="pi" /> + </context> + + <context name="Doctype" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char=">" endRegion="doctype" /> + <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" /> + </context> + + <context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" /> + <IncludeRules context="FindDTDRules" /> + <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment" /> + <RegExpr attribute="Processing Instruction" context="PI" String="<\?[\w:-]*" beginRegion="pi" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Doctype" context="#pop" char=">" /> + <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char=""" /> + <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="'" /> + </context> + + <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <DetectChar attribute="Value" context="#pop" char=""" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <DetectChar attribute="Value" context="#pop" char="'" /> + <IncludeRules context="FindPEntityRefs" /> + </context> + + <context name="El Open" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" /> + <DetectChar attribute="Element" context="#pop" char=">" /> + <IncludeRules context="FindAttributes" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="El Close" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <DetectChar attribute="Element" context="#pop" char=">" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="El Close 2" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <DetectChar attribute="Element" context="#pop#pop#pop" char=">" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="El Close 3" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <DetectChar attribute="Element" context="#pop#pop#pop#pop" char=">" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="CSS" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="style" /> + <DetectChar attribute="Element" context="CSS content" char=">" /> + <IncludeRules context="FindAttributes" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="CSS content" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <RegExpr attribute="Element" context="El Close 2" String="</style\b" insensitive="TRUE" endRegion="style" /> + <IncludeRules context="##CSS" includeAttrib="true"/> + </context> + + <context name="JS" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="script" /> + <DetectChar attribute="Element" context="JS content" char=">" /> + <IncludeRules context="FindAttributes" /> + <RegExpr attribute="Error" context="#stay" String="\S" /> + </context> + + <context name="JS content" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <RegExpr attribute="Element" context="El Close 2" String="</script\b" insensitive="TRUE" endRegion="script" /> + <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*</script\b)" insensitive="TRUE" /> + <IncludeRules context="##JavaScript" includeAttrib="true"/> + </context> + + <context name="JS comment close" attribute="Comment" lineEndContext="#pop"> + <RegExpr attribute="Element" context="El Close 3" String="</script\b" insensitive="TRUE" endRegion="script" /> + <IncludeRules context="##Alerts" /> + </context> + + <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <DetectChar attribute="Value" context="Value DQ" char=""" /> + <DetectChar attribute="Value" context="Value SQ" char="'" /> + <DetectSpaces /> + </context> + + <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <IncludeRules context="FindEntityRefs" /> + <RegExpr attribute="Value" context="#stay" String="/(?!>)" /> + <RegExpr attribute="Value" context="#stay" String="[^/><"'\s]" /> + </context> + + <context name="Value DQ" attribute="Value" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <DetectChar attribute="Value" context="#pop#pop" char=""" /> + <IncludeRules context="FindEntityRefs" /> + </context> + + <context name="Value SQ" attribute="Value" lineEndContext="#stay"> + <RegExpr attribute="Keyword" context="rubysource" String="<%=?" /> + + <DetectChar attribute="Value" context="#pop#pop" char="'" /> + <IncludeRules context="FindEntityRefs" /> + </context> + <!-- END HTML contexts --> + + <!-- BEGIN Ruby contexts --> + + <!-- A single line of ruby source after a '%' ERB tag --> + <context name="rubysourceline" attribute="RUBY RAILS ERB Text" lineEndContext="#pop"> + <IncludeRules context="rubysource" /> + </context> + + <context name="rubysource" attribute="RUBY RAILS ERB Text" lineEndContext="#stay"> + <!-- ruby ignores newline after \ --> + <LineContinue attribute="Ruby Normal Text" context="Line Continue"/> + + <RegExpr attribute="Keyword" context="#pop" String="-?%>" /> + + <!-- __END__ token on own line. --> + <RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/> + + <!-- "shebang" line --> + <RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/> + + <!-- "def" - "end" blocks --> + <!-- check for statement modifiers with regexes --> + <RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" firstNonSpace="true"/> + <RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/> + <RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bclass\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bmodule\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bbegin\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bcase\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bdo\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bdef\b" context="#stay" beginRegion="def block"/> + <RegExpr attribute="Keyword" String="\bend\b" context="#stay" endRegion="def block"/> + <!-- elsif/else close the current block and start a new one --> + <RegExpr attribute="Keyword" String="(\b|^\s*)(else|elsif|rescue|ensure)(\s+|$)" context="#stay" endRegion="def block" beginRegion="def block"/> + + <StringDetect attribute="Operator" String="..." context="#stay"/> + <Detect2Chars attribute="Operator" char="." char1="." context="#stay"/> + + <!-- marks a message (being sent, not defined) --> + <RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="#stay"/> + + <!-- Check for "ASCII code operator". e.g.: ?a --> + <RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="#stay"/> + + <keyword attribute="Keyword" String="keywords" context="#stay"/> + <keyword attribute="Attribute Definition" String="attribute-definitions" context="#stay"/> + <keyword attribute="Access Control" String="access-control" context="#stay"/> + <keyword attribute="Definition" String="definitions" context="#stay" /> + <keyword attribute="Pseudo variable" String="pseudo-variables" context="#stay"/> + <keyword attribute="Default globals" String="default-globals" context="#stay"/> + <keyword attribute="Kernel methods" String="kernel-methods" context="#stay"/> + + <!-- (global) vars starting with $ + Match them before $_. + --> + <RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+" context="#stay"/> + <RegExpr attribute="Global Variable" String="\$\-[a-zA-z_]\b" context="#stay"/> + <!-- special-character globals --> + <RegExpr attribute="Default globals" String="\$[\d_*`\!:?'/\\\-\&]" context="#stay"/> + <RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="#stay"/> + <!-- Generally a module or class name like "File", "MyModule_1", .. --> + <RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="#stay"/> + + <RegExpr attribute="Hex" String="\b\-?0[xX][_0-9a-fA-F]+" context="#stay"/> + <RegExpr attribute="Bin" String="\b\-?0[bB][_01]+" context="#stay"/> + <RegExpr attribute="Octal" String="\b\-?0[1-7][_0-7]*" context="#stay"/> + <RegExpr attribute="Float" String="\b\-?[0-9][0-9_]*\.[0-9][0-9_]*([eE]\-?[1-9][0-9]*(\.[0-9]*)?)?" context="#stay"/> + <RegExpr attribute="Dec" String="\b\-?[1-9][0-9_]*\b" context="#stay"/> + <Int attribute="Dec" context="#stay"/> + <HlCChar attribute="Char" context="#stay"/> + + <!-- Check for =begin before assignment operator. --> + <StringDetect attribute="Blockcomment" String="=begin" context="Embedded documentation" beginRegion="comment block" column="0"/> + + <!-- recognize the beginning of a HEREDOC + This uses new features in Kate 2.3 and later + + There is no other chance of keeping heredoc apart from the + push operator '<<' than requiring to put space between the operator + and the string. + --> + <RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*<<-(?=\w+|["'])" beginRegion="HereDocument" /> + <RegExpr attribute="Operator" context="find_heredoc" String="\s*<<(?=\w+|["'])" beginRegion="HereDocument" /> + + <DetectChar attribute="Operator" char="." context="#stay"/> + <Detect2Chars attribute="Operator" char="&" char1="&" context="#stay"/> + <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/> + <RegExpr attribute="Operator" String="\s[\?\:\%/]\s" context="#stay"/> + <RegExpr attribute="Operator" String="[|&<>\^\+*~\-=]+" context="#stay"/> + <!-- regexp hack --> + <RegExpr attribute="Operator" String="\s!" context="#stay"/> + <RegExpr attribute="Operator" String="/=\s" context="#stay" insensitive="0"/> + <StringDetect attribute="Operator" String="%=" context="#stay" insensitive="0"/> + <Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/> + + <RegExpr attribute="Symbol" String=":[a-zA-Z_][a-zA-Z0-9_]*" context="#stay"/> + + <DetectChar attribute="String" char=""" context="Quoted String"/> + <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/> + <DetectChar attribute="Command" char="`" context="Command String"/> + + <StringDetect attribute="Normal Text" String="?#" context="#stay"/> + + <RegExpr attribute="Comment" String="#\s*BEGIN.*$" context="#stay" beginRegion="marker" column="0"/> + <RegExpr attribute="Comment" String="#\s*END.*$" context="#stay" endRegion="marker" column="0"/> + <RegExpr attribute="Comment" String="#" context="Comment Line" firstNonSpace="true"/> + <RegExpr attribute="Comment" String="\s#" context="General Comment"/> + + <RegExpr attribute="Delimiter" String="[\[\]]+" context="#stay"/> + <DetectChar attribute="Delimiter" char="{" context="#stay" beginRegion="def block"/> + <DetectChar attribute="Delimiter" char="}" context="#stay" endRegion="def block"/> + + <RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="#stay"/> + <RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="#stay"/> + + <!-- handle the different regular expression formats --> + <DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/> + + <!-- recognize the beginning of a general delimited input format --> + <!-- this moves to the next context to separate out the exact nature of the GDL input --> + <RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[Qqxw]?[^\s>])" beginRegion="GdlInput" /> + </context> + + <context name="Line Continue" attribute="Ruby Normal Text" lineEndContext="#pop"> + <RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/> + <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" firstNonSpace="true"/> + <IncludeRules context="rubysource"/> + </context> + + <context name="Quoted String" attribute="String" lineEndContext="#stay"> + <StringDetect attribute="String" String="\\" context="#stay"/> + <RegExpr attribute="String" String="\\\"" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + <!--HlCChar attribute="Char" context="#pop"/--> + <DetectChar char=""" attribute="String" context="#pop"/> + </context> + + <context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay"> + <!-- <HlCChar attribute="Char" context="#pop"/> --> + <StringDetect attribute="String" String="\\" context="#stay"/> + <RegExpr attribute="String" String="\\\'" context="#stay"/> + <DetectChar char="'" attribute="Raw String" context="#pop"/> + </context> + + <context name="Command String" attribute="Command" lineEndContext="#stay"> + <StringDetect attribute="String" String="\\" context="#stay"/> + <RegExpr attribute="String" String="\\\`" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + <HlCChar attribute="Char" context="#pop"/> + <DetectChar char="`" attribute="Command" context="#pop"/> + </context> + + <context name="Embedded documentation" attribute="Ruby Comment" lineEndContext="#stay"> + <StringDetect attribute="Ruby Comment" String="=end" context="#pop" endRegion="comment block" column="0"/> + </context> + + <context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay"> + <RegExpr attribute="Regular Expression" String="\\\/" context="#stay"/> + <RegExpr attribute="Regular Expression" String="[^\\]$" context="#pop"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + <RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="#pop"/> + </context> + + <!-- Substitutions can be nested --> + <context name="Subst" attribute="Ruby Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Substitution" char="}" context="#pop"/> + <!-- Highlight substitution as code. --> + <IncludeRules context="rubysource"/> + </context> + + <context name="Short Subst" attribute="Substitution" lineEndContext="#pop"> + <!-- Check for e.g.: "#@var#@@xy" --> + <RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/> + <RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/> + </context> + + <!-- This handles access of nested module classes and class methods --> + <context name="Member Access" attribute="Member" lineEndContext="#pop"> + <!-- marks a message (being sent, not defined) --> + <RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="#pop"/> + <RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/> + <RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="#pop"/> + <RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/> + <RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="#pop"/> + <RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/> + <Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/> + <DetectChar attribute="Member" char="." context="#stay"/> + + <AnyChar attribute="Operator" String="=+-*/%|&[]{}~" context="#pop"/> + <DetectChar attribute="Ruby Comment" char="#" context="#pop"/> + <AnyChar attribute="Ruby Normal Text" String="()\" context="#pop"/> + <RegExpr attribute="Member" String="\W" context="#pop"/> + </context> + + <context name="Comment Line" attribute="Ruby Comment" lineEndContext="#pop"> + <RegExpr attribute="Ruby Comment" String="\w\:\:\s" context="RDoc Label"/> + <keyword attribute="Alert" String="attention" context="#stay"/> + <RegExpr attribute="Keyword" context="#pop#pop" String="-?%>" /> + </context> + + <context name="General Comment" attribute="Ruby Comment" lineEndContext="#pop"> + <keyword attribute="Dec" String="attention" context="#stay"/> + </context> + + <context name="RDoc Label" attribute="RDoc Value" lineEndContext="#pop"/> + + <!-- HEREDOC support + The contexts below support both normal and indented heredocs + --> + <!-- here we markup the heredoc markers --> + <context name="find_heredoc" attribute="Ruby Normal Text" lineEndContext="#pop" > + <RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" /> + <RegExpr attribute="Keyword" context="normal_heredoc" String=""?(\w+)"?" /> + </context> + <context name="find_indented_heredoc" attribute="Ruby Normal Text" lineEndContext="#pop" > + <RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" /> + <RegExpr attribute="Keyword" context="indented_heredoc" String=""?(\w+)"?" /> + </context> + <!-- these are the real heredoc contexts --> + <context name="indented_heredoc" attribute="Ruby Normal Text" lineEndContext="#stay" dynamic="true"> + <!-- <RegExpr attribute="Keyword" context="#pop#pop" String="^\s*%1$" dynamic="true" endRegion="HereDocument"/>--> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/> + <IncludeRules context="heredoc_rules" /> + </context> + <context name="apostrophed_indented_heredoc" attribute="Ruby Normal Text" lineEndContext="#stay" dynamic="true"> + <!-- <RegExpr attribute="Keyword" context="#pop#pop" String="^\s*%1$" dynamic="true" endRegion="HereDocument"/>--> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/> + </context> + + <context name="normal_heredoc" attribute="Ruby Normal Text" lineEndContext="#stay" dynamic="true"> + <!-- <RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument"/>--> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/> + <IncludeRules context="heredoc_rules" /> + </context> + <context name="apostrophed_normal_heredoc" attribute="Ruby Normal Text" lineEndContext="#stay" dynamic="true"> + <!-- <RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument"/>--> + <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/> + </context> + + <!-- rules for heredoc types --> + <context name="heredoc_rules" attribute="Ruby Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + </context> + + <!-- General delimited input support + The contexts below handle the various gdl formats + --> + <context name="find_gdl_input" attribute="Ruby Normal Text" lineEndContext="#pop"> + + <!-- handle token arrays --> + <RegExpr attribute="GDL input" context="gdl_token_array_1" String="w\(" /> + <RegExpr attribute="GDL input" context="gdl_token_array_2" String="w\{" /> + <RegExpr attribute="GDL input" context="gdl_token_array_3" String="w\[" /> + <RegExpr attribute="GDL input" context="gdl_token_array_4" String="w<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" /> + + <!-- handle apostrophed strings --> + <RegExpr attribute="GDL input" context="gdl_apostrophed_1" String="q\(" /> + <RegExpr attribute="GDL input" context="gdl_apostrophed_2" String="q\{" /> + <RegExpr attribute="GDL input" context="gdl_apostrophed_3" String="q\[" /> + <RegExpr attribute="GDL input" context="gdl_apostrophed_4" String="q<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" /> + + <!-- handle shell commands --> + <RegExpr attribute="GDL input" context="gdl_shell_command_1" String="x\(" /> + <RegExpr attribute="GDL input" context="gdl_shell_command_2" String="x\{" /> + <RegExpr attribute="GDL input" context="gdl_shell_command_3" String="x\[" /> + <RegExpr attribute="GDL input" context="gdl_shell_command_4" String="x<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" /> + + <!-- handle regular expressions --> + <RegExpr attribute="GDL input" context="gdl_regexpr_1" String="r\(" /> + <RegExpr attribute="GDL input" context="gdl_regexpr_2" String="r\{" /> + <RegExpr attribute="GDL input" context="gdl_regexpr_3" String="r\[" /> + <RegExpr attribute="GDL input" context="gdl_regexpr_4" String="r<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" /> + + <!-- handle double-quoted strings --> + <!-- + be careful to make this the last GDL ruleset, because the rule for + the short form %?foo? will otherwise catch any of the other formats + --> + <RegExpr attribute="GDL input" context="gdl_dq_string_1" String="Q?\(" /> + <RegExpr attribute="GDL input" context="gdl_dq_string_2" String="Q?\{" /> + <RegExpr attribute="GDL input" context="gdl_dq_string_3" String="Q?\[" /> + <RegExpr attribute="GDL input" context="gdl_dq_string_4" String="Q?<" /> + <!-- then we handle the 'any char' format --> + <RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" /> + + </context> + <!-- double-quoted string specific contexts follow --> + <context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <Detect2Chars attribute="String" char="\" char1=")" context="#stay"/> + <DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" /> + </context> + <context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" /> + <DetectChar attribute="String" context="#pop" char=")" /> + </context> + <!-- note that here substitution should win over nesting --> + <context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <Detect2Chars attribute="String" char="\" char1="}" context="#stay"/> + <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" /> + <DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" /> + </context> + <context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" > + <DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" /> + <DetectChar attribute="String" context="#pop" char="}" /> + <IncludeRules context="dq_string_rules" /> + </context> + + <context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <Detect2Chars attribute="String" char="\" char1="]" context="#stay"/> + <DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" /> + <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" /> + </context> + <context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" > + <DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" /> + <DetectChar attribute="String" context="#pop" char="]" /> + <IncludeRules context="dq_string_rules" /> + </context> + + <context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" > + <IncludeRules context="dq_string_rules" /> + <Detect2Chars attribute="String" char="\" char1=">" context="#stay"/> + <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="<" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" /> + </context> + <context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" > + <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="<" /> + <DetectChar attribute="String" context="#pop" char=">" /> + <IncludeRules context="dq_string_rules" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurence of the + delimiter character + --> + <context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="dq_string_rules" /> + <RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> + </context> + <!-- rules to be included in all dq_string contexts --> + <context name="dq_string_rules" attribute="String" lineEndContext="#stay" > + <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + </context> + + <!-- token array specific contexts --> + + <context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <Detect2Chars attribute="String" char="\" char1=")" context="#stay"/> + <DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" /> + </context> + <context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" /> + <DetectChar attribute="String" context="#pop" char=")" /> + </context> + + <context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <Detect2Chars attribute="String" char="\" char1="}" context="#stay"/> + <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" /> + <DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" /> + </context> + <context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" /> + <DetectChar attribute="String" context="#pop" char="}" /> + </context> + + <context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <Detect2Chars attribute="String" char="\" char1="]" context="#stay"/> + <DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" /> + <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" /> + </context> + <context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" /> + <DetectChar attribute="String" context="#pop" char="]" /> + </context> + + <context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <Detect2Chars attribute="String" char="\" char1=">" context="#stay"/> + <DetectChar attribute="String" context="gdl_token_array_4_nested" char="<" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" /> + </context> + <context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" > + <IncludeRules context="token_array_rules" /> + <DetectChar attribute="String" context="gdl_token_array_4_nested" char="<" /> + <DetectChar attribute="String" context="#pop" char=">" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurence of the + delimiter character + --> + <context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="token_array_rules" /> + <RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true"/> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> + </context> + + <!-- rules to be included in all token_array contexts --> + <context name="token_array_rules" attribute="String" lineEndContext="#stay" > + <StringDetect attribute="String" String="\\" context="#stay"/> + </context> + + <!-- apostrophed string specific contexts --> + + <context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/> + <DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" /> + </context> + <context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" /> + <DetectChar attribute="Raw String" context="#pop" char=")" /> + </context> + + <context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/> + <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" /> + </context> + <context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" /> + <DetectChar attribute="Raw String" context="#pop" char="}" /> + </context> + + <context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/> + <DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" /> + <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" /> + </context> + <context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" /> + <DetectChar attribute="Raw String" context="#pop" char="]" /> + </context> + + <context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <Detect2Chars attribute="Raw String" char="\" char1=">" context="#stay"/> + <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="<" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" /> + </context> + <context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" > + <IncludeRules context="apostrophed_rules" /> + <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="<" /> + <DetectChar attribute="Raw String" context="#pop" char=">" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurence of the + delimiter character + --> + <context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="apostrophed_rules" /> + <RegExpr attribute="Raw String" String="\\%1" context="#stay" dynamic="true"/> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> + </context> + + <!-- rules to be included in all apostrophed contexts --> + <context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" > + <Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/> + </context> + + <!-- shell command specific contexts --> + + <context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/> + <DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" /> + </context> + <context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" /> + <DetectChar attribute="Command" context="#pop" char=")" /> + </context> + + <context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/> + <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" /> + <DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" /> + </context> + <context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" /> + <DetectChar attribute="Command" context="#pop" char="}" /> + </context> + + <context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/> + <DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" /> + <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" /> + </context> + <context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" /> + <DetectChar attribute="Command" context="#pop" char="]" /> + </context> + + <context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <Detect2Chars attribute="Command" char="\" char1=">" context="#stay"/> + <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="<" /> + <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" /> + </context> + <context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" > + <IncludeRules context="shell_command_rules" /> + <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="<" /> + <DetectChar attribute="Command" context="#pop" char=">" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurence of the + delimiter character + --> + <context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="shell_command_rules" /> + <RegExpr attribute="Command" String="\\%1" context="#stay" dynamic="true" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" /> + </context> + + <!-- rules to be included in all shell_command contexts --> + <context name="shell_command_rules" attribute="Command" lineEndContext="#stay" > + <Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + </context> + + <!-- regular expression specific contexts --> + + <context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" /> + </context> + <context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" /> + <DetectChar attribute="Regular Expression" context="#pop" char=")" /> + </context> + + <context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/> + <RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" /> + </context> + <context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" /> + <DetectChar attribute="Regular Expression" context="#pop" char="}" /> + </context> + + <context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" /> + </context> + <context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" /> + <DetectChar attribute="Regular Expression" context="#pop" char="]" /> + </context> + + <context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <Detect2Chars attribute="Regular Expression" char="\" char1=">" context="#stay"/> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="<" /> + <RegExpr attribute="GDL input" context="#pop#pop" String=">[uiomxn]*" endRegion="GdlInput" /> + </context> + <context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" > + <IncludeRules context="regexpr_rules" /> + <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="<" /> + <DetectChar attribute="Regular Expression" context="#pop" char=">" /> + </context> + + <!-- this format doesn't allow nesting. it is terminated by the next occurence of the + delimiter character + --> + <context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="regexpr_rules" /> + <RegExpr attribute="Regular Expression" String="\\%1" context="#stay" dynamic="true" /> + <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" /> + </context> + + <!-- rules to be included in all regexpr contexts --> + <context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" > + <Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/> + <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/> + <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/> + </context> + + <!-- END of General delimited input support --> + + <!-- handle data in script --> + <context name="DATA" attribute="Data" lineEndContext="#stay"/> + <!-- END Ruby contexts --> + </contexts> + + <itemDatas> + <!-- BEGIN Ruby itemData --> + <itemData name="Ruby Normal Text" defStyleNum="dsNormal"/> + + <itemData name="Keyword" defStyleNum="dsKeyword"/> + <itemData name="Attribute Definition" defStyleNum="dsOthers"/> + <itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/> + <itemData name="Definition" defStyleNum="dsKeyword"/> + <itemData name="Pseudo variable" defStyleNum="dsDecVal"/> + + <itemData name="Dec" defStyleNum="dsDecVal"/> + <itemData name="Float" defStyleNum="dsFloat"/> + <itemData name="Char" defStyleNum="dsChar"/> + <itemData name="Octal" defStyleNum="dsBaseN"/> + <itemData name="Hex" defStyleNum="dsBaseN"/> + <itemData name="Bin" defStyleNum="dsBaseN"/> + + <itemData name="Symbol" defStyleNum="dsString" color="#D40000"/> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/> + <itemData name="Command" defStyleNum="dsString" color="#AA3000"/> + <itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 --> + <itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/> + <itemData name="Substitution" defStyleNum="dsOthers"/> + <itemData name="Data" defStyleNum="dsNormal"/> + <!-- short for 'general delimited input' --> + <itemData name="GDL input" defStyleNum="dsOthers" /> + + <itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/> + <itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/> + <itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/> + <itemData name="Constant" defStyleNum="dsDataType"/> + <itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/> + <itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 --> + <itemData name="Member" defStyleNum="dsNormal"/> + <itemData name="Instance Variable" defStyleNum="dsOthers"/> + <itemData name="Class Variable" defStyleNum="dsOthers"/> + + <itemData name="Ruby Comment" defStyleNum="dsComment"/> + <itemData name="Blockcomment" defStyleNum="dsComment"/> + <itemData name="Region Marker" defStyleNum="dsNormal" color="#0000ff"/> + <itemData name="RDoc Value" defStyleNum="dsOthers"/> + + <!-- use these to mark errors and alerts things --> + <itemData name="Error" defStyleNum="dsError" /> + <itemData name="Alert" defStyleNum="dsAlert" /> + + <itemData name="Delimiter" defStyleNum="dsChar"/> + <itemData name="Expression" defStyleNum="dsOthers"/> + <itemData name="Operator" defStyleNum="dsChar"/> + <!-- END Ruby itemData --> + + <!-- BEGIN HTML itemData --> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" /> + <itemData name="Processing Instruction" defStyleNum="dsKeyword" /> + <itemData name="Doctype" defStyleNum="dsDataType" bold="1" /> + <itemData name="Element" defStyleNum="dsKeyword" /> + <itemData name="Attribute" defStyleNum="dsOthers" /> + <itemData name="Value" defStyleNum="dsString" color="#a00" /> + <itemData name="EntityRef" defStyleNum="dsDecVal" /> + <itemData name="PEntityRef" defStyleNum="dsDecVal" /> + <itemData name="Error" defStyleNum="dsError" /> + <!-- END HTML itemData --> + + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="#"/> + <comment name="multiLine" start="<!--" end="-->" /> + </comments> + <keywords casesensitive="1" weakDeliminator="!?"/> + </general> +</language> |