From c898153faa2c746d43c13c7f4cd0bf9d0d4c2043 Mon Sep 17 00:00:00 2001 From: namusyaka Date: Sun, 10 Apr 2016 04:03:53 +0900 Subject: [PATCH 1/2] Don't include fixed named captures as route params --- lib/grape/router/route.rb | 3 ++- spec/grape/api_spec.rb | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/grape/router/route.rb b/lib/grape/router/route.rb index d030a2eb5d..f25f36c74f 100644 --- a/lib/grape/router/route.rb +++ b/lib/grape/router/route.rb @@ -8,6 +8,7 @@ class Router class Route ROUTE_ATTRIBUTE_REGEXP = /route_([_a-zA-Z]\w*)/.freeze SOURCE_LOCATION_REGEXP = /^(.*?):(\d+?)(?::in `.+?')?$/.freeze + FIXED_NAMED_CAPTURES = %w(format version).freeze attr_accessor :pattern, :translator, :app, :index, :regexp @@ -81,7 +82,7 @@ def params(input = nil) default = pattern.named_captures.keys.each_with_object({}) do |key, defaults| defaults[key] = '' end - default.delete_if { |key, _| key == 'format' }.merge(translator.params) + default.delete_if { |key, _| FIXED_NAMED_CAPTURES.include?(key) }.merge(translator.params) else parsed = pattern.params(input) parsed ? parsed.delete_if { |_, value| value.nil? }.symbolize_keys : {} diff --git a/spec/grape/api_spec.rb b/spec/grape/api_spec.rb index 1d3e32a70a..b293953018 100644 --- a/spec/grape/api_spec.rb +++ b/spec/grape/api_spec.rb @@ -2257,6 +2257,13 @@ def static expect(route.route_foo).to be_nil expect(route.params).to eq({}) end + it 'has params which does not include format and version as named captures' do + subject.version :v1, using: :path + subject.get :first do; end + param_keys = subject.routes.first.params.keys + expect(param_keys).not_to include('format') + expect(param_keys).not_to include('version') + end it 'describes methods separately' do subject.desc 'first method' subject.get :first do; end From 96eade93abfa9803af852034baafd7df485b600b Mon Sep 17 00:00:00 2001 From: namusyaka Date: Sun, 10 Apr 2016 07:12:38 +0900 Subject: [PATCH 2/2] Introduce Route#hidden for use in grape-swagger --- lib/grape/router/route.rb | 9 +++++++++ spec/grape/api_spec.rb | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/grape/router/route.rb b/lib/grape/router/route.rb index f25f36c74f..4f0c6cb5b9 100644 --- a/lib/grape/router/route.rb +++ b/lib/grape/router/route.rb @@ -57,6 +57,15 @@ def route_path pattern.path end + def hidden + @options[:hidden] || (settings[:description] && settings[:description][:hidden]) + end + + def route_hidden + warn_route_methods(:hidden, caller(1).shift) + hidden + end + def initialize(method, pattern, options = {}) @suffix = options[:suffix] @options = options.merge(method: method.to_s.upcase) diff --git a/spec/grape/api_spec.rb b/spec/grape/api_spec.rb index b293953018..f500383599 100644 --- a/spec/grape/api_spec.rb +++ b/spec/grape/api_spec.rb @@ -2277,6 +2277,16 @@ def static { description: 'second method', params: {} } ] end + it 'describes hidden accessor' do + subject.desc 'hidden as a description', hidden: true + subject.get :first do; end + subject.desc 'hidden as a route option' + subject.get :first, hidden: true do; end + first = subject.routes.shift + second = subject.routes.shift + expect(first.hidden).to be_truthy + expect(second.hidden).to be_truthy + end it 'resets desc' do subject.desc 'first method' subject.get :first do; end