summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKornelius Kalnbach <murphy@rubychan.de>2016-02-13 12:06:26 +0100
committerKornelius Kalnbach <murphy@rubychan.de>2016-02-13 12:06:26 +0100
commit39cbd37815f65f21e0433f4da4cf5fbeda2e1e3f (patch)
treee8e6cb7332be7fb81b4fe2be7cabf3d5c793406e
parent080f8a8225cb911d037d1f6e58e581dec9558c58 (diff)
downloadcoderay-39cbd37815f65f21e0433f4da4cf5fbeda2e1e3f.tar.gz
add support for Ruby 2.2 quoted hash keys
KNOWN ISSUE: string interpolation will not work!
-rw-r--r--lib/coderay/scanners/ruby.rb7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/coderay/scanners/ruby.rb b/lib/coderay/scanners/ruby.rb
index 0492a55..165d66b 100644
--- a/lib/coderay/scanners/ruby.rb
+++ b/lib/coderay/scanners/ruby.rb
@@ -164,15 +164,18 @@ module Scanners
end
elsif match = scan(/ ' (?:(?>[^'\\]*) ')? | " (?:(?>[^"\\\#]*) ")? /mx)
- encoder.begin_group :string
if match.size == 1
+ encoder.begin_group :string
encoder.text_token match, :delimiter
state = self.class::StringState.new :string, match == '"', match # important for streaming
else
+ kind = value_expected == true && scan(/:/) ? :key : :string
+ encoder.begin_group kind
encoder.text_token match[0,1], :delimiter
encoder.text_token match[1..-2], :content if match.size > 2
encoder.text_token match[-1,1], :delimiter
- encoder.end_group :string
+ encoder.end_group kind
+ encoder.text_token ':', :operator if kind == :key
value_expected = false
end