coderay 1.0.8 → 1.0.9.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -101,7 +101,7 @@ module Scanners
101
101
  when :initial
102
102
  if match = scan(/<!--(?:.*?-->|.*)/m)
103
103
  encoder.text_token match, :comment
104
- elsif match = scan(/<!DOCTYPE(?:.*?>|.*)/m)
104
+ elsif match = scan(/<!(\w+)(?:.*?>|.*)|\]>/m)
105
105
  encoder.text_token match, :doctype
106
106
  elsif match = scan(/<\?xml(?:.*?\?>|.*)/m)
107
107
  encoder.text_token match, :preprocessor
@@ -1,4 +1,4 @@
1
- # encoding: ASCII-8BIT
1
+ # encoding: utf-8
2
2
  module CodeRay
3
3
  module Scanners
4
4
 
@@ -11,7 +11,6 @@ module Scanners
11
11
 
12
12
  register_for :php
13
13
  file_extension 'php'
14
- encoding 'BINARY'
15
14
 
16
15
  KINDS_NOT_LOC = HTML::KINDS_NOT_LOC
17
16
 
@@ -211,7 +210,7 @@ module Scanners
211
210
 
212
211
  HTML_INDICATOR = /<!DOCTYPE html|<(?:html|body|div|p)[> ]/i
213
212
 
214
- IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i
213
+ IDENTIFIER = 'ä'[/[[:alpha:]]/] == 'ä' ? Regexp.new('[[:alpha:]_[^\0-\177]][[:alnum:]_[^\0-\177]]*') : Regexp.new('[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*', true)
215
214
  VARIABLE = /\$#{IDENTIFIER}/
216
215
 
217
216
  OPERATOR = /
@@ -94,18 +94,27 @@ module Scanners
94
94
  if !method_call_expected &&
95
95
  match = scan(unicode ? /#{patterns::METHOD_NAME}/uo :
96
96
  /#{patterns::METHOD_NAME}/o)
97
- value_expected = false
97
+
98
98
  kind = patterns::IDENT_KIND[match]
99
- if kind == :ident
100
- if match[/\A[A-Z]/] && !(match[/[!?]$/] || match?(/\(/))
101
- kind = :constant
99
+ if kind == :ident && value_expected != :colon_expected && scan(/:(?!:)/)
100
+ value_expected = true
101
+ encoder.text_token match, :key
102
+ encoder.text_token ':', :operator
103
+ else
104
+ value_expected = false
105
+ if kind == :ident
106
+ if match[/\A[A-Z]/] && !(match[/[!?]$/] || match?(/\(/))
107
+ kind = :constant
108
+ end
109
+ elsif kind == :keyword
110
+ state = patterns::KEYWORD_NEW_STATE[match]
111
+ if patterns::KEYWORDS_EXPECTING_VALUE[match]
112
+ value_expected = match == 'when' ? :colon_expected : true
113
+ end
102
114
  end
103
- elsif kind == :keyword
104
- state = patterns::KEYWORD_NEW_STATE[match]
105
- value_expected = true if patterns::KEYWORDS_EXPECTING_VALUE[match]
115
+ value_expected = true if !value_expected && check(/#{patterns::VALUE_FOLLOWS}/o)
116
+ encoder.text_token match, kind
106
117
  end
107
- value_expected = true if !value_expected && check(/#{patterns::VALUE_FOLLOWS}/o)
108
- encoder.text_token match, kind
109
118
 
110
119
  elsif method_call_expected &&
111
120
  match = scan(unicode ? /#{patterns::METHOD_AFTER_DOT}/uo :
@@ -119,9 +128,9 @@ module Scanners
119
128
  value_expected = check(/#{patterns::VALUE_FOLLOWS}/o)
120
129
 
121
130
  # OPERATORS #
122
- elsif !method_call_expected && match = scan(/ (\.(?!\.)|::) | (?: \.\.\.? | ==?=? | [,\(\[\{] )() | [\)\]\}] /x)
131
+ elsif !method_call_expected && match = scan(/ (\.(?!\.)|::) | ( \.\.\.? | ==?=? | [,\(\[\{] ) | [\)\]\}] /x)
123
132
  method_call_expected = self[1]
124
- value_expected = !method_call_expected && self[2]
133
+ value_expected = !method_call_expected && !!self[2]
125
134
  if inline_block_stack
126
135
  case match
127
136
  when '{'
@@ -213,7 +222,7 @@ module Scanners
213
222
  encoder.text_token match, :integer
214
223
 
215
224
  elsif match = scan(/ %=? | <(?:<|=>?)? | \? /x)
216
- value_expected = true
225
+ value_expected = match == '?' ? :colon_expected : true
217
226
  encoder.text_token match, :operator
218
227
 
219
228
  elsif match = scan(/`/)
@@ -1,9 +1,9 @@
1
1
  # encoding: utf-8
2
2
  module CodeRay
3
3
  module Scanners
4
-
4
+
5
5
  module Ruby::Patterns # :nodoc: all
6
-
6
+
7
7
  KEYWORDS = %w[
8
8
  and def end in or unless begin
9
9
  defined? ensure module redo super until
@@ -12,7 +12,7 @@ module Scanners
12
12
  while alias class elsif if not return
13
13
  undef yield
14
14
  ]
15
-
15
+
16
16
  # See http://murfy.de/ruby-constants.
17
17
  PREDEFINED_CONSTANTS = %w[
18
18
  nil true false self
@@ -24,19 +24,19 @@ module Scanners
24
24
  RUBY_PLATFORM RUBY_RELEASE_DATE RUBY_REVISION RUBY_VERSION
25
25
  __FILE__ __LINE__ __ENCODING__
26
26
  ]
27
-
27
+
28
28
  IDENT_KIND = WordList.new(:ident).
29
29
  add(KEYWORDS, :keyword).
30
30
  add(PREDEFINED_CONSTANTS, :predefined_constant)
31
-
31
+
32
32
  KEYWORD_NEW_STATE = WordList.new(:initial).
33
33
  add(%w[ def ], :def_expected).
34
34
  add(%w[ undef ], :undef_expected).
35
35
  add(%w[ alias ], :alias_expected).
36
36
  add(%w[ class module ], :module_expected)
37
-
38
- IDENT = 'ä'[/[[:alpha:]]/] == 'ä' ? /[[:alpha:]_][[:alnum:]_]*/ : /[^\W\d]\w*/
39
-
37
+
38
+ IDENT = 'ä'[/[[:alpha:]]/] == 'ä' ? Regexp.new('[[:alpha:]_[^\0-\177]][[:alnum:]_[^\0-\177]]*') : /[^\W\d]\w*/
39
+
40
40
  METHOD_NAME = / #{IDENT} [?!]? /ox
41
41
  METHOD_NAME_OPERATOR = /
42
42
  \*\*? # multiplication and power
@@ -57,25 +57,25 @@ module Scanners
57
57
  GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox
58
58
  PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox
59
59
  VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox
60
-
60
+
61
61
  QUOTE_TO_TYPE = {
62
62
  '`' => :shell,
63
63
  '/'=> :regexp,
64
64
  }
65
65
  QUOTE_TO_TYPE.default = :string
66
-
66
+
67
67
  REGEXP_MODIFIERS = /[mousenix]*/
68
-
68
+
69
69
  DECIMAL = /\d+(?:_\d+)*/
70
70
  OCTAL = /0_?[0-7]+(?:_[0-7]+)*/
71
71
  HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/
72
72
  BINARY = /0b[01]+(?:_[01]+)*/
73
-
73
+
74
74
  EXPONENT = / [eE] [+-]? #{DECIMAL} /ox
75
75
  FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox
76
76
  FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox
77
77
  NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox
78
-
78
+
79
79
  SYMBOL = /
80
80
  :
81
81
  (?:
@@ -85,7 +85,7 @@ module Scanners
85
85
  )
86
86
  /ox
87
87
  METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox
88
-
88
+
89
89
  SIMPLE_ESCAPE = /
90
90
  [abefnrstv]
91
91
  | [0-7]{1,3}
@@ -110,7 +110,7 @@ module Scanners
110
110
  | \\ #{ESCAPE}
111
111
  )
112
112
  /mox
113
-
113
+
114
114
  # NOTE: This is not completely correct, but
115
115
  # nobody needs heredoc delimiters ending with \n.
116
116
  HEREDOC_OPEN = /
@@ -122,13 +122,13 @@ module Scanners
122
122
  ( [^\n]*? ) \3 # $4 = delim
123
123
  )
124
124
  /mx
125
-
125
+
126
126
  RUBYDOC = /
127
127
  =begin (?!\S)
128
128
  .*?
129
129
  (?: \Z | ^=end (?!\S) [^\n]* )
130
130
  /mx
131
-
131
+
132
132
  DATA = /
133
133
  __END__$
134
134
  .*?
@@ -136,7 +136,7 @@ module Scanners
136
136
  /mx
137
137
 
138
138
  RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo
139
-
139
+
140
140
  # Checks for a valid value to follow. This enables
141
141
  # value_expected in method calls without parentheses.
142
142
  VALUE_FOLLOWS = /
@@ -1,3 +1,3 @@
1
1
  module CodeRay
2
- VERSION = '1.0.8'
2
+ VERSION = '1.0.9'
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coderay
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
5
- prerelease:
4
+ version: 1.0.9.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kornelius Kalnbach
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-07 00:00:00.000000000 Z
12
+ date: 2013-02-17 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Fast and easy syntax highlighting for selected languages, written in
15
15
  Ruby. Comes with RedCloth integration and LOC counter.
@@ -90,10 +90,10 @@ files:
90
90
  - test/functional/examples.rb
91
91
  - test/functional/for_redcloth.rb
92
92
  - test/functional/suite.rb
93
- - !binary |-
94
- YmluL2NvZGVyYXk=
93
+ - bin/coderay
95
94
  homepage: http://coderay.rubychan.de
96
- licenses: []
95
+ licenses:
96
+ - MIT
97
97
  post_install_message:
98
98
  rdoc_options:
99
99
  - -SNw2
@@ -110,12 +110,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  none: false
112
112
  requirements:
113
- - - ! '>='
113
+ - - ! '>'
114
114
  - !ruby/object:Gem::Version
115
- version: '0'
115
+ version: 1.3.1
116
116
  requirements: []
117
117
  rubyforge_project: coderay
118
- rubygems_version: 1.8.24
118
+ rubygems_version: 1.8.25
119
119
  signing_key:
120
120
  specification_version: 3
121
121
  summary: Fast syntax highlighting for selected languages.