Module: Contentful::Support

Defined in:
lib/contentful/support.rb

Overview

Utility methods used by the contentful gem

Class Method Summary collapse

Class Method Details

.link?(value) ⇒ true, false

Checks if value is a link

Parameters:

  • value

Returns:

  • (true, false)


35
36
37
38
# File 'lib/contentful/support.rb', line 35

def link?(value)
  value.is_a?(::Hash) &&
    value.fetch('sys', {}).fetch('type', '') == 'Link'
end

Checks if value is an array of links

Parameters:

  • value

Returns:

  • (true, false)


45
46
47
48
49
# File 'lib/contentful/support.rb', line 45

def link_array?(value)
  return link?(value[0]) if value.is_a?(::Array) && !value.empty?

  false
end

.snakify(object, skip = false) ⇒ String

Transforms CamelCase into snake_case (taken from zucker)

Parameters:

  • object (String)

    camelCaseName

  • skip (Boolean) (defaults to: false)

    if true, skips returns original object

Returns:

  • (String)

    snake_case_name



13
14
15
16
17
18
19
20
21
22
# File 'lib/contentful/support.rb', line 13

def snakify(object, skip = false)
  return object if skip

  String(object)
    .gsub(/::/, '/')
    .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
    .gsub(/([a-z\d])([A-Z])/, '\1_\2')
    .tr('-', '_')
    .downcase
end

.unresolvable?(value, errors) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
28
# File 'lib/contentful/support.rb', line 24

def unresolvable?(value, errors)
  return true if value.nil?

  errors.any? { |i| i.fetch('details', {}).fetch('id', nil) == value['sys']['id'] }
end