Commit ec1410a

mokha <mokha@cisco.com>
2018-01-22 19:10:51
extract buildable module.
1 parent b231590
lib/scim/shady/buildable.rb
@@ -0,0 +1,21 @@
+module Scim
+  module Shady
+    module Buildable
+      extend ActiveSupport::Concern
+
+      class_methods do
+        def build
+          builder do |builder|
+            yield builder if block_given?
+          end.build
+        end
+
+        def builder
+          builder = builder_class.new
+          yield builder if block_given?
+          builder
+        end
+      end
+    end
+  end
+end
lib/scim/shady/user.rb
@@ -1,6 +1,8 @@
 module Scim
   module Shady
     class User < Resource
+      include Buildable
+
       def username
         to_h['userName']
       end
@@ -61,22 +63,8 @@ module Scim
         to_h['x509Certificates'].map { |x| X509Certificate.new(x) }
       end
 
-      class << self
-        def build
-          builder do |builder|
-            yield builder if block_given?
-          end.build
-        end
-
-        def builder
-          builder = builder_class.new
-          yield builder if block_given?
-          builder
-        end
-
-        def builder_class
-          Scim::Shady::Builders::User
-        end
+      def self.builder_class
+        Scim::Shady::Builders::User
       end
     end
   end
lib/scim/shady.rb
@@ -1,8 +1,10 @@
 require "forwardable"
 require "json"
 require "time"
+require "active_support/concern"
 
 require "scim/shady/address"
+require "scim/shady/buildable"
 require "scim/shady/builders"
 require "scim/shady/group"
 require "scim/shady/instant_messenger"
scim-shady.gemspec
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
   spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
   spec.require_paths = ["lib"]
 
+  spec.add_dependency "activesupport", ">= 4.2.0"
   spec.add_development_dependency "bundler", "~> 1.16"
   spec.add_development_dependency "rake", "~> 10.0"
   spec.add_development_dependency "rspec", "~> 3.0"