From 563fe61c69b4066f01bf69369c13798c07313efc Mon Sep 17 00:00:00 2001 From: Manuel Arno Korfmann Date: Thu, 10 Sep 2015 23:29:25 +0200 Subject: [PATCH 1/2] highlight inline sql within rails where and order query strings --- grammars/ruby on rails.cson | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/grammars/ruby on rails.cson b/grammars/ruby on rails.cson index 36a510f..1b65602 100644 --- a/grammars/ruby on rails.cson +++ b/grammars/ruby on rails.cson @@ -172,6 +172,16 @@ } ] } + { + 'begin': '(?:order|where)[(\\s]+([\'"])' + 'end': '\\1' + 'name': 'meta.rails.query_methods.sql' + 'patterns': [ + { + 'include': 'source.sql' + } + ] + } { 'match': '\\b(before_filter|before_action|skip_before_filter|skip_before_action|prepend_before_filter|after_filter|after_action|skip_after_filter|skip_after_action|prepend_after_filter|around_filter|around_action|prepend_around_filter|filter|filter_parameter_logging|layout|require_dependency|render|render_action|render_text|render_file|render_template|render_nothing|render_component|render_without_layout|rescue_from|url_for|redirect_to|redirect_to_path|redirect_to_url|respond_to|helper|helper_method|head|model|service|observer|serialize|scaffold|verify|hide_action)\\b' 'name': 'support.function.actionpack.rails' From d7785aa525a281e262c4af7b11e9a2e6d7829bbd Mon Sep 17 00:00:00 2001 From: Manuel Arno Korfmann Date: Fri, 11 Sep 2015 20:51:42 +0200 Subject: [PATCH 2/2] added 2 specs for inline sql in rails --- spec/grammar-spec.coffee | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/spec/grammar-spec.coffee b/spec/grammar-spec.coffee index ab12474..fed3783 100644 --- a/spec/grammar-spec.coffee +++ b/spec/grammar-spec.coffee @@ -27,3 +27,21 @@ describe "Ruby on Rails package", -> grammar = atom.grammars.grammarForScopeName("source.sql.ruby") expect(grammar).toBeDefined() expect(grammar.scopeName).toBe "source.sql.ruby" + + + describe 'inline sql', -> + it 'tokenizes the content inside where string queries as SQL', -> + grammar = atom.grammars.grammarForScopeName("source.ruby.rails") + lines = grammar.tokenizeLines ''' + Post.where('created_at IS NOT NULL created_at > ?', Time.now) + ''' + + expect(lines[0][2]).toEqual value: 'created_at IS NOT NULL created_at > ?', scopes: ['source.ruby.rails', 'meta.rails.query_methods.sql'] + + + it 'tokenizes the content inside order string queries as SQL', -> + grammar = atom.grammars.grammarForScopeName("source.ruby.rails") + lines = grammar.tokenizeLines ''' + Post.order("case when sticky = 'yes' then 1 else 0 end desc, created desc") + ''' + expect(lines[0][2]).toEqual value: "case when sticky = 'yes' then 1 else 0 end desc, created desc", scopes: ['source.ruby.rails', 'meta.rails.query_methods.sql']