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

Reply via email to