summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/cli/gem.rb4
-rw-r--r--spec/commands/newgem_spec.rb9
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/bundler/cli/gem.rb b/lib/bundler/cli/gem.rb
index 7a0ec0fe9e..a201c89910 100644
--- a/lib/bundler/cli/gem.rb
+++ b/lib/bundler/cli/gem.rb
@@ -20,8 +20,8 @@ module Bundler
underscored_name = name.tr('-', '_')
namespaced_path = name.tr('-', '/')
- constant_name = name.split('_').map{|p| p[0..0].upcase + p[1..-1] unless p.empty?}.join
- constant_name = constant_name.split('-').map{|q| q[0..0].upcase + q[1..-1] }.join('::') if constant_name =~ /-/
+ constant_name = name.gsub(/-[_-]*(?![_-]|$)/){ '::' }.gsub(/([_-]+|(::)|^)(.|$)/){ $2.to_s + $3.upcase }
+
constant_array = constant_name.split('::')
git_user_name = `git config user.name`.chomp
git_user_email = `git config user.email`.chomp
diff --git a/spec/commands/newgem_spec.rb b/spec/commands/newgem_spec.rb
index 406f18e74e..ef653d306d 100644
--- a/spec/commands/newgem_spec.rb
+++ b/spec/commands/newgem_spec.rb
@@ -580,6 +580,15 @@ describe "bundle gem" do
end
end
+ describe "uncommon gem names" do
+ it "can deal with two dashes" do
+ bundle "gem a--a"
+ Bundler.clear_gemspec_cache
+
+ expect(bundled_app("a--a/a--a.gemspec")).to exist
+ end
+ end
+
context "on first run" do
before do
in_app_root