diff options
author | Kornelius Kalnbach <murphy@rubychan.de> | 2016-02-13 12:06:26 +0100 |
---|---|---|
committer | Kornelius Kalnbach <murphy@rubychan.de> | 2016-02-13 12:06:26 +0100 |
commit | 39cbd37815f65f21e0433f4da4cf5fbeda2e1e3f (patch) | |
tree | e8e6cb7332be7fb81b4fe2be7cabf3d5c793406e /lib/coderay/scanners/ruby.rb | |
parent | 080f8a8225cb911d037d1f6e58e581dec9558c58 (diff) | |
download | coderay-39cbd37815f65f21e0433f4da4cf5fbeda2e1e3f.tar.gz |
add support for Ruby 2.2 quoted hash keys
KNOWN ISSUE: string interpolation will not work!
Diffstat (limited to 'lib/coderay/scanners/ruby.rb')
-rw-r--r-- | lib/coderay/scanners/ruby.rb | 7 |
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 |