Module: Contentful::Support
- Defined in:
- lib/contentful/support.rb
Overview
Utility methods used by the contentful gem
Class Method Summary collapse
-
.includes_from_response(json, raw = true) ⇒ Array
Returns combined include array from an API Response.
-
.link?(value) ⇒ true, false
Checks if value is a link.
-
.link_array?(value) ⇒ true, false
Checks if value is an array of links.
-
.resource_for_link(link, includes) ⇒ Hash
Returns the resource that matches the link.
-
.snakify(object, skip = false) ⇒ String
Transforms CamelCase into snake_case (taken from zucker).
- .unresolvable?(value, errors) ⇒ Boolean
Class Method Details
.includes_from_response(json, raw = true) ⇒ Array
Returns combined include array from an API Response
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/contentful/support.rb', line 70 def includes_from_response(json, raw = true) includes = if raw json['items'].dup else json['items'].map(&:raw) end %w[Entry Asset].each do |type| if json.fetch('includes', {}).key?(type) includes.concat(json['includes'].fetch(type, [])) end end includes end |
.link?(value) ⇒ true, false
Checks if value is a link
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 |
.link_array?(value) ⇒ true, false
Checks if value is an array of links
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 |
.resource_for_link(link, includes) ⇒ Hash
Returns the resource that matches the link
57 58 59 60 61 62 |
# File 'lib/contentful/support.rb', line 57 def resource_for_link(link, includes) includes.detect do |i| i['sys']['id'] == link['sys']['id'] && i['sys']['type'] == link['sys']['linkType'] end end |
.snakify(object, skip = false) ⇒ String
Transforms CamelCase into snake_case (taken from zucker)
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
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 |