From: David Lutterkort <[email protected]> It is much cleaner to keep monkey patches to stock Ruby classes in a separate place. That place is lib/deltacloud/core_ext --- server/deltacloud.rb | 2 + server/lib/deltacloud/core_ext.rb | 20 +++++++++++ server/lib/deltacloud/core_ext/integer.rb | 33 ++++++++++++++++++ server/lib/deltacloud/core_ext/string.rb | 52 +++++++++++++++++++++++++++++ server/lib/sinatra/rabbit.rb | 35 ------------------- 5 files changed, 107 insertions(+), 35 deletions(-) create mode 100644 server/lib/deltacloud/core_ext.rb create mode 100644 server/lib/deltacloud/core_ext/integer.rb create mode 100644 server/lib/deltacloud/core_ext/string.rb
diff --git a/server/deltacloud.rb b/server/deltacloud.rb index 83f7cfb..cd310ef 100644 --- a/server/deltacloud.rb +++ b/server/deltacloud.rb @@ -20,6 +20,8 @@ $:.unshift File.join(File.dirname(__FILE__), 'lib') require 'drivers' +require 'deltacloud/core_ext' + require 'deltacloud/base_driver' require 'deltacloud/hardware_profile' require 'deltacloud/state_machine' diff --git a/server/lib/deltacloud/core_ext.rb b/server/lib/deltacloud/core_ext.rb new file mode 100644 index 0000000..e3822f2 --- /dev/null +++ b/server/lib/deltacloud/core_ext.rb @@ -0,0 +1,20 @@ +# +# Copyright (C) 2011 David Lutterkort +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +require 'deltacloud/core_ext/string' +require 'deltacloud/core_ext/integer' diff --git a/server/lib/deltacloud/core_ext/integer.rb b/server/lib/deltacloud/core_ext/integer.rb new file mode 100644 index 0000000..60b6f68 --- /dev/null +++ b/server/lib/deltacloud/core_ext/integer.rb @@ -0,0 +1,33 @@ +# +# Copyright (C) 2011 David Lutterkort +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +class Integer + # Turn integers into strings +1st+, +2nd+, +3rd+ etc. + def ordinalize + if (11..13).include?(self % 100) + "#{self}th" + else + case self % 10 + when 1; "#{self}st" + when 2; "#{self}nd" + when 3; "#{self}rd" + else "#{self}th" + end + end + end +end diff --git a/server/lib/deltacloud/core_ext/string.rb b/server/lib/deltacloud/core_ext/string.rb new file mode 100644 index 0000000..2beba00 --- /dev/null +++ b/server/lib/deltacloud/core_ext/string.rb @@ -0,0 +1,52 @@ +# +# Copyright (C) 2011 David Lutterkort +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +class String + # Rails defines this for a number of other classes, including Object + # see activesupport/lib/active_support/core_ext/object/blank.rb + def blank? + self !~ /\S/ + end + + # Title case. + # + # "this is a string".titlecase + # => "This Is A String" + # + # CREDIT: Eliazar Parra + # Copied from facets + def titlecase + gsub(/\b\w/){ $`[-1,1] == "'" ? $& : $&.upcase } + end + + def pluralize + self + "s" + end + + def singularize + self.gsub(/s$/, '') + end + + def underscore + gsub(/::/, '/'). + gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). + gsub(/([a-z\d])([A-Z])/,'\1_\2'). + tr("-", "_"). + downcase + end +end diff --git a/server/lib/sinatra/rabbit.rb b/server/lib/sinatra/rabbit.rb index b736b7a..f8d9e3d 100644 --- a/server/lib/sinatra/rabbit.rb +++ b/server/lib/sinatra/rabbit.rb @@ -312,41 +312,6 @@ module Sinatra helpers RabbitHelper end -class String - # Rails defines this for a number of other classes, including Object - # see activesupport/lib/active_support/core_ext/object/blank.rb - def blank? - self !~ /\S/ - end - - # Title case. - # - # "this is a string".titlecase - # => "This Is A String" - # - # CREDIT: Eliazar Parra - # Copied from facets - def titlecase - gsub(/\b\w/){ $`[-1,1] == "'" ? $& : $&.upcase } - end - - def pluralize - self + "s" - end - - def singularize - self.gsub(/s$/, '') - end - - def underscore - gsub(/::/, '/'). - gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). - gsub(/([a-z\d])([A-Z])/,'\1_\2'). - tr("-", "_"). - downcase - end -end - configure do class << Sinatra::Base def options(path, opts={}, &block) -- 1.7.4
