Module: JsonapiSerializer

Extended by:
AUX::Converters
Defined in:
lib/jsonapi_serializer.rb,
lib/jsonapi_serializer/version.rb

Defined Under Namespace

Modules: AUX, Base, Common, DSL, Polymorphic, Utils

Constant Summary collapse

TRANSFORMS =
{
  dasherize: lambda { |str| str.to_s.underscore.dasherize.to_sym },
  underscore: lambda { |str| str.to_s.underscore.to_sym },
  camelize: lambda { |str| str.to_s.underscore.camelize(:lower).to_sym }
}
VERSION =
"0.1.0"
@@key_transform =
TRANSFORMS[:underscore]
@@type_transform =
TRANSFORMS[:underscore]
@@type_namespace_separator =
"_"

Class Method Summary collapse

Methods included from AUX::Converters

convert_fields, convert_include

Class Method Details

.key_transform(key) ⇒ Object



20
21
22
# File 'lib/jsonapi_serializer.rb', line 20

def self.key_transform(key)
  @@key_transform.call(key)
end

.set_key_transform(name = nil, &block) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/jsonapi_serializer.rb', line 33

def self.set_key_transform(name = nil, &block)
  if name.nil? && block_given?
    @@key_transform = block
  elsif name.is_a?(Symbol) && !block_given?
    @@key_transform = TRANSFORMS[name]
  else
    raise ArgumentError, "set_key_transform accepts either a standard transform symbol (:dasherize, :underscore or :camelize) or a block"
  end
end

.set_type_namespace_separator(separator) ⇒ Object



43
44
45
# File 'lib/jsonapi_serializer.rb', line 43

def self.set_type_namespace_separator(separator)
  @@type_namespace_separator = separator
end

.set_type_transform(name = nil, &block) ⇒ Object



47
48
49
50
51
52
53
54
55
# File 'lib/jsonapi_serializer.rb', line 47

def self.set_type_transform(name = nil, &block)
  if name.nil? && block_given?
    @@type_transform = block
  elsif name.is_a?(Symbol) && !block_given?
    @@type_transform = TRANSFORMS[name]
  else
    raise ArgumentError, "set_type_transform accepts either a standard transform symbol (:dasherize, :underscore or :camelize) or a block"
  end
end

.type_transform(klass) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/jsonapi_serializer.rb', line 24

def self.type_transform(klass)
  segments = klass.split("::").map { |segment| @@type_transform.call(segment) }
  if @@type_namespace_separator == :ignore
    segments.last
  else
    segments.join(@@type_namespace_separator)
  end.to_sym
end