From 54a8d497a933b5ba56b99dcd080dc1f4d7ad4f71 Mon Sep 17 00:00:00 2001 From: Andy Kurnia Date: Thu, 5 Mar 2020 02:48:43 +0800 Subject: [PATCH] remove backports dependency --- sinatra-contrib/lib/sinatra/contrib/setup.rb | 15 +++++++++++++-- sinatra-contrib/sinatra-contrib.gemspec | 1 - 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sinatra-contrib/lib/sinatra/contrib/setup.rb b/sinatra-contrib/lib/sinatra/contrib/setup.rb index 0c94c40cbb..53f345f5e6 100644 --- a/sinatra-contrib/lib/sinatra/contrib/setup.rb +++ b/sinatra-contrib/lib/sinatra/contrib/setup.rb @@ -1,6 +1,5 @@ require 'sinatra/base' require 'sinatra/contrib/version' -require 'backports/rails/string' # for String#underscore module Sinatra module Contrib @@ -18,7 +17,7 @@ def helpers(name, path = nil) end def autoload(name, path = nil, method = nil) - path ||= "sinatra/#{name.to_s.underscore}" + path ||= "sinatra/#{underscore(name.to_s)}" extensions[method] << name if method Sinatra.autoload(name, path) end @@ -29,6 +28,18 @@ def registered(base) base.send(method, *list) unless base == ::Sinatra::Application end end + + private + + # https://github.com/marcandre/backports/blob/e01f4dfbf0cc5bf76151e408905b3be31948f2fe/lib/backports/rails/string.rb#L37-L44 + # Standard in rails. See official documentation[http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html] + def underscore(s) + s.gsub(/::/, '/'). + gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). + gsub(/([a-z\d])([A-Z])/,'\1_\2'). + tr("-", "_"). + downcase + end end module Common diff --git a/sinatra-contrib/sinatra-contrib.gemspec b/sinatra-contrib/sinatra-contrib.gemspec index 6f683f0511..5680b37df1 100644 --- a/sinatra-contrib/sinatra-contrib.gemspec +++ b/sinatra-contrib/sinatra-contrib.gemspec @@ -38,7 +38,6 @@ EOF s.add_dependency "sinatra", version s.add_dependency "mustermann", "~> 1.0" - s.add_dependency "backports", ">= 2.8.2" s.add_dependency "tilt", "~> 2.0" s.add_dependency "rack-protection", version s.add_dependency "multi_json"