From 3e0a3f20a79330f1f152a5f3667b29cb904d959c Mon Sep 17 00:00:00 2001 From: Gibheer Date: Tue, 10 Sep 2013 08:56:24 +0200 Subject: [PATCH] allow a dash in the middle url part --- lib/zero/router.rb | 2 +- spec/unit/zero/router/call_spec.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/zero/router.rb b/lib/zero/router.rb index 482f25a..7f16933 100644 --- a/lib/zero/router.rb +++ b/lib/zero/router.rb @@ -20,7 +20,7 @@ module Zero # match for variables in routes VARIABLE_MATCH = %r{:(\w+)[^/]?} # the replacement string to make it an regex - VARIABLE_REGEX = '(?<\1>[\w]+?)' + VARIABLE_REGEX = '(?<\1>[\w-]+?)' # regex part of the beginning of the line REGEX_BEGINNING = '\A' # regex part of the end of the line diff --git a/spec/unit/zero/router/call_spec.rb b/spec/unit/zero/router/call_spec.rb index 923b747..835d51d 100644 --- a/spec/unit/zero/router/call_spec.rb +++ b/spec/unit/zero/router/call_spec.rb @@ -103,4 +103,17 @@ describe Zero::Router, '#call' do it_behaves_like "a sample app" end + + context 'with a dash in the variable' do + let(:routes) { {'/:id' => app} } + let(:env) { EnvGenerator.get('/foo-bar') } + let(:app) do + lambda do |env| + [200, content_type, [Zero::Request.new(env).params['id']]] + end + end + let(:result) { ['foo-bar'] } + + it_behaves_like "a sample app" + end end