diff options
-rw-r--r-- | etc/0.8.1-vs-0.8.2.diff | 872 | ||||
-rw-r--r-- | etc/0.8.2-vs-0.8.3.diff | 656 | ||||
-rw-r--r-- | etc/0.8.3-vs-0.8.4.diff | 73 |
3 files changed, 0 insertions, 1601 deletions
diff --git a/etc/0.8.1-vs-0.8.2.diff b/etc/0.8.1-vs-0.8.2.diff deleted file mode 100644 index ea513de..0000000 --- a/etc/0.8.1-vs-0.8.2.diff +++ /dev/null @@ -1,872 +0,0 @@ -Index: coderay/encoders/html/numerization.rb -=================================================================== ---- coderay/encoders/html/numerization.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/encoders/html/numerization.rb (.../trunk/lib) (revision 302) -@@ -32,9 +32,19 @@ - #end - - bold_every = options[:bold_every] -+ highlight_lines = options[:highlight_lines] - bolding = -- if bold_every == false -+ if bold_every == false && highlight_lines == nil - proc { |line| line.to_s } -+ elsif highlight_lines.is_a? Enumerable -+ highlight_lines = highlight_lines.to_set -+ proc do |line| -+ if highlight_lines.include? line -+ "<strong class=\"highlighted\">#{line}</strong>" # highlighted line numbers in bold -+ else -+ line.to_s -+ end -+ end - elsif bold_every.is_a? Integer - raise ArgumentError, ":bolding can't be 0." if bold_every == 0 - proc do |line| -Index: coderay/encoders/html.rb -=================================================================== ---- coderay/encoders/html.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/encoders/html.rb (.../trunk/lib) (revision 302) -@@ -56,6 +56,16 @@ - # - # Default: 10 - # -+ # === :highlight_lines -+ # -+ # Highlights certain line numbers now by using the :highlight_lines option. -+ # Can be any Enumerable, typically just an Array or Range, of numbers. -+ # -+ # Bolding is deactivated when :highlight_lines is set. It only makes sense -+ # in combination with :line_numbers. -+ # -+ # Default: nil -+ # - # === :hint - # Include some information into the output using the title attribute. - # Can be :info (show token type on mouse-over), :info_long (with full path) -@@ -82,6 +92,7 @@ - :line_numbers => nil, - :line_number_start => 1, - :bold_every => 10, -+ :highlight_lines => nil, - - :hint => false, - } -Index: coderay/helpers/plugin.rb -=================================================================== ---- coderay/helpers/plugin.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/helpers/plugin.rb (.../trunk/lib) (revision 302) -@@ -303,9 +303,17 @@ - # - # The above example loads the file myplugin/my_helper.rb relative to the - # file in which MyPlugin was defined. -+ # -+ # You can also load a helper from a different plugin: -+ # -+ # helper 'other_plugin/other_helper' - def helper *helpers - for helper in helpers -- self::PLUGIN_HOST.require_helper plugin_id, helper.to_s -+ if helper.is_a?(String) && helper[/\//] -+ self::PLUGIN_HOST.require_helper $`, $' -+ else -+ self::PLUGIN_HOST.require_helper plugin_id, helper.to_s -+ end - end - end - -Index: coderay/helpers/file_type.rb -=================================================================== ---- coderay/helpers/file_type.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/helpers/file_type.rb (.../trunk/lib) (revision 302) -@@ -87,6 +87,8 @@ - 'mab' => :ruby, - 'cpp' => :c, - 'c' => :c, -+ 'gvy' => :groovy, -+ 'groovy' => :groovy, - 'h' => :c, - 'java' => :java, - 'js' => :java_script, -Index: coderay/helpers/gzip_simple.rb -=================================================================== ---- coderay/helpers/gzip_simple.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/helpers/gzip_simple.rb (.../trunk/lib) (revision 302) -@@ -2,7 +2,7 @@ - # - # A simplified interface to the gzip library +zlib+ (from the Ruby Standard Library.) - # --# Author: murphy (mail to murphy cYcnus de) -+# Author: murphy (mail to murphy rubychan de) - # - # Version: 0.2 (2005.may.28) - # -Index: coderay/styles/cycnus.rb -=================================================================== ---- coderay/styles/cycnus.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/styles/cycnus.rb (.../trunk/lib) (revision 302) -@@ -8,7 +8,7 @@ - code_background = '#f8f8f8' - numbers_background = '#def' - border_color = 'silver' -- normal_color = '#100' -+ normal_color = '#000' - - CSS_MAIN_STYLES = <<-MAIN - .CodeRay { -@@ -32,6 +32,7 @@ - text-align: right; - } - .CodeRay .line_numbers tt { font-weight: bold } -+.CodeRay .line_numbers .highlighted { color: red } - .CodeRay .no { padding: 0px 4px } - .CodeRay .code { width: 100% } - -@@ -50,7 +51,7 @@ - .av { color:#700 } - .aw { color:#C00 } - .bi { color:#509; font-weight:bold } --.c { color:#666; } -+.c { color:#888; } - - .ch { color:#04D } - .ch .k { color:#04D } -@@ -77,10 +78,10 @@ - .i { color:#00D; font-weight:bold } - .ic { color:#B44; font-weight:bold } - --.il { background: #eee } -+.il { background: #eee; color: black } - .il .il { background: #ddd } - .il .il .il { background: #ccc } --.il .idl { font-weight: bold; color: #888 } -+.il .idl { font-weight: bold; color: #777 } - - .im { color:#f00; } - .in { color:#B2B; font-weight:bold } -@@ -94,7 +95,7 @@ - .pd { color:#369; font-weight:bold } - .pp { color:#579; } - .ps { color:#00C; font-weight: bold; } --.pt { color:#339; font-weight:bold } -+.pt { color:#349; font-weight:bold } - .r, .kw { color:#080; font-weight:bold } - - .ke { color: #808; } -Index: coderay/for_redcloth.rb -=================================================================== ---- coderay/for_redcloth.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/for_redcloth.rb (.../trunk/lib) (revision 302) -@@ -1,4 +1,4 @@ --module CodeRay # :nodoc: -+module CodeRay - - # A little hack to enable CodeRay highlighting in RedCloth. - # -Index: coderay/scanners/ruby/patterns.rb -=================================================================== ---- coderay/scanners/ruby/patterns.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/scanners/ruby/patterns.rb (.../trunk/lib) (revision 302) -@@ -81,25 +81,30 @@ - /ox - METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox - -- # TODO investigste \M, \c and \C escape sequences -- # (?: M-\\C-|C-\\M-|M-\\c|c\\M-|c|C-|M-)? (?: \\ (?: [0-7]{3} | x[0-9A-Fa-f]{2} | . ) ) -- # assert_equal(225, ?\M-a) -- # assert_equal(129, ?\M-\C-a) -- ESCAPE = / -+ SIMPLE_ESCAPE = / - [abefnrstv] -- | M-\\C-|C-\\M-|M-\\c|c\\M-|c|C-|M- - | [0-7]{1,3} - | x[0-9A-Fa-f]{1,2} -- | . -+ | .? - /mx -- -+ -+ CONTROL_META_ESCAPE = / -+ (?: M-|C-|c ) -+ (?: \\ (?: M-|C-|c ) )* -+ (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? -+ /mox -+ -+ ESCAPE = / -+ #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} -+ /mox -+ - CHARACTER = / - \? - (?: - [^\s\\] - | \\ #{ESCAPE} - ) -- /mx -+ /mox - - # NOTE: This is not completely correct, but - # nobody needs heredoc delimiters ending with \n. -Index: coderay/scanners/java.rb -=================================================================== ---- coderay/scanners/java.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/scanners/java.rb (.../trunk/lib) (revision 302) -@@ -30,12 +30,11 @@ - add(KEYWORDS, :keyword). - add(MAGIC_VARIABLES, :local_variable). - add(TYPES, :type). -- add(BuiltinTypes::List, :type). -+ add(BuiltinTypes::List, :pre_type). - add(DIRECTIVES, :directive) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x -- REGEXP_ESCAPE = / [bBdDsSwW] /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, -@@ -117,15 +116,11 @@ - - end - -- when :string, :regexp -+ when :string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] -- if state == :regexp -- modifiers = scan(/[gim]+/) -- tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? -- end - tokens << [:close, state] - string_delimiter = nil - state = :initial -@@ -136,8 +131,6 @@ - else - kind = :char - end -- elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) -- kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) -@@ -166,7 +159,7 @@ - - end - -- if [:string, :regexp].include? state -+ if state == :string - tokens << [:close, state] - end - -Index: coderay/scanners/ruby.rb -=================================================================== ---- coderay/scanners/ruby.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/scanners/ruby.rb (.../trunk/lib) (revision 302) -@@ -147,6 +147,10 @@ - tokens << [match, kind] - next - -+ elsif bol? && match = scan(/\#!.*/) -+ tokens << [match, :doctype] -+ next -+ - elsif match = scan(/\#.*/) or - ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) - kind = :comment -@@ -191,6 +195,7 @@ - depth -= 1 - if depth == 0 # closing brace of inline block reached - state, depth, heredocs = inline_block_stack.pop -+ heredocs = nil if heredocs && heredocs.empty? - tokens << [match, :inline_delimiter] - kind = :inline - match = :close -@@ -346,7 +351,7 @@ - value_expected = value_expected == :set - last_token_dot = last_token_dot == :set - end -- -+ - if $DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state -Index: coderay/scanners/groovy.rb -=================================================================== ---- coderay/scanners/groovy.rb (.../tags/0.8.2/lib) (revision 0) -+++ coderay/scanners/groovy.rb (.../trunk/lib) (revision 302) -@@ -0,0 +1,271 @@ -+module CodeRay -+module Scanners -+ -+ load :java -+ -+ class Groovy < Java -+ -+ include Streamable -+ register_for :groovy -+ -+ # TODO: Check this! -+ KEYWORDS = Java::KEYWORDS + %w[ -+ as assert def in -+ ] -+ KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ -+ case instanceof new return throw typeof while as assert in -+ ] -+ -+ MAGIC_VARIABLES = Java::MAGIC_VARIABLES + %w[ it ] -+ # DIRECTIVES = %w[ -+ # abstract extends final implements native private protected public -+ # static strictfp synchronized threadsafe throws transient volatile -+ # ] -+ -+ IDENT_KIND = WordList.new(:ident). -+ add(KEYWORDS, :keyword). -+ add(MAGIC_VARIABLES, :local_variable). -+ add(TYPES, :type). -+ add(BuiltinTypes::List, :pre_type). -+ add(DIRECTIVES, :directive) -+ -+ ESCAPE = / [bfnrtv$\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x -+ UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # no 4-byte unicode chars? U[a-fA-F0-9]{8} -+ REGEXP_ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | \d | [bBdDsSwW\/] /x -+ -+ # TODO: interpretation inside ', ", / -+ STRING_CONTENT_PATTERN = { -+ "'" => /(?>\\[^\\'\n]+|[^\\'\n]+)+/, -+ '"' => /[^\\$"\n]+/, -+ "'''" => /(?>[^\\']+|'(?!''))+/, -+ '"""' => /(?>[^\\$"]+|"(?!""))+/, -+ '/' => /[^\\$\/\n]+/, -+ } -+ -+ def scan_tokens tokens, options -+ -+ state = :initial -+ inline_block_stack = [] -+ inline_block_paren_depth = nil -+ string_delimiter = nil -+ import_clause = class_name_follows = last_token = after_def = false -+ value_expected = true -+ -+ until eos? -+ -+ kind = nil -+ match = nil -+ -+ case state -+ -+ when :initial -+ -+ if match = scan(/ \s+ | \\\n /x) -+ tokens << [match, :space] -+ if match.index ?\n -+ import_clause = after_def = false -+ value_expected = true unless value_expected -+ end -+ next -+ -+ elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) -+ value_expected = true -+ after_def = false -+ kind = :comment -+ -+ elsif bol? && scan(/ \#!.* /x) -+ kind = :doctype -+ -+ elsif import_clause && scan(/ (?!as) #{IDENT} (?: \. #{IDENT} )* (?: \.\* )? /ox) -+ after_def = value_expected = false -+ kind = :include -+ -+ elsif match = scan(/ #{IDENT} | \[\] /ox) -+ kind = IDENT_KIND[match] -+ value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] -+ if last_token == '.' -+ kind = :ident -+ elsif class_name_follows -+ kind = :class -+ class_name_follows = false -+ elsif after_def && check(/\s*[({]/) -+ kind = :method -+ after_def = false -+ elsif kind == :ident && last_token != '?' && check(/:/) -+ kind = :key -+ else -+ class_name_follows = true if match == 'class' || (import_clause && match == 'as') -+ import_clause = match == 'import' -+ after_def = true if match == 'def' -+ end -+ -+ elsif scan(/;/) -+ import_clause = after_def = false -+ value_expected = true -+ kind = :operator -+ -+ elsif scan(/\{/) -+ class_name_follows = after_def = false -+ value_expected = true -+ kind = :operator -+ if !inline_block_stack.empty? -+ inline_block_paren_depth += 1 -+ end -+ -+ # TODO: ~'...', ~"..." and ~/.../ style regexps -+ elsif match = scan(/ \.\.<? | \*?\.(?!\d)@? | \.& | \?:? | [,?:(\[] | -[->] | \+\+ | -+ && | \|\| | \*\*=? | ==?~ | <=?>? | [-+*%^~&|>=!]=? | <<<?=? | >>>?=? /x) -+ value_expected = true -+ value_expected = :regexp if match == '~' -+ after_def = false -+ kind = :operator -+ -+ elsif match = scan(/ [)\]}] /x) -+ value_expected = after_def = false -+ if !inline_block_stack.empty? && match == '}' -+ inline_block_paren_depth -= 1 -+ if inline_block_paren_depth == 0 # closing brace of inline block reached -+ tokens << [match, :inline_delimiter] -+ tokens << [:close, :inline] -+ state, string_delimiter, inline_block_paren_depth = inline_block_stack.pop -+ next -+ end -+ end -+ -+ elsif check(/[\d.]/) -+ after_def = value_expected = false -+ if scan(/0[xX][0-9A-Fa-f]+/) -+ kind = :hex -+ elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) -+ kind = :oct -+ elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) -+ kind = :float -+ elsif scan(/\d+[lLgG]?/) -+ kind = :integer -+ end -+ -+ elsif match = scan(/'''|"""/) -+ after_def = value_expected = false -+ state = :multiline_string -+ tokens << [:open, :string] -+ string_delimiter = match -+ kind = :delimiter -+ -+ # TODO: record.'name' -+ elsif match = scan(/["']/) -+ after_def = value_expected = false -+ state = match == '/' ? :regexp : :string -+ tokens << [:open, state] -+ string_delimiter = match -+ kind = :delimiter -+ -+ elsif value_expected && (match = scan(/\//)) -+ after_def = value_expected = false -+ tokens << [:open, :regexp] -+ state = :regexp -+ string_delimiter = '/' -+ kind = :delimiter -+ -+ elsif scan(/ @ #{IDENT} /ox) -+ after_def = value_expected = false -+ kind = :annotation -+ -+ elsif scan(/\//) -+ after_def = false -+ value_expected = true -+ kind = :operator -+ -+ else -+ getch -+ kind = :error -+ -+ end -+ -+ when :string, :regexp, :multiline_string -+ if scan(STRING_CONTENT_PATTERN[string_delimiter]) -+ kind = :content -+ -+ elsif match = scan(state == :multiline_string ? /'''|"""/ : /["'\/]/) -+ tokens << [match, :delimiter] -+ if state == :regexp -+ # TODO: regexp modifiers? s, m, x, i? -+ modifiers = scan(/[ix]+/) -+ tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? -+ end -+ state = :string if state == :multiline_string -+ tokens << [:close, state] -+ string_delimiter = nil -+ after_def = value_expected = false -+ state = :initial -+ next -+ -+ elsif (state == :string || state == :multiline_string) && -+ (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) -+ if string_delimiter[0] == ?' && !(match == "\\\\" || match == "\\'") -+ kind = :content -+ else -+ kind = :char -+ end -+ elsif state == :regexp && scan(/ \\ (?: #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) -+ kind = :char -+ -+ elsif match = scan(/ \$ #{IDENT} /mox) -+ tokens << [:open, :inline] -+ tokens << ['$', :inline_delimiter] -+ match = match[1..-1] -+ tokens << [match, IDENT_KIND[match]] -+ tokens << [:close, :inline] -+ next -+ elsif match = scan(/ \$ \{ /x) -+ tokens << [:open, :inline] -+ tokens << ['${', :inline_delimiter] -+ inline_block_stack << [state, string_delimiter, inline_block_paren_depth] -+ inline_block_paren_depth = 1 -+ state = :initial -+ next -+ -+ elsif scan(/ \$ /mx) -+ kind = :content -+ -+ elsif scan(/ \\. /mx) -+ kind = :content -+ -+ elsif scan(/ \\ | \n /x) -+ tokens << [:close, state] -+ kind = :error -+ after_def = value_expected = false -+ state = :initial -+ -+ else -+ raise_inspect "else case \" reached; %p not handled." % peek(1), tokens -+ end -+ -+ else -+ raise_inspect 'Unknown state', tokens -+ -+ end -+ -+ match ||= matched -+ if $DEBUG and not kind -+ raise_inspect 'Error token %p in line %d' % -+ [[match, kind], line], tokens -+ end -+ raise_inspect 'Empty token', tokens unless match -+ -+ last_token = match unless [:space, :comment, :doctype].include? kind -+ -+ tokens << [match, kind] -+ -+ end -+ -+ if [:multiline_string, :string, :regexp].include? state -+ tokens << [:close, state] -+ end -+ -+ tokens -+ end -+ -+ end -+ -+end -+end -Index: coderay/scanners/css.rb -=================================================================== ---- coderay/scanners/css.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/scanners/css.rb (.../trunk/lib) (revision 302) -@@ -38,6 +38,7 @@ - Id = /##{Name}/ - Class = /\.#{Name}/ - PseudoClass = /:#{Name}/ -+ AttributeSelector = /\[[^\]]*\]?/ - - end - -@@ -55,8 +56,8 @@ - kind = :space - - elsif case states.last -- when :initial -- if scan(/#{RE::Ident}|\*/ox) -+ when :initial, :media -+ if scan(/(?>#{RE::Ident})(?!\()|\*/ox) - kind = :keyword - elsif scan RE::Class - kind = :class -@@ -64,10 +65,19 @@ - kind = :constant - elsif scan RE::PseudoClass - kind = :pseudo_class -- elsif scan RE::Name -- kind = :identifier -+ elsif match = scan(RE::AttributeSelector) -+ # TODO: Improve highlighting inside of attribute selectors. -+ tokens << [:open, :string] -+ tokens << [match[0,1], :delimiter] -+ tokens << [match[1..-2], :content] if match.size > 2 -+ tokens << [match[-1,1], :delimiter] if match[-1] == ?] -+ tokens << [:close, :string] -+ next -+ elsif match = scan(/@media/) -+ kind = :directive -+ states.push :media_before_name - end -- -+ - when :block - if scan(/(?>#{RE::Ident})(?!\()/ox) - if value_expected -@@ -77,6 +87,18 @@ - end - end - -+ when :media_before_name -+ if scan RE::Ident -+ kind = :type -+ states[-1] = :media_after_name -+ end -+ -+ when :media_after_name -+ if scan(/\{/) -+ kind = :operator -+ states[-1] = :media -+ end -+ - when :comment - if scan(/(?:[^*\s]|\*(?!\/))+/) - kind = :comment -@@ -103,7 +125,7 @@ - - elsif scan(/\}/) - value_expected = false -- if states.last == :block -+ if states.last == :block || states.last == :media - kind = :operator - states.pop - else -Index: coderay/scanners/java_script.rb -=================================================================== ---- coderay/scanners/java_script.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/scanners/java_script.rb (.../trunk/lib) (revision 302) -@@ -94,13 +94,22 @@ - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - if kind == :ident -- if match.index(?$) -+ if match.index(?$) # $ allowed inside an identifier - kind = :predefined - elsif key_expected && check(/\s*:/) - kind = :key - end - end - key_expected = false -+ -+ # TODO: string key recognition -+ # There's a problem with expressions like: PAIRS: { 'slide': ['SlideDown','SlideUp'], ... }. -+ # The commas in the array are confusing the scanner here. -+ # elsif key_expected && match = scan(/["']/) -+ # tokens << [:open, :key] -+ # state = :key -+ # string_delimiter = match -+ # kind = :delimiter - - elsif match = scan(/["']/) - tokens << [:open, :string] -@@ -125,7 +134,7 @@ - - end - -- when :string, :regexp -+ when :string, :regexp, :key - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) -@@ -139,7 +148,7 @@ - key_expected = value_expected = false - state = :initial - next -- elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) -+ elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else -@@ -150,7 +159,7 @@ - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) -- tokens << [:close, :delimiter] -+ tokens << [:close, state] - kind = :error - key_expected = value_expected = false - state = :initial -Index: coderay/scanners/_map.rb -=================================================================== ---- coderay/scanners/_map.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay/scanners/_map.rb (.../trunk/lib) (revision 302) -@@ -7,6 +7,7 @@ - :irb => :ruby, - :xhtml => :nitro_xhtml, - :javascript => :java_script, -+ :js => :java_script, - :nitro => :nitro_xhtml, - :yml => :yaml - -Index: coderay.rb -=================================================================== ---- coderay.rb (.../tags/0.8.2/lib) (revision 302) -+++ coderay.rb (.../trunk/lib) (revision 302) -@@ -130,11 +130,11 @@ - module CodeRay - - # Version: Major.Minor.Teeny[.Revision] -- # Major: 0 for pre-release -- # Minor: odd for beta, even for stable -- # Teeny: development state -- # Revision: Subversion Revision number (generated on rake) -- VERSION = '0.8' -+ # Major: 0 for pre-stable, 1 for stable -+ # Minor: feature milestone -+ # Teeny: development state, 0 for pre-release -+ # Revision: Subversion Revision number (generated on rake gem:make) -+ VERSION = '0.9.0' - - require 'coderay/tokens' - require 'coderay/scanner' -Index: README -=================================================================== ---- README (.../tags/0.8.2/lib) (revision 0) -+++ README (.../trunk/lib) (revision 302) -@@ -0,0 +1,128 @@ -+= CodeRay -+ -+[- Tired of blue'n'gray? Try the original version of this documentation on -+coderay.rubychan.de[http://coderay.rubychan.de/doc/] (use Ctrl+Click to open it in its own frame.) -] -+ -+== About -+CodeRay is a Ruby library for syntax highlighting. -+ -+Syntax highlighting means: You put your code in, and you get it back colored; -+Keywords, strings, floats, comments - all in different colors. -+And with line numbers. -+ -+*Syntax* *Highlighting*... -+* makes code easier to read and maintain -+* lets you detect syntax errors faster -+* helps you to understand the syntax of a language -+* looks nice -+* is what everybody should have on their website -+* solves all your problems and makes the girls run after you -+ -+Version: 0.8.1 -+Author:: murphy (Kornelius Kalnbach) -+Contact:: murphy rubychan de -+Website:: coderay.rubychan.de[http://coderay.rubychan.de] -+License:: GNU LGPL; see LICENSE file in the main directory. -+Subversion:: $Id$ -+ -+== Installation -+ -+You need RubyGems[http://rubyforge.org/frs/?group_id=126]. -+ -+ % gem install coderay -+ -+ -+=== Dependencies -+ -+CodeRay needs Ruby 1.8.6 or later. It should also run with Ruby 1.9 and JRuby. -+ -+ -+== Example Usage -+(Forgive me, but this is not highlighted.) -+ -+ require 'coderay' -+ -+ tokens = CodeRay.scan "puts 'Hello, world!'", :ruby -+ page = tokens.html :line_numbers => :inline, :wrap => :page -+ puts page -+ -+ -+== Documentation -+ -+See CodeRay. -+ -+Please report errors in this documentation to <murphy rubychan de>. -+ -+ -+== Credits -+ -+=== Special Thanks to -+ -+* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder -+ project and the input/output plugin system. -+ CodeRay would not exist without him. -+* bovi (Daniel Bovensiepen) for helping me out on various occasions. -+ -+=== Thanks to -+ -+* Caleb Clausen for writing RubyLexer (see -+ http://rubyforge.org/projects/rubylexer) and lots of very interesting mail -+ traffic -+* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments. -+ You guys rock! -+* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax) -+ I got some useful ideas from it. -+* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me -+ coding CodeRay, but also gave me a wonderful target to reach for the Ruby -+ scanner. -+* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de -+* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de -+* Dethix from ruby-mine.de -+* zickzackw -+* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de -+* Andreas Schwarz for finding out that CaseIgnoringWordList was not case -+ ignoring! Such things really make you write tests. -+* closure for the first version of the Scheme scanner. -+* Stefan Walk for the first version of the JavaScript scanner. -+* Josh Goebel for another version of the JavaScript scanner and a Diff scanner. -+* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. -+* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. -+* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. -+* The folks at redmine.org - thank you for using and fixing CodeRay! -+* matz and all Ruby gods and gurus -+* The inventors of: the computer, the internet, the true color display, HTML & -+ CSS, VIM, RUBY, pizza, microwaves, guitars, scouting, programming, anime, -+ manga, coke and green ice tea. -+ -+Where would we be without all those people? -+ -+=== Created using -+ -+* Ruby[http://ruby-lang.org/] -+* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook); -+ Triella, born Rico (my new MacBook); as well as -+ Seras and Hikari (my PCs) -+* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html], -+ VIM[http://vim.org] and TextMate[http://macromates.com] -+* Subversion[http://subversion.tigris.org/] -+* Redmine[http://redmine.org/] -+* Firefox[http://www.mozilla.org/products/firefox/], -+ Firebug[http://getfirebug.com/], and -+ Thunderbird[http://www.mozilla.org/products/thunderbird/] -+* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/] -+* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via -+ XAMPP[http://www.apachefriends.org/en/xampp.html] -+* RDoc (though I'm quite unsatisfied with it) -+* Microsoft Windows (yes, I confess!) and MacOS X -+* GNUWin32, MinGW and some other tools to make the shell under windows a bit -+ less useless -+* Term::ANSIColor[http://term-ansicolor.rubyforge.org/] -+* PLEAC[http://pleac.sourceforge.net/] code examples -+ -+=== Free -+ -+* As you can see, CodeRay was created under heavy use of *free* software. -+* So CodeRay is also *free*. -+* If you use CodeRay to create software, think about making this software -+ *free*, too. -+* Thanks :) - -Property changes on: README -___________________________________________________________________ -Added: svn:keywords - + Id -Added: svn:mergeinfo - diff --git a/etc/0.8.2-vs-0.8.3.diff b/etc/0.8.2-vs-0.8.3.diff deleted file mode 100644 index a3d19ca..0000000 --- a/etc/0.8.2-vs-0.8.3.diff +++ /dev/null @@ -1,656 +0,0 @@ -Index: test/functional/basic.rb -=================================================================== ---- test/functional/basic.rb (revision 308) -+++ test/functional/basic.rb (working copy) -@@ -48,11 +48,30 @@ - <div lang="ruby" class="CodeRay"> - <div class="code"><pre>puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">Hello, World!</span><span style="color:#710">"</span></span></pre></div> - </div> --</pre> - BLOCKCODE - RedCloth.new('bc[ruby]. puts "Hello, World!"').to_html - end - -+ def test_for_redcloth_no_lang -+ require 'rubygems' -+ require 'coderay/for_redcloth' -+ assert_equal "<p><code>puts \"Hello, World!\"</code></p>", -+ RedCloth.new('@puts "Hello, World!"@').to_html -+ assert_equal <<-BLOCKCODE.chomp, -+<pre><code>puts \"Hello, World!\"</code></pre> -+ BLOCKCODE -+ RedCloth.new('bc. puts "Hello, World!"').to_html -+ end -+ -+ def test_for_redcloth_style -+ require 'rubygems' -+ require 'coderay/for_redcloth' -+ assert_equal <<-BLOCKCODE.chomp, -+<pre style=\"color: red;\"><code style=\"color: red;\">puts \"Hello, World!\"</code></pre> -+ BLOCKCODE -+ RedCloth.new('bc{color: red}. puts "Hello, World!"').to_html -+ end -+ - def test_for_redcloth_escapes - require 'rubygems' - require 'coderay/for_redcloth' -@@ -62,7 +81,6 @@ - <div lang="ruby" class="CodeRay"> - <div class="code"><pre>&</pre></div> - </div> --</pre> - BLOCKCODE - RedCloth.new('bc[ruby]. &').to_html - end -Index: test/scanners/java/jruby.expected.raydebug -=================================================================== ---- test/scanners/java/jruby.expected.raydebug (revision 308) -+++ test/scanners/java/jruby.expected.raydebug (working copy) -@@ -50,7 +50,7 @@ - * @author pldms - * - */) --directive(public) type(interface) ident(Finalizable) operator({) -+directive(public) type(interface) class(Finalizable) operator({) - directive(public) type(void) ident(finalize)operator(()operator(\))operator(;) - operator(}) - comment(/***** BEGIN LICENSE BLOCK ***** -@@ -91,7 +91,7 @@ - * The purpose of this class it to help implement the Errno module which in turn in needed by rubicon. - * @author Benoit Cerrina - **/) --directive(public) type(interface) ident(IErrno) -+directive(public) type(interface) class(IErrno) - operator({) - type(int) ident(EPERM) operator(=) integer(1)operator(;) - type(int) ident(ENOENT) operator(=) integer(2)operator(;) -@@ -590,7 +590,7 @@ - directive(private) pre_type(Graphics) ident(backBufferGraphics)operator(;) - directive(private) ident(Facade) ident(facade)operator(;) - -- directive(private) type(interface) ident(Facade) operator({) -+ directive(private) type(interface) class(Facade) operator({) - directive(public) pre_type(InputStream) ident(getInputStream)operator(()operator(\))operator(;) - directive(public) pre_type(PrintStream) ident(getOutputStream)operator(()operator(\))operator(;) - directive(public) pre_type(PrintStream) ident(getErrorStream)operator(()operator(\))operator(;) -@@ -1742,7 +1742,7 @@ - comment(/** - * @author <a href="mailto:ola.bini@ki.se">Ola Bini</a> - */) --directive(public) type(interface) ident(Profile) operator({) -+directive(public) type(interface) class(Profile) operator({) - ident(Profile) ident(ALL) operator(=) keyword(new) ident(Profile)operator(()operator(\)) operator({) - directive(public) type(boolean) ident(allowBuiltin)operator(()pre_type(String) ident(name)operator(\)) operator({) keyword(return) keyword(true)operator(;) operator(}) - directive(public) type(boolean) ident(allowClass)operator(()pre_type(String) ident(name)operator(\)) operator({) keyword(return) keyword(true)operator(;) operator(}) -@@ -21557,7 +21557,7 @@ - directive(public) directive(static) type(boolean) ident(nativeEnabled) operator(=) keyword(true)operator(;) - - -- directive(public) directive(static) type(interface) ident(LoadServiceCreator) operator({) -+ directive(public) directive(static) type(interface) class(LoadServiceCreator) operator({) - ident(LoadService) ident(create)operator(()ident(Ruby) ident(runtime)operator(\))operator(;) - - ident(LoadServiceCreator) ident(DEFAULT) operator(=) keyword(new) ident(LoadServiceCreator)operator(()operator(\)) operator({) -@@ -36946,7 +36946,7 @@ - * - * @author nicksieger - */) --directive(public) type(interface) ident(RubyObjectAdapter) operator({) -+directive(public) type(interface) class(RubyObjectAdapter) operator({) - - type(boolean) ident(isKindOf)operator(()ident(IRubyObject) ident(value)operator(,) ident(RubyModule) ident(rubyModule)operator(\))operator(;) - -@@ -40779,7 +40779,7 @@ - * - * @author nicksieger - */) --directive(public) type(interface) ident(RubyRuntimeAdapter) operator({) -+directive(public) type(interface) class(RubyRuntimeAdapter) operator({) - ident(IRubyObject) ident(eval)operator(()ident(Ruby) ident(runtime)operator(,) pre_type(String) ident(script)operator(\))operator(;) - operator(}) - comment(/***** BEGIN LICENSE BLOCK ***** -Index: test/scanners/javascript/script.aculo.us.expected.raydebug -=================================================================== ---- test/scanners/javascript/script.aculo.us.expected.raydebug (revision 308) -+++ test/scanners/javascript/script.aculo.us.expected.raydebug (working copy) -@@ -2083,9 +2083,9 @@ - operator(}\))operator(;) - operator(})operator(,) - key(PAIRS)operator(:) operator({) -- string<delimiter(')content(slide)delimiter(')>operator(:) operator([)string<delimiter(')content(SlideDown)delimiter(')>operator(,)string<delimiter(')content(SlideUp)delimiter(')>operator(])operator(,) -- string<delimiter(')content(blind)delimiter(')>operator(:) operator([)string<delimiter(')content(BlindDown)delimiter(')>operator(,)string<delimiter(')content(BlindUp)delimiter(')>operator(])operator(,) -- string<delimiter(')content(appear)delimiter(')>operator(:) operator([)string<delimiter(')content(Appear)delimiter(')>operator(,)string<delimiter(')content(Fade)delimiter(')>operator(]) -+ key<delimiter(')content(slide)delimiter(')>operator(:) operator([)string<delimiter(')content(SlideDown)delimiter(')>operator(,)string<delimiter(')content(SlideUp)delimiter(')>operator(])operator(,) -+ key<delimiter(')content(blind)delimiter(')>operator(:) operator([)string<delimiter(')content(BlindDown)delimiter(')>operator(,)string<delimiter(')content(BlindUp)delimiter(')>operator(])operator(,) -+ key<delimiter(')content(appear)delimiter(')>operator(:) operator([)string<delimiter(')content(Appear)delimiter(')>operator(,)string<delimiter(')content(Fade)delimiter(')>operator(]) - operator(})operator(,) - key(toggle)operator(:) keyword(function)operator(()ident(element)operator(,) ident(effect)operator(\)) operator({) - ident(element) operator(=) predefined($)operator(()ident(element)operator(\))operator(;) -@@ -3378,12 +3378,12 @@ - keyword(return) ident(value) operator(==) keyword(null) operator(?) string<delimiter(')delimiter(')> operator(:) ident(String)operator(()ident(value)operator(\))operator(;) - operator(})operator(,) - key(specialChar)operator(:) operator({) -- string<delimiter(')content(\\b)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(b)delimiter(')>operator(,) -- string<delimiter(')content(\\t)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(t)delimiter(')>operator(,) -- string<delimiter(')content(\\n)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(n)delimiter(')>operator(,) -- string<delimiter(')content(\\f)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(f)delimiter(')>operator(,) -- string<delimiter(')content(\\r)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(r)delimiter(')>operator(,) -- string<delimiter(')char(\\\\)delimiter(')>operator(:) string<delimiter(')char(\\\\)char(\\\\)delimiter(')> -+ key<delimiter(')content(\\b)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(b)delimiter(')>operator(,) -+ key<delimiter(')content(\\t)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(t)delimiter(')>operator(,) -+ key<delimiter(')content(\\n)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(n)delimiter(')>operator(,) -+ key<delimiter(')content(\\f)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(f)delimiter(')>operator(,) -+ key<delimiter(')content(\\r)delimiter(')>operator(:) string<delimiter(')char(\\\\)content(r)delimiter(')>operator(,) -+ key<delimiter(')char(\\\\)delimiter(')>operator(:) string<delimiter(')char(\\\\)char(\\\\)delimiter(')> - operator(}) - operator(}\))operator(;) - -@@ -4296,9 +4296,9 @@ - - key(setRequestHeaders)operator(:) keyword(function)operator(()operator(\)) operator({) - keyword(var) ident(headers) operator(=) operator({) -- string<delimiter(')content(X-Requested-With)delimiter(')>operator(:) string<delimiter(')content(XMLHttpRequest)delimiter(')>operator(,) -- string<delimiter(')content(X-Prototype-Version)delimiter(')>operator(:) ident(Prototype)operator(.)ident(Version)operator(,) -- string<delimiter(')content(Accept)delimiter(')>operator(:) string<delimiter(')content(text/javascript, text/html, application/xml, text/xml, */*)delimiter(')> -+ key<delimiter(')content(X-Requested-With)delimiter(')>operator(:) string<delimiter(')content(XMLHttpRequest)delimiter(')>operator(,) -+ key<delimiter(')content(X-Prototype-Version)delimiter(')>operator(:) ident(Prototype)operator(.)ident(Version)operator(,) -+ key<delimiter(')content(Accept)delimiter(')>operator(:) string<delimiter(')content(text/javascript, text/html, application/xml, text/xml, */*)delimiter(')> - operator(})operator(;) - - keyword(if) operator(()local_variable(this)operator(.)ident(method) operator(==) string<delimiter(')content(post)delimiter(')>operator(\)) operator({) -@@ -4705,7 +4705,7 @@ - key(inspect)operator(:) keyword(function)operator(()ident(element)operator(\)) operator({) - ident(element) operator(=) predefined($)operator(()ident(element)operator(\))operator(;) - keyword(var) ident(result) operator(=) string<delimiter(')content(<)delimiter(')> operator(+) ident(element)operator(.)ident(tagName)operator(.)ident(toLowerCase)operator(()operator(\))operator(;) -- predefined($H)operator(({)string<delimiter(')content(id)delimiter(')>operator(:) string<delimiter(')content(id)delimiter(')>operator(,) string<delimiter(')content(className)delimiter(')>operator(:) string<delimiter(')content(class)delimiter(')>operator(}\))operator(.)ident(each)operator(()keyword(function)operator(()ident(pair)operator(\)) operator({) -+ predefined($H)operator(({)key<delimiter(')content(id)delimiter(')>operator(:) string<delimiter(')content(id)delimiter(')>operator(,) key<delimiter(')content(className)delimiter(')>operator(:) string<delimiter(')content(class)delimiter(')>operator(}\))operator(.)ident(each)operator(()keyword(function)operator(()ident(pair)operator(\)) operator({) - keyword(var) ident(property) operator(=) ident(pair)operator(.)ident(first)operator(()operator(\))operator(,) ident(attribute) operator(=) ident(pair)operator(.)ident(last)operator(()operator(\))operator(;) - keyword(var) ident(value) operator(=) operator(()ident(element)operator([)ident(property)operator(]) operator(||) string<delimiter(')delimiter(')>operator(\))operator(.)ident(toString)operator(()operator(\))operator(;) - keyword(if) operator(()ident(value)operator(\)) ident(result) operator(+=) string<delimiter(')content( )delimiter(')> operator(+) ident(attribute) operator(+) string<delimiter(')content(=)delimiter(')> operator(+) ident(value)operator(.)ident(inspect)operator(()keyword(true)operator(\))operator(;) -@@ -5352,8 +5352,8 @@ - ident(Element)operator(.)ident(_attributeTranslations) operator(=) operator({) - key(read)operator(:) operator({) - key(names)operator(:) operator({) -- string<delimiter(')content(class)delimiter(')>operator(:) string<delimiter(')content(className)delimiter(')>operator(,) -- string<delimiter(')content(for)delimiter(')>operator(:) string<delimiter(')content(htmlFor)delimiter(')> -+ key<delimiter(')content(class)delimiter(')>operator(:) string<delimiter(')content(className)delimiter(')>operator(,) -+ key<delimiter(')content(for)delimiter(')>operator(:) string<delimiter(')content(htmlFor)delimiter(')> - operator(})operator(,) - key(values)operator(:) operator({) - key(_getAttr)operator(:) keyword(function)operator(()ident(element)operator(,) ident(attribute)operator(\)) operator({) -@@ -5667,10 +5667,10 @@ - ident(Object)operator(.)ident(extend)operator(()ident(Form)operator(,) ident(Form)operator(.)ident(Methods)operator(\))operator(;) - ident(Object)operator(.)ident(extend)operator(()ident(Form)operator(.)ident(Element)operator(,) ident(Form)operator(.)ident(Element)operator(.)ident(Methods)operator(\))operator(;) - ident(Object)operator(.)ident(extend)operator(()ident(Element)operator(.)ident(Methods)operator(.)ident(ByTag)operator(,) operator({) -- string<delimiter(")content(FORM)delimiter(")>operator(:) ident(Object)operator(.)ident(clone)operator(()ident(Form)operator(.)ident(Methods)operator(\))operator(,) -- string<delimiter(")content(INPUT)delimiter(")>operator(:) ident(Object)operator(.)ident(clone)operator(()ident(Form)operator(.)ident(Element)operator(.)ident(Methods)operator(\))operator(,) -- string<delimiter(")content(SELECT)delimiter(")>operator(:) ident(Object)operator(.)ident(clone)operator(()ident(Form)operator(.)ident(Element)operator(.)ident(Methods)operator(\))operator(,) -- string<delimiter(")content(TEXTAREA)delimiter(")>operator(:) ident(Object)operator(.)ident(clone)operator(()ident(Form)operator(.)ident(Element)operator(.)ident(Methods)operator(\)) -+ key<delimiter(")content(FORM)delimiter(")>operator(:) ident(Object)operator(.)ident(clone)operator(()ident(Form)operator(.)ident(Methods)operator(\))operator(,) -+ key<delimiter(")content(INPUT)delimiter(")>operator(:) ident(Object)operator(.)ident(clone)operator(()ident(Form)operator(.)ident(Element)operator(.)ident(Methods)operator(\))operator(,) -+ key<delimiter(")content(SELECT)delimiter(")>operator(:) ident(Object)operator(.)ident(clone)operator(()ident(Form)operator(.)ident(Element)operator(.)ident(Methods)operator(\))operator(,) -+ key<delimiter(")content(TEXTAREA)delimiter(")>operator(:) ident(Object)operator(.)ident(clone)operator(()ident(Form)operator(.)ident(Element)operator(.)ident(Methods)operator(\)) - operator(}\))operator(;) - operator(}) - -@@ -5705,15 +5705,15 @@ - keyword(function) ident(findDOMClass)operator(()ident(tagName)operator(\)) operator({) - keyword(var) ident(klass)operator(;) - keyword(var) ident(trans) operator(=) operator({) -- string<delimiter(")content(OPTGROUP)delimiter(")>operator(:) string<delimiter(")content(OptGroup)delimiter(")>operator(,) string<delimiter(")content(TEXTAREA)delimiter(")>operator(:) string<delimiter(")content(TextArea)delimiter(")>operator(,) string<delimiter(")content(P)delimiter(")>operator(:) string<delimiter(")content(Paragraph)delimiter(")>operator(,) -- string<delimiter(")content(FIELDSET)delimiter(")>operator(:) string<delimiter(")content(FieldSet)delimiter(")>operator(,) string<delimiter(")content(UL)delimiter(")>operator(:) string<delimiter(")content(UList)delimiter(")>operator(,) string<delimiter(")content(OL)delimiter(")>operator(:) string<delimiter(")content(OList)delimiter(")>operator(,) string<delimiter(")content(DL)delimiter(")>operator(:) string<delimiter(")content(DList)delimiter(")>operator(,) -- string<delimiter(")content(DIR)delimiter(")>operator(:) string<delimiter(")content(Directory)delimiter(")>operator(,) string<delimiter(")content(H1)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) string<delimiter(")content(H2)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) string<delimiter(")content(H3)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) -- string<delimiter(")content(H4)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) string<delimiter(")content(H5)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) string<delimiter(")content(H6)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) string<delimiter(")content(Q)delimiter(")>operator(:) string<delimiter(")content(Quote)delimiter(")>operator(,) -- string<delimiter(")content(INS)delimiter(")>operator(:) string<delimiter(")content(Mod)delimiter(")>operator(,) string<delimiter(")content(DEL)delimiter(")>operator(:) string<delimiter(")content(Mod)delimiter(")>operator(,) string<delimiter(")content(A)delimiter(")>operator(:) string<delimiter(")content(Anchor)delimiter(")>operator(,) string<delimiter(")content(IMG)delimiter(")>operator(:) string<delimiter(")content(Image)delimiter(")>operator(,) string<delimiter(")content(CAPTION)delimiter(")>operator(:) -- string<delimiter(")content(TableCaption)delimiter(")>operator(,) string<delimiter(")content(COL)delimiter(")>operator(:) string<delimiter(")content(TableCol)delimiter(")>operator(,) string<delimiter(")content(COLGROUP)delimiter(")>operator(:) string<delimiter(")content(TableCol)delimiter(")>operator(,) string<delimiter(")content(THEAD)delimiter(")>operator(:) -- string<delimiter(")content(TableSection)delimiter(")>operator(,) string<delimiter(")content(TFOOT)delimiter(")>operator(:) string<delimiter(")content(TableSection)delimiter(")>operator(,) string<delimiter(")content(TBODY)delimiter(")>operator(:) string<delimiter(")content(TableSection)delimiter(")>operator(,) string<delimiter(")content(TR)delimiter(")>operator(:) -- string<delimiter(")content(TableRow)delimiter(")>operator(,) string<delimiter(")content(TH)delimiter(")>operator(:) string<delimiter(")content(TableCell)delimiter(")>operator(,) string<delimiter(")content(TD)delimiter(")>operator(:) string<delimiter(")content(TableCell)delimiter(")>operator(,) string<delimiter(")content(FRAMESET)delimiter(")>operator(:) -- string<delimiter(")content(FrameSet)delimiter(")>operator(,) string<delimiter(")content(IFRAME)delimiter(")>operator(:) string<delimiter(")content(IFrame)delimiter(")> -+ key<delimiter(")content(OPTGROUP)delimiter(")>operator(:) string<delimiter(")content(OptGroup)delimiter(")>operator(,) key<delimiter(")content(TEXTAREA)delimiter(")>operator(:) string<delimiter(")content(TextArea)delimiter(")>operator(,) key<delimiter(")content(P)delimiter(")>operator(:) string<delimiter(")content(Paragraph)delimiter(")>operator(,) -+ key<delimiter(")content(FIELDSET)delimiter(")>operator(:) string<delimiter(")content(FieldSet)delimiter(")>operator(,) key<delimiter(")content(UL)delimiter(")>operator(:) string<delimiter(")content(UList)delimiter(")>operator(,) key<delimiter(")content(OL)delimiter(")>operator(:) string<delimiter(")content(OList)delimiter(")>operator(,) key<delimiter(")content(DL)delimiter(")>operator(:) string<delimiter(")content(DList)delimiter(")>operator(,) -+ key<delimiter(")content(DIR)delimiter(")>operator(:) string<delimiter(")content(Directory)delimiter(")>operator(,) key<delimiter(")content(H1)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) key<delimiter(")content(H2)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) key<delimiter(")content(H3)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) -+ key<delimiter(")content(H4)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) key<delimiter(")content(H5)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) key<delimiter(")content(H6)delimiter(")>operator(:) string<delimiter(")content(Heading)delimiter(")>operator(,) key<delimiter(")content(Q)delimiter(")>operator(:) string<delimiter(")content(Quote)delimiter(")>operator(,) -+ key<delimiter(")content(INS)delimiter(")>operator(:) string<delimiter(")content(Mod)delimiter(")>operator(,) key<delimiter(")content(DEL)delimiter(")>operator(:) string<delimiter(")content(Mod)delimiter(")>operator(,) key<delimiter(")content(A)delimiter(")>operator(:) string<delimiter(")content(Anchor)delimiter(")>operator(,) key<delimiter(")content(IMG)delimiter(")>operator(:) string<delimiter(")content(Image)delimiter(")>operator(,) key<delimiter(")content(CAPTION)delimiter(")>operator(:) -+ string<delimiter(")content(TableCaption)delimiter(")>operator(,) key<delimiter(")content(COL)delimiter(")>operator(:) string<delimiter(")content(TableCol)delimiter(")>operator(,) key<delimiter(")content(COLGROUP)delimiter(")>operator(:) string<delimiter(")content(TableCol)delimiter(")>operator(,) key<delimiter(")content(THEAD)delimiter(")>operator(:) -+ string<delimiter(")content(TableSection)delimiter(")>operator(,) key<delimiter(")content(TFOOT)delimiter(")>operator(:) string<delimiter(")content(TableSection)delimiter(")>operator(,) key<delimiter(")content(TBODY)delimiter(")>operator(:) string<delimiter(")content(TableSection)delimiter(")>operator(,) key<delimiter(")content(TR)delimiter(")>operator(:) -+ string<delimiter(")content(TableRow)delimiter(")>operator(,) key<delimiter(")content(TH)delimiter(")>operator(:) string<delimiter(")content(TableCell)delimiter(")>operator(,) key<delimiter(")content(TD)delimiter(")>operator(:) string<delimiter(")content(TableCell)delimiter(")>operator(,) key<delimiter(")content(FRAMESET)delimiter(")>operator(:) -+ string<delimiter(")content(FrameSet)delimiter(")>operator(,) key<delimiter(")content(IFRAME)delimiter(")>operator(:) string<delimiter(")content(IFrame)delimiter(")> - operator(})operator(;) - keyword(if) operator(()ident(trans)operator([)ident(tagName)operator(]\)) ident(klass) operator(=) string<delimiter(')content(HTML)delimiter(')> operator(+) ident(trans)operator([)ident(tagName)operator(]) operator(+) string<delimiter(')content(Element)delimiter(')>operator(;) - keyword(if) operator(()ident(window)operator([)ident(klass)operator(]\)) keyword(return) ident(window)operator([)ident(klass)operator(])operator(;) -@@ -5941,23 +5941,23 @@ - keyword(return) keyword(new) ident(Template)operator(()ident(Selector)operator(.)ident(xpath)operator(.)ident(pseudos)operator([)ident(m)operator([)integer(1)operator(]]\))operator(.)ident(evaluate)operator(()ident(m)operator(\))operator(;) - operator(})operator(,) - key(operators)operator(:) operator({) -- string<delimiter(')content(=)delimiter(')>operator(:) string<delimiter(")content([@#{1}='#{3}'])delimiter(")>operator(,) -- string<delimiter(')content(!=)delimiter(')>operator(:) string<delimiter(")content([@#{1}!='#{3}'])delimiter(")>operator(,) -- string<delimiter(')content(^=)delimiter(')>operator(:) string<delimiter(")content([starts-with(@#{1}, '#{3}'\)])delimiter(")>operator(,) -- string<delimiter(')content($=)delimiter(')>operator(:) string<delimiter(")content([substring(@#{1}, (string-length(@#{1}\) - string-length('#{3}'\) + 1\)\)='#{3}'])delimiter(")>operator(,) -- string<delimiter(')content(*=)delimiter(')>operator(:) string<delimiter(")content([contains(@#{1}, '#{3}'\)])delimiter(")>operator(,) -- string<delimiter(')content(~=)delimiter(')>operator(:) string<delimiter(")content([contains(concat(' ', @#{1}, ' '\), ' #{3} '\)])delimiter(")>operator(,) -- string<delimiter(')content(|=)delimiter(')>operator(:) string<delimiter(")content([contains(concat('-', @#{1}, '-'\), '-#{3}-'\)])delimiter(")> -+ key<delimiter(')content(=)delimiter(')>operator(:) string<delimiter(")content([@#{1}='#{3}'])delimiter(")>operator(,) -+ key<delimiter(')content(!=)delimiter(')>operator(:) string<delimiter(")content([@#{1}!='#{3}'])delimiter(")>operator(,) -+ key<delimiter(')content(^=)delimiter(')>operator(:) string<delimiter(")content([starts-with(@#{1}, '#{3}'\)])delimiter(")>operator(,) -+ key<delimiter(')content($=)delimiter(')>operator(:) string<delimiter(")content([substring(@#{1}, (string-length(@#{1}\) - string-length('#{3}'\) + 1\)\)='#{3}'])delimiter(")>operator(,) -+ key<delimiter(')content(*=)delimiter(')>operator(:) string<delimiter(")content([contains(@#{1}, '#{3}'\)])delimiter(")>operator(,) -+ key<delimiter(')content(~=)delimiter(')>operator(:) string<delimiter(")content([contains(concat(' ', @#{1}, ' '\), ' #{3} '\)])delimiter(")>operator(,) -+ key<delimiter(')content(|=)delimiter(')>operator(:) string<delimiter(")content([contains(concat('-', @#{1}, '-'\), '-#{3}-'\)])delimiter(")> - operator(})operator(,) - key(pseudos)operator(:) operator({) -- string<delimiter(')content(first-child)delimiter(')>operator(:) string<delimiter(')content([not(preceding-sibling::*\)])delimiter(')>operator(,) -- string<delimiter(')content(last-child)delimiter(')>operator(:) string<delimiter(')content([not(following-sibling::*\)])delimiter(')>operator(,) -- string<delimiter(')content(only-child)delimiter(')>operator(:) string<delimiter(')content([not(preceding-sibling::* or following-sibling::*\)])delimiter(')>operator(,) -- string<delimiter(')content(empty)delimiter(')>operator(:) string<delimiter(")content([count(*\) = 0 and (count(text(\)\) = 0 or translate(text(\), ' )char(\\t)char(\\r)char(\\n)content(', ''\) = ''\)])delimiter(")>operator(,) -- string<delimiter(')content(checked)delimiter(')>operator(:) string<delimiter(")content([@checked])delimiter(")>operator(,) -- string<delimiter(')content(disabled)delimiter(')>operator(:) string<delimiter(")content([@disabled])delimiter(")>operator(,) -- string<delimiter(')content(enabled)delimiter(')>operator(:) string<delimiter(")content([not(@disabled\)])delimiter(")>operator(,) -- string<delimiter(')content(not)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) -+ key<delimiter(')content(first-child)delimiter(')>operator(:) string<delimiter(')content([not(preceding-sibling::*\)])delimiter(')>operator(,) -+ key<delimiter(')content(last-child)delimiter(')>operator(:) string<delimiter(')content([not(following-sibling::*\)])delimiter(')>operator(,) -+ key<delimiter(')content(only-child)delimiter(')>operator(:) string<delimiter(')content([not(preceding-sibling::* or following-sibling::*\)])delimiter(')>operator(,) -+ key<delimiter(')content(empty)delimiter(')>operator(:) string<delimiter(")content([count(*\) = 0 and (count(text(\)\) = 0 or translate(text(\), ' )char(\\t)char(\\r)char(\\n)content(', ''\) = ''\)])delimiter(")>operator(,) -+ key<delimiter(')content(checked)delimiter(')>operator(:) string<delimiter(")content([@checked])delimiter(")>operator(,) -+ key<delimiter(')content(disabled)delimiter(')>operator(:) string<delimiter(")content([@disabled])delimiter(")>operator(,) -+ key<delimiter(')content(enabled)delimiter(')>operator(:) string<delimiter(")content([not(@disabled\)])delimiter(")>operator(,) -+ key<delimiter(')content(not)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) - keyword(var) ident(e) operator(=) ident(m)operator([)integer(6)operator(])operator(,) ident(p) operator(=) ident(Selector)operator(.)ident(patterns)operator(,) - ident(x) operator(=) ident(Selector)operator(.)ident(xpath)operator(,) ident(le)operator(,) ident(v)operator(;) - -@@ -5975,25 +5975,25 @@ - operator(}) - keyword(return) string<delimiter(")content([not()delimiter(")> operator(+) ident(exclusion)operator(.)ident(join)operator(()string<delimiter(")content( and )delimiter(")>operator(\)) operator(+) string<delimiter(")content(\)])delimiter(")>operator(;) - operator(})operator(,) -- string<delimiter(')content(nth-child)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) -+ key<delimiter(')content(nth-child)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(xpath)operator(.)ident(pseudos)operator(.)ident(nth)operator(()string<delimiter(")content((count(./preceding-sibling::*\) + 1\) )delimiter(")>operator(,) ident(m)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(nth-last-child)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) -+ key<delimiter(')content(nth-last-child)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(xpath)operator(.)ident(pseudos)operator(.)ident(nth)operator(()string<delimiter(")content((count(./following-sibling::*\) + 1\) )delimiter(")>operator(,) ident(m)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(nth-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) -+ key<delimiter(')content(nth-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(xpath)operator(.)ident(pseudos)operator(.)ident(nth)operator(()string<delimiter(")content(position(\) )delimiter(")>operator(,) ident(m)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(nth-last-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) -+ key<delimiter(')content(nth-last-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(xpath)operator(.)ident(pseudos)operator(.)ident(nth)operator(()string<delimiter(")content((last(\) + 1 - position(\)\) )delimiter(")>operator(,) ident(m)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(first-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) -+ key<delimiter(')content(first-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) - ident(m)operator([)integer(6)operator(]) operator(=) string<delimiter(")content(1)delimiter(")>operator(;) keyword(return) ident(Selector)operator(.)ident(xpath)operator(.)ident(pseudos)operator([)string<delimiter(')content(nth-of-type)delimiter(')>operator(])operator(()ident(m)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(last-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) -+ key<delimiter(')content(last-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) - ident(m)operator([)integer(6)operator(]) operator(=) string<delimiter(")content(1)delimiter(")>operator(;) keyword(return) ident(Selector)operator(.)ident(xpath)operator(.)ident(pseudos)operator([)string<delimiter(')content(nth-last-of-type)delimiter(')>operator(])operator(()ident(m)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(only-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) -+ key<delimiter(')content(only-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(m)operator(\)) operator({) - keyword(var) ident(p) operator(=) ident(Selector)operator(.)ident(xpath)operator(.)ident(pseudos)operator(;) keyword(return) ident(p)operator([)string<delimiter(')content(first-of-type)delimiter(')>operator(])operator(()ident(m)operator(\)) operator(+) ident(p)operator([)string<delimiter(')content(last-of-type)delimiter(')>operator(])operator(()ident(m)operator(\))operator(;) - operator(})operator(,) - key(nth)operator(:) keyword(function)operator(()ident(fragment)operator(,) ident(m)operator(\)) operator({) -@@ -6258,46 +6258,46 @@ - operator(})operator(,) - - key(pseudos)operator(:) operator({) -- string<delimiter(')content(first-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(first-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) - keyword(for) operator(()keyword(var) ident(i) operator(=) integer(0)operator(,) ident(results) operator(=) operator([)operator(])operator(,) ident(node)operator(;) ident(node) operator(=) ident(nodes)operator([)ident(i)operator(])operator(;) ident(i)operator(++)operator(\)) operator({) - keyword(if) operator(()ident(Selector)operator(.)ident(handlers)operator(.)ident(previousElementSibling)operator(()ident(node)operator(\)\)) keyword(continue)operator(;) - ident(results)operator(.)ident(push)operator(()ident(node)operator(\))operator(;) - operator(}) - keyword(return) ident(results)operator(;) - operator(})operator(,) -- string<delimiter(')content(last-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(last-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) - keyword(for) operator(()keyword(var) ident(i) operator(=) integer(0)operator(,) ident(results) operator(=) operator([)operator(])operator(,) ident(node)operator(;) ident(node) operator(=) ident(nodes)operator([)ident(i)operator(])operator(;) ident(i)operator(++)operator(\)) operator({) - keyword(if) operator(()ident(Selector)operator(.)ident(handlers)operator(.)ident(nextElementSibling)operator(()ident(node)operator(\)\)) keyword(continue)operator(;) - ident(results)operator(.)ident(push)operator(()ident(node)operator(\))operator(;) - operator(}) - keyword(return) ident(results)operator(;) - operator(})operator(,) -- string<delimiter(')content(only-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(only-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) - keyword(var) ident(h) operator(=) ident(Selector)operator(.)ident(handlers)operator(;) - keyword(for) operator(()keyword(var) ident(i) operator(=) integer(0)operator(,) ident(results) operator(=) operator([)operator(])operator(,) ident(node)operator(;) ident(node) operator(=) ident(nodes)operator([)ident(i)operator(])operator(;) ident(i)operator(++)operator(\)) - keyword(if) operator((!)ident(h)operator(.)ident(previousElementSibling)operator(()ident(node)operator(\)) operator(&&) operator(!)ident(h)operator(.)ident(nextElementSibling)operator(()ident(node)operator(\)\)) - ident(results)operator(.)ident(push)operator(()ident(node)operator(\))operator(;) - keyword(return) ident(results)operator(;) - operator(})operator(,) -- string<delimiter(')content(nth-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(nth-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(pseudos)operator(.)ident(nth)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(nth-last-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(nth-last-child)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(pseudos)operator(.)ident(nth)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(,) keyword(true)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(nth-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(nth-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(pseudos)operator(.)ident(nth)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(,) keyword(false)operator(,) keyword(true)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(nth-last-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(nth-last-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(pseudos)operator(.)ident(nth)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(,) keyword(true)operator(,) keyword(true)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(first-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(first-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(pseudos)operator(.)ident(nth)operator(()ident(nodes)operator(,) string<delimiter(")content(1)delimiter(")>operator(,) ident(root)operator(,) keyword(false)operator(,) keyword(true)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(last-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(last-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) - keyword(return) ident(Selector)operator(.)ident(pseudos)operator(.)ident(nth)operator(()ident(nodes)operator(,) string<delimiter(")content(1)delimiter(")>operator(,) ident(root)operator(,) keyword(true)operator(,) keyword(true)operator(\))operator(;) - operator(})operator(,) -- string<delimiter(')content(only-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(only-of-type)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\)) operator({) - keyword(var) ident(p) operator(=) ident(Selector)operator(.)ident(pseudos)operator(;) - keyword(return) ident(p)operator([)string<delimiter(')content(last-of-type)delimiter(')>operator(])operator(()ident(p)operator([)string<delimiter(')content(first-of-type)delimiter(')>operator(])operator(()ident(nodes)operator(,) ident(formula)operator(,) ident(root)operator(\))operator(,) ident(formula)operator(,) ident(root)operator(\))operator(;) - operator(})operator(,) -@@ -6343,7 +6343,7 @@ - keyword(return) ident(results)operator(;) - operator(})operator(,) - -- string<delimiter(')content(empty)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(empty)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) - keyword(for) operator(()keyword(var) ident(i) operator(=) integer(0)operator(,) ident(results) operator(=) operator([)operator(])operator(,) ident(node)operator(;) ident(node) operator(=) ident(nodes)operator([)ident(i)operator(])operator(;) ident(i)operator(++)operator(\)) operator({) - comment(// IE treats comments as element nodes) - keyword(if) operator(()ident(node)operator(.)ident(tagName) operator(==) string<delimiter(')content(!)delimiter(')> operator(||) operator(()ident(node)operator(.)ident(firstChild) operator(&&) operator(!)ident(node)operator(.)ident(innerHTML)operator(.)ident(match)operator(()regexp<delimiter(/)content(^)char(\\s)content(*$)delimiter(/)>operator(\)\)\)) keyword(continue)operator(;) -@@ -6352,7 +6352,7 @@ - keyword(return) ident(results)operator(;) - operator(})operator(,) - -- string<delimiter(')content(not)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(selector)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(not)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(selector)operator(,) ident(root)operator(\)) operator({) - keyword(var) ident(h) operator(=) ident(Selector)operator(.)ident(handlers)operator(,) ident(selectorType)operator(,) ident(m)operator(;) - keyword(var) ident(exclusions) operator(=) keyword(new) ident(Selector)operator(()ident(selector)operator(\))operator(.)ident(findElements)operator(()ident(root)operator(\))operator(;) - ident(h)operator(.)ident(mark)operator(()ident(exclusions)operator(\))operator(;) -@@ -6362,19 +6362,19 @@ - keyword(return) ident(results)operator(;) - operator(})operator(,) - -- string<delimiter(')content(enabled)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(enabled)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) - keyword(for) operator(()keyword(var) ident(i) operator(=) integer(0)operator(,) ident(results) operator(=) operator([)operator(])operator(,) ident(node)operator(;) ident(node) operator(=) ident(nodes)operator([)ident(i)operator(])operator(;) ident(i)operator(++)operator(\)) - keyword(if) operator((!)ident(node)operator(.)ident(disabled)operator(\)) ident(results)operator(.)ident(push)operator(()ident(node)operator(\))operator(;) - keyword(return) ident(results)operator(;) - operator(})operator(,) - -- string<delimiter(')content(disabled)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(disabled)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) - keyword(for) operator(()keyword(var) ident(i) operator(=) integer(0)operator(,) ident(results) operator(=) operator([)operator(])operator(,) ident(node)operator(;) ident(node) operator(=) ident(nodes)operator([)ident(i)operator(])operator(;) ident(i)operator(++)operator(\)) - keyword(if) operator(()ident(node)operator(.)ident(disabled)operator(\)) ident(results)operator(.)ident(push)operator(()ident(node)operator(\))operator(;) - keyword(return) ident(results)operator(;) - operator(})operator(,) - -- string<delimiter(')content(checked)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) -+ key<delimiter(')content(checked)delimiter(')>operator(:) keyword(function)operator(()ident(nodes)operator(,) ident(value)operator(,) ident(root)operator(\)) operator({) - keyword(for) operator(()keyword(var) ident(i) operator(=) integer(0)operator(,) ident(results) operator(=) operator([)operator(])operator(,) ident(node)operator(;) ident(node) operator(=) ident(nodes)operator([)ident(i)operator(])operator(;) ident(i)operator(++)operator(\)) - keyword(if) operator(()ident(node)operator(.)ident(checked)operator(\)) ident(results)operator(.)ident(push)operator(()ident(node)operator(\))operator(;) - keyword(return) ident(results)operator(;) -@@ -6382,13 +6382,13 @@ - operator(})operator(,) - - key(operators)operator(:) operator({) -- string<delimiter(')content(=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv) operator(==) ident(v)operator(;) operator(})operator(,) -- string<delimiter(')content(!=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv) operator(!=) ident(v)operator(;) operator(})operator(,) -- string<delimiter(')content(^=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv)operator(.)ident(startsWith)operator(()ident(v)operator(\))operator(;) operator(})operator(,) -- string<delimiter(')content($=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv)operator(.)ident(endsWith)operator(()ident(v)operator(\))operator(;) operator(})operator(,) -- string<delimiter(')content(*=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv)operator(.)ident(include)operator(()ident(v)operator(\))operator(;) operator(})operator(,) -- string<delimiter(')content(~=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) operator(()string<delimiter(')content( )delimiter(')> operator(+) ident(nv) operator(+) string<delimiter(')content( )delimiter(')>operator(\))operator(.)ident(include)operator(()string<delimiter(')content( )delimiter(')> operator(+) ident(v) operator(+) string<delimiter(')content( )delimiter(')>operator(\))operator(;) operator(})operator(,) -- string<delimiter(')content(|=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) operator(()string<delimiter(')content(-)delimiter(')> operator(+) ident(nv)operator(.)ident(toUpperCase)operator(()operator(\)) operator(+) string<delimiter(')content(-)delimiter(')>operator(\))operator(.)ident(include)operator(()string<delimiter(')content(-)delimiter(')> operator(+) ident(v)operator(.)ident(toUpperCase)operator(()operator(\)) operator(+) string<delimiter(')content(-)delimiter(')>operator(\))operator(;) operator(}) -+ key<delimiter(')content(=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv) operator(==) ident(v)operator(;) operator(})operator(,) -+ key<delimiter(')content(!=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv) operator(!=) ident(v)operator(;) operator(})operator(,) -+ key<delimiter(')content(^=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv)operator(.)ident(startsWith)operator(()ident(v)operator(\))operator(;) operator(})operator(,) -+ key<delimiter(')content($=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv)operator(.)ident(endsWith)operator(()ident(v)operator(\))operator(;) operator(})operator(,) -+ key<delimiter(')content(*=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) ident(nv)operator(.)ident(include)operator(()ident(v)operator(\))operator(;) operator(})operator(,) -+ key<delimiter(')content(~=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) operator(()string<delimiter(')content( )delimiter(')> operator(+) ident(nv) operator(+) string<delimiter(')content( )delimiter(')>operator(\))operator(.)ident(include)operator(()string<delimiter(')content( )delimiter(')> operator(+) ident(v) operator(+) string<delimiter(')content( )delimiter(')>operator(\))operator(;) operator(})operator(,) -+ key<delimiter(')content(|=)delimiter(')>operator(:) keyword(function)operator(()ident(nv)operator(,) ident(v)operator(\)) operator({) keyword(return) operator(()string<delimiter(')content(-)delimiter(')> operator(+) ident(nv)operator(.)ident(toUpperCase)operator(()operator(\)) operator(+) string<delimiter(')content(-)delimiter(')>operator(\))operator(.)ident(include)operator(()string<delimiter(')content(-)delimiter(')> operator(+) ident(v)operator(.)ident(toUpperCase)operator(()operator(\)) operator(+) string<delimiter(')content(-)delimiter(')>operator(\))operator(;) operator(}) - operator(})operator(,) - - key(matchElements)operator(:) keyword(function)operator(()ident(elements)operator(,) ident(expression)operator(\)) operator({) -Index: Rakefile -=================================================================== ---- Rakefile (revision 308) -+++ Rakefile (working copy) -@@ -44,10 +44,12 @@ - task 'jruby' do - RUBY.replace 'jruby' - end -+task :j => :jruby - - task 'jruby19' do - RUBY.replace 'jruby --1.9' - end -+task :j19 => :jruby19 - - task 'rubinius' do - RUBY.replace 'rbx' -Index: lib/coderay/helpers/plugin.rb -=================================================================== ---- lib/coderay/helpers/plugin.rb (revision 308) -+++ lib/coderay/helpers/plugin.rb (working copy) -@@ -2,8 +2,6 @@ - - # = PluginHost - # --# $Id$ --# - # A simple subclass plugin system. - # - # Example: -Index: lib/coderay/duo.rb -=================================================================== ---- lib/coderay/duo.rb (revision 308) -+++ lib/coderay/duo.rb (working copy) -@@ -2,8 +2,6 @@ - - # = Duo - # -- # $Id: scanner.rb 123 2006-03-21 14:46:34Z murphy $ -- # - # A Duo is a convenient way to use CodeRay. You just create a Duo, - # giving it a lang (language of the input code) and a format (desired - # output format), and call Duo#highlight with the code. -Index: lib/coderay/scanner.rb -=================================================================== ---- lib/coderay/scanner.rb (revision 308) -+++ lib/coderay/scanner.rb (working copy) -@@ -4,8 +4,6 @@ - - # = Scanners - # -- # $Id$ -- # - # This module holds the Scanner class and its subclasses. - # For example, the Ruby scanner is named CodeRay::Scanners::Ruby - # can be found in coderay/scanners/ruby. -Index: lib/coderay/scanners/java.rb -=================================================================== ---- lib/coderay/scanners/java.rb (revision 308) -+++ lib/coderay/scanners/java.rb (working copy) -@@ -76,7 +76,7 @@ - class_name_follows = false - else - import_clause = true if match == 'import' -- class_name_follows = true if match == 'class' -+ class_name_follows = true if match == 'class' || match == 'interface' - end - - elsif scan(/ \.(?!\d) | [,?:(\[)\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<<?=? | >>>?=? /x) -Index: lib/coderay/scanners/rhtml.rb -=================================================================== ---- lib/coderay/scanners/rhtml.rb (revision 308) -+++ lib/coderay/scanners/rhtml.rb (working copy) -@@ -5,8 +5,6 @@ - load :ruby - - # RHTML Scanner -- # -- # $Id$ - class RHTML < Scanner - - include Streamable -Index: lib/coderay/scanners/xml.rb -=================================================================== ---- lib/coderay/scanners/xml.rb (revision 308) -+++ lib/coderay/scanners/xml.rb (working copy) -@@ -5,8 +5,6 @@ - - # XML Scanner - # -- # $Id$ -- # - # Currently this is the same scanner as Scanners::HTML. - class XML < HTML - -Index: lib/coderay/scanners/java_script.rb -=================================================================== ---- lib/coderay/scanners/java_script.rb (revision 308) -+++ lib/coderay/scanners/java_script.rb (working copy) -@@ -42,6 +42,10 @@ - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } -+ KEY_CHECK_PATTERN = { -+ "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, -+ '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, -+ } - - def scan_tokens tokens, options - -@@ -103,8 +107,12 @@ - key_expected = false - - elsif match = scan(/["']/) -- tokens << [:open, :string] -- state = :string -+ if key_expected && check(KEY_CHECK_PATTERN[match]) -+ state = :key -+ else -+ state = :string -+ end -+ tokens << [:open, state] - string_delimiter = match - kind = :delimiter - -@@ -125,7 +133,7 @@ - - end - -- when :string, :regexp -+ when :string, :regexp, :key - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) -@@ -139,7 +147,7 @@ - key_expected = value_expected = false - state = :initial - next -- elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) -+ elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else -@@ -155,20 +163,20 @@ - key_expected = value_expected = false - state = :initial - else -- raise_inspect "else case \" reached; %p not handled." % peek(1), tokens -+ raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state - end - - else -- raise_inspect 'Unknown state', tokens -+ raise_inspect 'Unknown state', tokens, state - - end - - match ||= matched - if $DEBUG and not kind - raise_inspect 'Error token %p in line %d' % -- [[match, kind], line], tokens -+ [[match, kind], line], tokens, state - end -- raise_inspect 'Empty token', tokens unless match -+ raise_inspect 'Empty token', tokens, state unless match - - tokens << [match, kind] - -Index: lib/coderay/scanners/nitro_xhtml.rb -=================================================================== ---- lib/coderay/scanners/nitro_xhtml.rb (revision 308) -+++ lib/coderay/scanners/nitro_xhtml.rb (working copy) -@@ -5,8 +5,6 @@ - load :ruby - - # Nitro XHTML Scanner -- # -- # $Id$ - class NitroXHTML < Scanner - - include Streamable -Index: lib/coderay/for_redcloth.rb -=================================================================== ---- lib/coderay/for_redcloth.rb (revision 308) -+++ lib/coderay/for_redcloth.rb (working copy) -@@ -48,6 +48,7 @@ - opts[:lang] ? '' : "<pre#{pba(opts)}>" - end - def bc_close(opts) # :nodoc: -+ opts = @in_bc - @in_bc = nil - opts[:lang] ? '' : "</pre>\n" - end -Index: lib/README -=================================================================== ---- lib/README (revision 308) -+++ lib/README (working copy) -@@ -87,6 +87,7 @@ - * Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. - * Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. - * Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. -+* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth. - * The folks at redmine.org - thank you for using and fixing CodeRay! - * matz and all Ruby gods and gurus - * The inventors of: the computer, the internet, the true color display, HTML & -Index: rake_tasks/test.rake -=================================================================== ---- rake_tasks/test.rake (revision 308) -+++ rake_tasks/test.rake (working copy) -@@ -9,6 +9,22 @@ - ruby "./test/functional/suite.rb" - end - -+ namespace :functional do -+ desc 'run all functional tests on all supported Ruby platforms' -+ task :all do -+ $stdout.sync = true -+ for task in %w(test:functional 19 test:functional jruby test:functional ee test:functional) -+ if task == 'test:functional' -+ puts "\n\nTesting with #{RUBY}..." -+ Rake::Task['test:functional'].reenable -+ Rake::Task['test:functional'].invoke -+ else -+ Rake::Task[task].invoke -+ end -+ end -+ end -+ end -+ - desc 'run all scanner tests' - task :scanners do - ruby "./test/scanners/suite.rb" -Index: rake_tasks/documentation.rake -=================================================================== ---- rake_tasks/documentation.rake (revision 308) -+++ rake_tasks/documentation.rake (working copy) -@@ -7,7 +7,7 @@ - rd.main = 'lib/README'
- rd.title = "CodeRay Documentation"
- rd.options << '--line-numbers' << '--inline-source' << '--tab-width' << '2'
-- # rd.options << '--format' << ENV.fetch('format', 'html_coderay')
-+ rd.options << '--fmt' << ENV.fetch('format', 'html_coderay')
- rd.options << '--all'
-
- rd.template = ENV.fetch('template', CODERAY_TEMPLATE)
diff --git a/etc/0.8.3-vs-0.8.4.diff b/etc/0.8.3-vs-0.8.4.diff deleted file mode 100644 index e483d37..0000000 --- a/etc/0.8.3-vs-0.8.4.diff +++ /dev/null @@ -1,73 +0,0 @@ -Index: test/scanners/ruby/ruby19.expected.raydebug -=================================================================== ---- test/scanners/ruby/ruby19.expected.raydebug (.../0.8.3) (revision 0) -+++ test/scanners/ruby/ruby19.expected.raydebug (.../0.8.4) (revision 411) -@@ -0,0 +1,4 @@ -+ident(block)operator(.)ident(()operator(*)ident(arguments)operator(\)) comment(# bovi's example) -+ -+reserved(def) operator(()ident(foo)operator(\))operator(.)ident(bar) -+reserved(end) -\ No newline at end of file -Index: test/scanners/ruby/ruby19.in.rb -=================================================================== ---- test/scanners/ruby/ruby19.in.rb (.../0.8.3) (revision 0) -+++ test/scanners/ruby/ruby19.in.rb (.../0.8.4) (revision 411) -@@ -0,0 +1,4 @@ -+block.(*arguments) # bovi's example -+ -+def (foo).bar -+end -\ No newline at end of file -Index: lib/coderay/for_redcloth.rb -=================================================================== ---- lib/coderay/for_redcloth.rb (.../0.8.3) (revision 411) -+++ lib/coderay/for_redcloth.rb (.../0.8.4) (revision 411) -@@ -15,7 +15,9 @@ - def self.install - gem 'RedCloth', '>= 4.0.3' rescue nil - require 'redcloth' -- raise 'CodeRay.for_redcloth needs RedCloth 4.0.3 or later.' unless RedCloth::VERSION.to_s >= '4.0.3' -+ unless RedCloth::VERSION.to_s >= '4.0.3' -+ raise 'CodeRay.for_redcloth needs RedCloth version 4.0.3 or later.' -+ end - RedCloth::TextileDoc.send :include, ForRedCloth::TextileDoc - RedCloth::Formatters::HTML.module_eval do - def unescape(html) -@@ -30,6 +32,11 @@ - undef_method :code, :bc_open, :bc_close, :escape_pre - def code(opts) # :nodoc: - opts[:block] = true -+ if !opts[:lang] && RedCloth::VERSION.to_s >= '4.2.0' -+ # simulating pre-4.2 behavior -+ opts[:text].sub!(/\A\[(\w+)\]/, '') -+ opts[:lang] = $1 -+ end - if opts[:lang] && !filter_coderay - require 'coderay' - @in_bc ||= nil -Index: lib/coderay/scanners/ruby.rb -=================================================================== ---- lib/coderay/scanners/ruby.rb (.../0.8.3) (revision 411) -+++ lib/coderay/scanners/ruby.rb (.../0.8.4) (revision 411) -@@ -175,7 +175,7 @@ - ## experimental! - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - -- elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}/o) -+ elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) - kind = :ident - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - -Index: lib/README -=================================================================== ---- lib/README (.../0.8.3) (revision 411) -+++ lib/README (.../0.8.4) (revision 411) -@@ -18,7 +18,7 @@ - * is what everybody should have on their website - * solves all your problems and makes the girls run after you - --Version: 0.8.3 -+Version: 0.8.4 - Author:: murphy (Kornelius Kalnbach) - Contact:: murphy rubychan de - Website:: coderay.rubychan.de[http://coderay.rubychan.de] |