From 34813e62e45dd2bfaa3088a55416efc364d5a522 Mon Sep 17 00:00:00 2001 From: "Marco A. Mena" Date: Thu, 29 Oct 2015 17:30:27 -0700 Subject: [PATCH] Fixed grammar for multiple method arguments as symbols with parentheses --- grammars/ruby.cson | 2 +- spec/ruby-spec.coffee | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/grammars/ruby.cson b/grammars/ruby.cson index d43ec40..464d982 100644 --- a/grammars/ruby.cson +++ b/grammars/ruby.cson @@ -223,7 +223,7 @@ 'patterns': [ { 'begin': '(?![\\s,)])' - 'end': '(?=[,)])' + 'end': '(?=\\,|\\)\\s*$)' 'patterns': [ { 'captures': diff --git a/spec/ruby-spec.coffee b/spec/ruby-spec.coffee index 3a8bd10..f6668be 100644 --- a/spec/ruby-spec.coffee +++ b/spec/ruby-spec.coffee @@ -555,3 +555,15 @@ describe "Ruby grammar", -> expect(tokens[3]).toEqual value: ' ', scopes: [ 'source.ruby', 'meta.function.method.with-arguments.ruby'] expect(tokens[4]).toEqual value: '*', scopes: [ 'source.ruby', 'meta.function.method.with-arguments.ruby', 'storage.type.variable.ruby' ] expect(tokens[5]).toEqual value: 'args', scopes: ['source.ruby', 'meta.function.method.with-arguments.ruby', 'variable.parameter.function.ruby'] + + it "tokenizes a method with (symbol: arg(paren), symbol: arg2(paren)...) properly", -> + {tokens} = grammar.tokenizeLine('def method(red: rand(2), green: rand(3), blue: rand(4))') + expect(tokens[0]).toEqual value: 'def', scopes: [ 'source.ruby', 'meta.function.method.with-arguments.ruby', 'keyword.control.def.ruby' ] + expect(tokens[2]).toEqual value: 'method', scopes: ['source.ruby', 'meta.function.method.with-arguments.ruby', 'entity.name.function.ruby'] + expect(tokens[3]).toEqual value: '(', scopes: [ 'source.ruby', 'meta.function.method.with-arguments.ruby', 'punctuation.definition.parameters.ruby' ] + expect(tokens[4]).toEqual value: 'red', scopes: ['source.ruby', 'meta.function.method.with-arguments.ruby', 'variable.parameter.function.ruby'] + expect(tokens[7]).toEqual value: 'rand', scopes: ['source.ruby', 'meta.function.method.with-arguments.ruby', 'support.function.kernel.ruby'] + expect(tokens[9]).toEqual value: '2', scopes: ['source.ruby', 'meta.function.method.with-arguments.ruby', 'constant.numeric.ruby'] + expect(tokens[12]).toEqual value: 'green', scopes: ['source.ruby', 'meta.function.method.with-arguments.ruby', 'variable.parameter.function.ruby'] + expect(tokens[15]).toEqual value: 'rand', scopes: ['source.ruby', 'meta.function.method.with-arguments.ruby', 'support.function.kernel.ruby'] + expect(tokens[17]).toEqual value: '3', scopes: ['source.ruby', 'meta.function.method.with-arguments.ruby', 'constant.numeric.ruby']