Commit 5bcdfa0
Changed files (4)
lib
scim
lib/scim/kit/v2/attribute_type.rb
@@ -5,6 +5,7 @@ module Scim
module V2
# Represents a scim Attribute type
class AttributeType
+ include Templatable
DATATYPES = {
string: 'string',
boolean: 'boolean',
@@ -35,7 +36,6 @@ module Scim
@mutability = Mutability::READ_WRITE
@returned = Returned::DEFAULT
@uniqueness = Uniqueness::NONE
- @attributes = []
raise ArgumentError, :type unless DATATYPES[type.to_sym]
end
@@ -55,19 +55,15 @@ module Scim
@type = :complex
attribute = AttributeType.new(name: name, type: type)
yield attribute if block_given?
- @attributes << attribute
+ attributes << attribute
end
- def to_json
- Template.new(self).to_json
- end
+ private
- def to_h
- JSON.parse(to_json, symbolize_names: true)
+ def attributes
+ @attributes ||= []
end
- private
-
def complex?
type_is?(:complex)
end
lib/scim/kit/v2/schema.rb
@@ -5,6 +5,7 @@ module Scim
module V2
# Represents a SCIM Schema
class Schema
+ include Templatable
ERROR = 'urn:ietf:params:scim:api:messages:2.0:Error'
GROUP = 'urn:ietf:params:scim:schemas:core:2.0:Group'
RESOURCE_TYPE = 'urn:ietf:params:scim:schemas:core:2.0:ResourceType'
@@ -25,10 +26,6 @@ module Scim
yield attribute if block_given?
@attributes << attribute
end
-
- def to_json
- Template.new(self).to_json
- end
end
end
end
lib/scim/kit/templatable.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+module Scim
+ module Kit
+ # Implement methods necessary to generate json from jbuilder templates.
+ module Templatable
+ def to_json
+ Template.new(self).to_json
+ end
+
+ def to_h
+ JSON.parse(to_json, symbolize_names: true)
+ end
+ end
+ end
+end
lib/scim/kit.rb
@@ -3,14 +3,16 @@
require 'tilt'
require 'tilt/jbuilder'
+require 'scim/kit/templatable'
+require 'scim/kit/template'
require 'scim/kit/version'
+
require 'scim/kit/v2/attribute_type'
-require 'scim/kit/v2/returned'
-require 'scim/kit/v2/uniqueness'
require 'scim/kit/v2/mutability'
-require 'scim/kit/v2/schema'
require 'scim/kit/v2/resource_type'
-require 'scim/kit/template'
+require 'scim/kit/v2/returned'
+require 'scim/kit/v2/schema'
+require 'scim/kit/v2/uniqueness'
module Scim
module Kit